从零开始写C++打怪小游戏(1)
大家好呀,我是yanxinchenji
最近開(kāi)學(xué)了,作業(yè)有點(diǎn)多,停更了一段時(shí)間
當(dāng)然,就算是開(kāi)學(xué),也抵擋不住我更新的激情!!
所以,我想教大家寫一個(gè)c++的打怪游戲!!無(wú)縫剪輯
話不多說(shuō),我們開(kāi)始吧!
第一部分:游戲架構(gòu)
作為一個(gè)打怪小游戲,必不可少的就是主角的各類屬性與功能啦~
所以,我們要先定義億些主角的屬性,比如血量、攻擊力、防御力
long long things[10000];//先定義10000個(gè),后面再加 /* 1HP 2ATK 3DEF ...... //這里可以根據(jù)需要來(lái)自行添加 */定義完,我們需要思考一下這個(gè)游戲需要什么功能,比如商店,刷怪區(qū)等等
我這里給大家一個(gè)模板,不想動(dòng)腦子的直接復(fù)制
void mianban();//定義干什么(省流) void welcome();//歡迎 int main();//主函數(shù) string where[10000];//1武器店2藥店3家4狀態(tài) void home(); //家 string guaiwu[123];//1小怪物2大怪物3boss4凋零風(fēng)暴 void fight();//戰(zhàn)斗 void diaolingfengbao();//最終boss:凋零風(fēng)暴 void daguai();//大怪物 void xiaoguai();//小怪物 void boss();//boss?按照我的這個(gè)模板,接下來(lái)需要編寫第二主函數(shù):''mianban()''
第二部分:第二主函數(shù)
2.1:實(shí)現(xiàn)界面
我們?cè)谶@里要思考,該如何去實(shí)現(xiàn)我們的界面?
我們可以用printf函數(shù)來(lái)輸出這樣一個(gè)界面:
?printf("-----------------------------------------------------\n"); printf(" 選擇行動(dòng) \n"); printf("1、與NPC戰(zhàn)斗 2、行徑 3、干活 \n"); printf("4、末日新生(第四章開(kāi)放) 5、查看狀態(tài)\n"); printf("6、公告 7、睡覺(jué)\n"); printf("-----------------------------------------------------\n"); printf("請(qǐng)選擇>"); int l; cin>>l;?2.2:函數(shù)的跳轉(zhuǎn)
那么,界面也實(shí)現(xiàn)了,我們?cè)撛趺慈ヌD(zhuǎn)到功能函數(shù)呢?
說(shuō)人話,就是把第二主函數(shù)當(dāng)作一個(gè)橋梁,讓玩家根據(jù)需要走到不同的地方
這個(gè)橋梁需要不同的分支,那我們?nèi)绾稳?shí)現(xiàn)這種分支呢?
答案就是:switch語(yǔ)句!
具體switch的用法點(diǎn)這里
看了上面的百科,我們發(fā)現(xiàn)需要case語(yǔ)句來(lái)形成這座橋梁的分支
我們不妨先用偽代碼來(lái)做一個(gè)模板:
switch(l) {case 1:表達(dá)式1;break;case 2:表達(dá)式2;break;.....case n;表達(dá)式n;break; }當(dāng)然,每個(gè)游戲都有防熊機(jī)制,免得游戲混亂
我們這時(shí)可以用defualt語(yǔ)句來(lái)避免這種情況:
default: cout<<"請(qǐng)不要亂輸!!"; Sleep(1000); break;我們已經(jīng)學(xué)會(huì)了switch,接下來(lái)就要實(shí)現(xiàn)跳轉(zhuǎn)了
把上述的表達(dá)式1、2換成類似于daguai();xiaoguai();這樣的函數(shù)就可以啦!
2.3:功能的實(shí)現(xiàn)
我們聲明了函數(shù),那我們?cè)趺慈ザx函數(shù)呢?
你可以照著這樣做:
void daguai() {if(things[1]<=0){return daguai();}things[7]-=20; int i=1,n=0,l=1,taopao,cg;int lengque=0; char r,w; srand(static_cast<unsigned int >(time(0))) ; int randomNumber=rand(); int ddj=(randomNumber% 5)+6;int dhp=ddj*100;int dsh=ddj*20;int djb=ddj*10;int dfy=ddj*5; switch(episodes){case 1:break;case 2:dhp*=2;dsh*=2;dfy*=2;break;case 3:dhp*=5;dsh*=5;dfy*=5;break;case 4:dhp*=10;dsh*=10;dfy*=10;break;}cout<<"你面對(duì)的是"<<ddj<<"級(jí)大怪,是否迎戰(zhàn)(y/n)"<<endl;cin>>r;if(r=='y'){int f=0;while(things[1]>0&&dhp>0&&l!=123&&i<=20){cout<<"第"<<i<<"回合"<<endl;cout<<"你的生命:"<<things[1]<<endl;cout<<"大怪生命:"<<dhp<<endl;cout<<"輸入1攻擊(造成攻擊(你的傷害-怪的傷害),防御減半)"<<endl;cout<<"輸入2防御(不造成攻擊,防御*2)"<<endl; cout<<"輸入3使用技能(無(wú)敵,造成敵方等級(jí)*20傷害,boss:500點(diǎn)傷害)"<<endl;cout<<"輸入4逃跑(20%幾率,逃跑失敗也要減少血(無(wú)視防御),實(shí)在打不過(guò)撐過(guò)20回合自動(dòng)結(jié)束)"<<endl; cout<<"輸入5使用戰(zhàn)斗急救包!!!"<<endl; taopao=(randomNumber% 5)+1;if (things[158]==10||things[158]==8||things[159]==1){cout<<"輸入6使用武器或防具技能!\n";}cin>>l;if(lengque>0&&f==1){lengque--; } switch(l){case 1:if((things[11]/2)<dsh){things[1]-=dsh-things[11]/2; } if(things[3]>dfy ) {dhp-=things[3]-dfy; } i++; f=1;break; case 2: if(things[11]*2<dsh){things[1]-=dsh-things[11]*2; } i++; f=1;break;case 3:if(lengque==0){dhp-=ddj*20;lengque=5;i++; break; } cout<<"冷卻中剩余"<<lengque<<"回合"<<endl; f=0;break;case 4:if(taopao=3){cout<<"逃跑成功!!!"<<endl; l=123;} f=1;break;case 5:f=1;if(things[12]>0){cout<<"使用成功!!!"<<endl; things[12]--;things[1]+=50;i++; } break; case 6:if(things[158]==10){dhp-=1000;cout<<"你使用了技能:橫掃一切\(zhòng)n怪物受到1000點(diǎn)傷害!!!";gs();i++;}if(things[158]==8){dhp-=200;cout<<"你使用了技能:降維打擊\n怪物受到200點(diǎn)傷害!!!";gs();i++;}if(things[159]==1){things[11]=things[11]*5;cout<<"你使用了技能:絕對(duì)防御\n防御力提升五倍!!!";gs();i++;}break;} }if(things[1]<=0){cout<<"你死了"<<endl;Sleep(1000);return daguai(); }if(dhp<=0){cout<<"你打敗了"<<ddj<<"級(jí)大怪"<<endl;cout<<"獎(jiǎng)勵(lì)金幣"<<djb<<"$"<<endl;cout<<"獎(jiǎng)勵(lì)經(jīng)驗(yàn)"<<ddj*10<<endl;money+=djb; things[2]+=ddj*10; }}else{cout<<"你已逃跑"<<endl; } }上述的是我寫的《末日新生》里的打大怪函數(shù),你可以把它修改一下,變得更加美觀
我們不能只有這一個(gè)功能,所以我們需要更多的開(kāi)發(fā)、研究
因篇幅限制,目前只能寫這么多
所以更多的內(nèi)容請(qǐng)看后續(xù)更新的2、3、4!
我是yanxinchenji,我們下次再見(jiàn)!
總結(jié)
以上是生活随笔為你收集整理的从零开始写C++打怪小游戏(1)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: c++ 小游戏 NO 7 打怪游戏(无聊
- 下一篇: Java之——编写内存效率的java代码