日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > c/c++ >内容正文

c/c++

从零开始写C++打怪小游戏(1)

發(fā)布時(shí)間:2024/3/26 c/c++ 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 从零开始写C++打怪小游戏(1) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

大家好呀,我是yanxinchenji

最近開學(xué)了,作業(yè)有點(diǎn)多,停更了一段時(shí)間

當(dāng)然,就算是開學(xué),也抵擋不住我更新的激情!!

所以,我想教大家寫一個(gè)c++的打怪游戲!!無縫剪輯

話不多說,我們開始吧!

第一部分:游戲架構(gòu)

作為一個(gè)打怪小游戲,必不可少的就是主角的各類屬性與功能啦~

所以,我們要先定義億些主角的屬性,比如血量、攻擊力、防御力

long long things[10000];//先定義10000個(gè),后面再加 /* 1HP 2ATK 3DEF ...... //這里可以根據(jù)需要來自行添加 */

定義完,我們需要思考一下這個(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è)模板,接下來需要編寫第二主函數(shù):''mianban()''

第二部分:第二主函數(shù)

2.1:實(shí)現(xiàn)界面

我們?cè)谶@里要思考,該如何去實(shí)現(xiàn)我們的界面?

我們可以用printf函數(shù)來輸出這樣一個(gè)界面

?printf("-----------------------------------------------------\n"); printf(" 選擇行動(dòng) \n"); printf("1、與NPC戰(zhàn)斗 2、行徑 3、干活 \n"); printf("4、末日新生(第四章開放) 5、查看狀態(tài)\n"); printf("6、公告 7、睡覺\n"); printf("-----------------------------------------------------\n"); printf("請(qǐng)選擇>"); int l; cin>>l;?

2.2:函數(shù)的跳轉(zhuǎn)

那么,界面也實(shí)現(xiàn)了,我們?cè)撛趺慈ヌD(zhuǎn)到功能函數(shù)呢?

說人話,就是把第二主函數(shù)當(dāng)作一個(gè)橋梁,讓玩家根據(jù)需要走到不同的地方

這個(gè)橋梁需要不同的分支,那我們?nèi)绾稳?shí)現(xiàn)這種分支呢?

答案就是:switch語(yǔ)句

具體switch的用法點(diǎn)這里

看了上面的百科,我們發(fā)現(xiàn)需要case語(yǔ)句來形成這座橋梁的分支

我們不妨先用偽代碼來做一個(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ǔ)句來避免這種情況:

default: cout<<"請(qǐng)不要亂輸!!"; Sleep(1000); break;

我們已經(jīng)學(xué)會(huì)了switch,接下來就要實(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使用技能(無敵,造成敵方等級(jí)*20傷害,boss:500點(diǎn)傷害)"<<endl;cout<<"輸入4逃跑(20%幾率,逃跑失敗也要減少血(無視防御),實(shí)在打不過撐過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è)功能,所以我們需要更多的開發(fā)、研究

因篇幅限制,目前只能寫這么多

所以更多的內(nèi)容請(qǐng)看后續(xù)更新的2、3、4!

我是yanxinchenji,我們下次再見!

總結(jié)

以上是生活随笔為你收集整理的从零开始写C++打怪小游戏(1)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。