日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

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

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

大家好呀,我是yanxinchenji

最近開學了,作業有點多,停更了一段時間

當然,就算是開學,也抵擋不住我更新的激情!!

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

話不多說,我們開始吧!

第一部分:游戲架構

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

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

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

定義完,我們需要思考一下這個游戲需要什么功能,比如商店,刷怪區等等

我這里給大家一個模板,不想動腦子的直接復制

void mianban();//定義干什么(省流) void welcome();//歡迎 int main();//主函數 string where[10000];//1武器店2藥店3家4狀態 void home(); //家 string guaiwu[123];//1小怪物2大怪物3boss4凋零風暴 void fight();//戰斗 void diaolingfengbao();//最終boss:凋零風暴 void daguai();//大怪物 void xiaoguai();//小怪物 void boss();//boss?

按照我的這個模板,接下來需要編寫第二主函數:''mianban()''

第二部分:第二主函數

2.1:實現界面

我們在這里要思考,該如何去實現我們的界面?

我們可以用printf函數來輸出這樣一個界面

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

2.2:函數的跳轉

那么,界面也實現了,我們該怎么去跳轉到功能函數呢?

說人話,就是把第二主函數當作一個橋梁,讓玩家根據需要走到不同的地方

這個橋梁需要不同的分支,那我們如何去實現這種分支呢?

答案就是:switch語句

具體switch的用法點這里

看了上面的百科,我們發現需要case語句來形成這座橋梁的分支

我們不妨先用偽代碼來做一個模板:

switch(l) {case 1:表達式1;break;case 2:表達式2;break;.....case n;表達式n;break; }

當然,每個游戲都有防熊機制,免得游戲混亂

我們這時可以用defualt語句來避免這種情況:

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

我們已經學會了switch,接下來就要實現跳轉了

把上述的表達式1、2換成類似于daguai();xiaoguai();這樣的函數就可以啦!

2.3:功能的實現

我們聲明了函數,那我們怎么去定義函數呢?

你可以照著這樣做:

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<<"你面對的是"<<ddj<<"級大怪,是否迎戰(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使用技能(無敵,造成敵方等級*20傷害,boss:500點傷害)"<<endl;cout<<"輸入4逃跑(20%幾率,逃跑失敗也要減少血(無視防御),實在打不過撐過20回合自動結束)"<<endl; cout<<"輸入5使用戰斗急救包!!!"<<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<<"你使用了技能:橫掃一切\n怪物受到1000點傷害!!!";gs();i++;}if(things[158]==8){dhp-=200;cout<<"你使用了技能:降維打擊\n怪物受到200點傷害!!!";gs();i++;}if(things[159]==1){things[11]=things[11]*5;cout<<"你使用了技能:絕對防御\n防御力提升五倍!!!";gs();i++;}break;} }if(things[1]<=0){cout<<"你死了"<<endl;Sleep(1000);return daguai(); }if(dhp<=0){cout<<"你打敗了"<<ddj<<"級大怪"<<endl;cout<<"獎勵金幣"<<djb<<"$"<<endl;cout<<"獎勵經驗"<<ddj*10<<endl;money+=djb; things[2]+=ddj*10; }}else{cout<<"你已逃跑"<<endl; } }

上述的是我寫的《末日新生》里的打大怪函數,你可以把它修改一下,變得更加美觀

我們不能只有這一個功能,所以我們需要更多的開發、研究

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

所以更多的內容請看后續更新的2、3、4!

我是yanxinchenji,我們下次再見!

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。