1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 教你如何用DEV-C++实现迷你世界热门游戏——抢滩登陆(双人)

教你如何用DEV-C++实现迷你世界热门游戏——抢滩登陆(双人)

时间:2019-09-27 06:32:27

相关推荐

教你如何用DEV-C++实现迷你世界热门游戏——抢滩登陆(双人)

在开始今天的内容之前,我要先和大家说声“对不起”,因为最近有点忙,所以我一直没更新,今天终于写完了抢滩登陆双人版1.0(其实我原来要写密室逃脱的,但写一半文件没了,所以只好重写了这个。)

好了,言归正传,先把游戏下载链接贴上(当然,复制文章里的代码也行)

用DEV-C++写的双人抢滩登陆1.0+exe文件-C++文档类资源-CSDN下载

目录:

1.效果

先给大家看看效果:

0803_105728

怎么样,还不错吧。

2.代码

(1)菜单界面

额,这个我已经说过很多遍了,想详细了解方法请看我的另一篇博客:

教你如何用c++写2D版我的世界(1)_ 瑞的博客-CSDN博客

当然,自己写也行,比如搞个密码呀,都行。

已经写好的代码:

//作者有点懒,每次标题界面都是以前复制的#include<bits/stdc++.h>#include<conio.h>#include<windows.h> using namespace std;int main(){system("title 双人抢滩登陆1.0版本");//标题 system("mode con cols=60 lines=37");//设置窗口大小string s="| 双 人 抢 滩 登 陆|";string s1="| 开 始 游 戏 |";string s2="| 玩 法 说 明 |";string s3="| 更 换 皮 肤 |"; cout<<"@==========================================================@"<<endl;cout<<"| |"<<endl;cout<<"| |"<<endl;for(int i=0;i<s.size();i++){cout<<s[i];Sleep(10);//Sleep函数延长时间 }cout<<endl;cout<<"| |"<<endl;for(int i=0;i<s1.size();i++){cout<<s1[i];Sleep(10);}cout<<endl;cout<<"| |"<<endl;for(int i=0;i<s2.size();i++){cout<<s2[i];Sleep(10);}cout<<endl;cout<<"| |"<<endl;for(int i=0;i<s3.size();i++){cout<<s3[i];Sleep(10);}cout<<endl;cout<<"| |"<<endl;cout<<"| |"<<endl;cout<<"| |"<<endl;cout<<"|(按‘k’开始游戏,按‘b’看玩法说明,按‘d’换皮肤) |"<<endl;cout<<"@==========================================================@"<<endl;return 0;}

效果:

(2)玩法说明和换皮肤部分

玩法说明

这个很简单,自己发挥就行了。

代码:

if(ch=='b'){system("cls");string c="使用wasd控制‘*’(玩家1)移动,ijkl控制‘$’(玩家2)移动,‘#’为边界,‘x’玩家一攻击,‘n’玩家二攻击,‘0,1’水晶";string c1="玩家目标是通过战斗对方,击碎对方水晶,即可胜利。";string c2="说明:此为抢滩登陆1.0版本。";string c3="更新:增加了换肤功能。";cout<<"版本:1.0"<<endl;cout<<"按1直接显示所有内容,否则按2。"<<endl;int q;q=getch();if(q=='1'){cout<<c3<<endl<<c<<endl<<c1<<endl<<c2<<endl;} if(q=='2'){for(int i=0;i<c3.size();i++){cout<<c3[i];Sleep(100);//延时 } cout<<endl;for(int i=0;i<c.size();i++){cout<<c[i];Sleep(100);} cout<<endl;for(int i=0;i<c1.size();i++){cout<<c1[i];Sleep(100);} cout<<endl;for(int i=0;i<c2.size();i++){cout<<c2[i];Sleep(100);} cout<<endl;}cout<<"按y开始游戏。按e换皮肤。"; ch=getch();}

改皮肤(就是改颜色)

改颜色,很简单,有很多种方法,system("color")是最典型的一种,感兴趣的小伙伴可以去我的另一篇博客教你如何用c++写2D版我的世界(1)——续_ 瑞的博客-CSDN博客,在那篇博客里我详细的讲了几种改变颜色的方法。

这里我们用简单的system("color")。

给大家贴出一张颜色编码对照表:

设置默认的控制台前景和背景颜色。COLOR [attr]attr 指定控制台输出的颜色属性。颜色属性由两个十六进制数字指定 -- 第一个对应于背景,第二个对应于前景。每个数字可以为以下任何值:0 = 黑色 8 = 灰色1 = 蓝色 9 = 淡蓝色2 = 绿色 A = 淡绿色3 = 浅绿色 B = 淡浅绿色4 = 红色 C = 淡红色5 = 紫色 D = 淡紫色6 = 黄色 E = 淡黄色7 = 白色 F = 亮白色如果没有给定任何参数,此命令会将颜色还原到 CMD.EXE 启动时的颜色。这个值来自当前控制台窗口、/T 命令行开关或 DefaultColor 注册表值。如果尝试使用相同的前景和背景颜色来执行COLOR 命令,COLOR 命令会将 ERRORLEVEL 设置为 1。

然后先把换皮肤这部分的代码贴出来:

if(ch=='d'||ch=='e'){system("cls");cout<<"请选择皮肤:"<<endl;cout<<"1.【日间色】"<<endl<<"2.【夜间色】"<<endl<<"3.【黑客】"<<endl<<"4.【科幻】"<<endl<<"5.【紫水晶】"<<endl;cout<<"开始游戏请按q,换肤请输入序号。";char sh;while(1){sh=getch();if(sh-'0'==1)system("color f0");else if(sh-'0'==2)system("color 0f");else if(sh-'0'==3)system("color 0a");else if(sh-'0'==4)system("color 09");else if(sh-'0'==5)system("color 01");else if(sh=='q'){ch='q';break;}}}

然后我们来解读一下这个代码。

首先,当ch变量读到的键盘指令为d或e时,就执行下面操作,先将屏幕清屏,输出“请选择皮肤:”,换行,再输出各个皮肤名称:【日间色】【夜间色】【黑客】【科幻】【紫水晶】,然后输出开始游戏请按q,换肤请输入序号。之后定义一个sh变量,用来存储接下来的键盘指令,然后重复执行(因为你不可能一下子就确定你想换的皮肤,用户要反复选择)如果输入1,将皮肤改成日间色,如果输入2,将皮肤改成夜间色……以此类推,然后如果输入q,就将ch变量转为q,一边下面判断,然后结束换肤,break退出。

看到上面这个解释,是不是明白多了?

(3)游戏

下面我们就要写游戏的代码了,二话不说,先把代码贴上:

if(ch=='k'||ch=='y'||ch=='q'){system("cls");//清屏 cout<<"加载代码中";Sleep(2000);system("cls");cout<<"加载代码中 ◎ 20%";Sleep(2000);system("cls");cout<<"加载地图中 ◎◎ 40%";Sleep(2000);system("cls");cout<<"加载地图中 ◎◎◎60%";Sleep(2000);system("cls");cout<<"生成地图中 ◎◎◎◎ 80%";Sleep(2000);system("cls");cout<<"生成地图中 ◎◎◎◎◎ 100%";Sleep(2000);system("cls");cout<<"完成!!!";Sleep(2000);system("cls");for(int i=0;i<=25;i++){cout<<a[i]<<endl;//将地图一行一行输出 }char b;int x=8,y=6,ex=8,ey=53,blooda=3,bloodb=3,blood1=10,blood0=10;//玩家初始坐标 //wasd移动 while(1){//重复运动 b=getch();if(b=='a'){ if(a[x][y-1]!='#'&&a[x][y-1]!='@'&&a[x][y-1]!='&'&&a[x][y-1]!='$'&&a[x][y-1]!='0'&&a[x][y-1]!='1'){a[x][y]=' ';y--;a[x][y]='*'; }}else if(b=='s'){if(a[x+1][y]!='#'&&a[x+1][y]!='@'&&a[x+1][y]!='&'&&a[x+1][y]!='$'&&a[x+1][y]!='0'&&a[x+1][y]!='1'){a[x][y]=' ';x++;a[x][y]='*';}}else if(b=='d'){if(a[x][y+1]!='#'&&a[x][y+1]!='@'&&a[x][y+1]!='&'&&a[x][y+1]!='$'&&a[x][y+1]!='0'&&a[x][y+1]!='1'){a[x][y]=' ';y++;a[x][y]='*';}}else if(b=='w'){if(a[x-1][y]!='#'&&a[x-1][y]!='@'&&a[x-1][y]!='&'&&a[x-1][y]!='$'&&a[x-1][y]!='0'&&a[x-1][y]!='1'){a[x][y]=' ';x--;a[x][y]='*';}}else if(b=='j'){ if(a[ex][ey-1]!='#'&&a[ex][ey-1]!='@'&&a[ex][ey-1]!='&'&&a[ex][ey-1]!='*'&&a[ex][ey-1]!='0'&&a[ex][ey-1]!='1'){a[ex][ey]=' ';ey--;a[ex][ey]='$'; }}else if(b=='k'){if(a[ex+1][ey]!='#'&&a[ex+1][ey]!='@'&&a[ex+1][ey]!='&'&&a[ex+1][ey]!='*'&&a[ex+1][ey]!='0'&&a[ex+1][ey]!='1'){a[ex][ey]=' ';ex++;a[ex][ey]='$';}}else if(b=='l'){if(a[ex][ey+1]!='#'&&a[ex][ey+1]!='@'&&a[ex][ey+1]!='&'&&a[ex][ey+1]!='*'&&a[ex][ey+1]!='0'&&a[ex][ey+1]!='1'){a[ex][ey]=' ';ey++;a[ex][ey]='$';}}else if(b=='i'){if(a[ex-1][ey]!='#'&&a[ex-1][ey]!='@'&&a[ex-1][ey]!='&'&&a[ex-1][ey]!='*'&&a[ex-1][ey]!='0'&&a[ex-1][ey]!='1'){a[ex][ey]=' ';ex--;a[ex][ey]='$';}}else if(b=='x'){if(a[x-1][y]=='$'||a[x][y-1]=='$'||a[x][y+1]=='$'){bloodb--;a[23]=a2[3-bloodb];if(bloodb==0){a[ex][ey]=' ';ex=8;ey=53;a[ex][ey]='$';bloodb=3;a[23]=a2[0];}}else if(a[x-1][y]=='1'||a[x][y-1]=='1'||a[x][y+1]=='1'){blood1--;a[25]=b2[10-blood1];if(blood1==0){system("cls");cout<<"1号玩家抢占了2号玩家基地,1号玩家胜利!";return 0;}}}else if(b=='n'){if(a[ex-1][ey]=='*'||a[ex][ey-1]=='*'||a[ex][ey+1]=='*'){blooda--;a[22]=a1[3-blooda];if(blooda==0){a[x][y]=' ';x=8;y=6;a[x][y]='*';blooda=3;a[22]=a1[0];}}else if(a[ex-1][ey]=='0'||a[ex][ey-1]=='0'||a[ex][ey+1]=='0'){blood0--;a[24]=b1[10-blood0];if(blood0==0){system("cls");cout<<"2号玩家抢占了1号玩家基地,2号玩家胜利!";return 0;}}}if(b=='o'){//退出 return 0;}system("cls");for(int i=0;i<=25;i++){cout<<a[i]<<endl;}}}

这段代码组要分3个部分:加载,移动,胜利机制

这时可能有小伙伴问了,没地图哪来的移动,所以我们把地图的代码贴上:

string a[210]={"############################################################","# # # # # #","# @## # ##& #","# # # # #","# @ # # & #","# #### ##### #","# @ ### & #","#0 # # ### 1#","#0 *@ # # # &$ 1#","#0 # 1#","# @ ###### ### & #","# # ## #","# @ # ## & #","# # # #","# @ # ##### & #","# # ## #","# @ # ## #& #","# ## # #","# @# ##### #& #","# # # #","############################################################","wasd,ijkl上下左右移动,x,n攻击,o退出","1号玩家:XXX","2号玩家:XXX", "1号基地水晶:XXXXXXXXXX", "2号基地水晶:XXXXXXXXXX",};string a1[4]={"1号玩家:XXX","1号玩家:XX","1号玩家:X","1号玩家:阵亡",};string a2[4]={"2号玩家:XXX","2号玩家:XX","2号玩家:X","2号玩家:阵亡",};string b2[11]={"2号基地水晶:XXXXXXXXXX","2号基地水晶:XXXXXXXXX","2号基地水晶:XXXXXXXX","2号基地水晶:XXXXXXX","2号基地水晶:XXXXXX","2号基地水晶:XXXXX","2号基地水晶:XXXX","2号基地水晶:XXX","2号基地水晶:XX","2号基地水晶:X","2号基地水晶:阵亡",};string b1[11]={"1号基地水晶:XXXXXXXXXX","1号基地水晶:XXXXXXXXX","1号基地水晶:XXXXXXXX","1号基地水晶:XXXXXXX","1号基地水晶:XXXXXX","1号基地水晶:XXXXX","1号基地水晶:XXXX","1号基地水晶:XXX","1号基地水晶:XX","1号基地水晶:X","1号基地水晶:阵亡",};

最后上总代码:

#include<bits/stdc++.h>#include<conio.h>#include<windows.h> using namespace std;string a[210]={"############################################################","# # # # # #","# @## # ##& #","# # # # #","# @ # # & #","# #### ##### #","# @ ### & #","#0 # # ### 1#","#0 *@ # # # &$ 1#","#0 # 1#","# @ ###### ### & #","# # ## #","# @ # ## & #","# # # #","# @ # ##### & #","# # ## #","# @ # ## #& #","# ## # #","# @# ##### #& #","# # # #","############################################################","wasd,ijkl上下左右移动,x,n攻击,o退出","1号玩家:XXX","2号玩家:XXX", "1号基地水晶:XXXXXXXXXX", "2号基地水晶:XXXXXXXXXX",};string a1[4]={"1号玩家:XXX","1号玩家:XX","1号玩家:X","1号玩家:阵亡",};string a2[4]={"2号玩家:XXX","2号玩家:XX","2号玩家:X","2号玩家:阵亡",};string b2[11]={"2号基地水晶:XXXXXXXXXX","2号基地水晶:XXXXXXXXX","2号基地水晶:XXXXXXXX","2号基地水晶:XXXXXXX","2号基地水晶:XXXXXX","2号基地水晶:XXXXX","2号基地水晶:XXXX","2号基地水晶:XXX","2号基地水晶:XX","2号基地水晶:X","2号基地水晶:阵亡",};string b1[11]={"1号基地水晶:XXXXXXXXXX","1号基地水晶:XXXXXXXXX","1号基地水晶:XXXXXXXX","1号基地水晶:XXXXXXX","1号基地水晶:XXXXXX","1号基地水晶:XXXXX","1号基地水晶:XXXX","1号基地水晶:XXX","1号基地水晶:XX","1号基地水晶:X","1号基地水晶:阵亡",};int main(){//system("color F8");system("title 双人抢滩登陆1.0版本");//标题 system("mode con cols=60 lines=37");//设置窗口大小string s="| 双 人 抢 滩 登 陆|";string s1="| 开 始 游 戏 |";string s2="| 玩 法 说 明 |";string s3="| 更 换 皮 肤 |"; cout<<"@==========================================================@"<<endl;cout<<"| |"<<endl;cout<<"| |"<<endl;for(int i=0;i<s.size();i++){cout<<s[i];Sleep(10);//Sleep函数延长时间 }cout<<endl;cout<<"| |"<<endl;for(int i=0;i<s1.size();i++){cout<<s1[i];Sleep(10);}cout<<endl;cout<<"| |"<<endl;for(int i=0;i<s2.size();i++){cout<<s2[i];Sleep(10);}cout<<endl;cout<<"| |"<<endl;for(int i=0;i<s3.size();i++){cout<<s3[i];Sleep(10);}cout<<endl;cout<<"| |"<<endl;cout<<"| |"<<endl;cout<<"| |"<<endl;cout<<"|(按‘k’开始游戏,按‘b’看玩法说明,按‘d’换皮肤) |"<<endl;cout<<"@==========================================================@"<<endl;char ch;ch=getch();//提取键盘指令 if(ch=='b'){system("cls");string c="使用wasd控制‘*’(玩家1)移动,ijkl控制‘$’(玩家2)移动,‘#’为边界,‘x’玩家一攻击,‘n’玩家二攻击,‘0,1’水晶";string c1="玩家目标是通过战斗对方,击碎对方水晶,即可胜利。";string c2="说明:此为抢滩登陆1.0版本。";string c3="更新:增加了换肤功能。";cout<<"版本:1.0"<<endl;cout<<"按1直接显示所有内容,否则按2。"<<endl;int q;q=getch();if(q=='1'){cout<<c3<<endl<<c<<endl<<c1<<endl<<c2<<endl;} if(q=='2'){for(int i=0;i<c3.size();i++){cout<<c3[i];Sleep(100);//延时 } cout<<endl;for(int i=0;i<c.size();i++){cout<<c[i];Sleep(100);} cout<<endl;for(int i=0;i<c1.size();i++){cout<<c1[i];Sleep(100);} cout<<endl;for(int i=0;i<c2.size();i++){cout<<c2[i];Sleep(100);} cout<<endl;}cout<<"按y开始游戏。按e换皮肤。"; ch=getch();}if(ch=='d'||ch=='e'){system("cls");cout<<"请选择皮肤:"<<endl;cout<<"1.【日间色】"<<endl<<"2.【夜间色】"<<endl<<"3.【黑客】"<<endl<<"4.【科幻】"<<endl<<"5.【紫水晶】"<<endl;cout<<"开始游戏请按q,换肤请输入序号。";char sh;while(1){sh=getch();if(sh-'0'==1)system("color f0");else if(sh-'0'==2)system("color 0f");else if(sh-'0'==3)system("color 0a");else if(sh-'0'==4)system("color 09");else if(sh-'0'==5)system("color 01");else if(sh=='q'){ch='q';break;}}}if(ch=='k'||ch=='y'||ch=='q'){system("cls");//清屏 cout<<"加载代码中";Sleep(2000);system("cls");cout<<"加载代码中 ◎ 20%";Sleep(2000);system("cls");cout<<"加载地图中 ◎◎ 40%";Sleep(2000);system("cls");cout<<"加载地图中 ◎◎◎60%";Sleep(2000);system("cls");cout<<"生成地图中 ◎◎◎◎ 80%";Sleep(2000);system("cls");cout<<"生成地图中 ◎◎◎◎◎ 100%";Sleep(2000);system("cls");cout<<"完成!!!";Sleep(2000);system("cls");for(int i=0;i<=25;i++){cout<<a[i]<<endl;//将地图一行一行输出 }char b;int x=8,y=6,ex=8,ey=53,blooda=3,bloodb=3,blood1=10,blood0=10;//玩家初始坐标 //wasd移动 while(1){//重复运动 b=getch();if(b=='a'){ if(a[x][y-1]!='#'&&a[x][y-1]!='@'&&a[x][y-1]!='&'&&a[x][y-1]!='$'&&a[x][y-1]!='0'&&a[x][y-1]!='1'){a[x][y]=' ';y--;a[x][y]='*'; }}else if(b=='s'){if(a[x+1][y]!='#'&&a[x+1][y]!='@'&&a[x+1][y]!='&'&&a[x+1][y]!='$'&&a[x+1][y]!='0'&&a[x+1][y]!='1'){a[x][y]=' ';x++;a[x][y]='*';}}else if(b=='d'){if(a[x][y+1]!='#'&&a[x][y+1]!='@'&&a[x][y+1]!='&'&&a[x][y+1]!='$'&&a[x][y+1]!='0'&&a[x][y+1]!='1'){a[x][y]=' ';y++;a[x][y]='*';}}else if(b=='w'){if(a[x-1][y]!='#'&&a[x-1][y]!='@'&&a[x-1][y]!='&'&&a[x-1][y]!='$'&&a[x-1][y]!='0'&&a[x-1][y]!='1'){a[x][y]=' ';x--;a[x][y]='*';}}else if(b=='j'){ if(a[ex][ey-1]!='#'&&a[ex][ey-1]!='@'&&a[ex][ey-1]!='&'&&a[ex][ey-1]!='*'&&a[ex][ey-1]!='0'&&a[ex][ey-1]!='1'){a[ex][ey]=' ';ey--;a[ex][ey]='$'; }}else if(b=='k'){if(a[ex+1][ey]!='#'&&a[ex+1][ey]!='@'&&a[ex+1][ey]!='&'&&a[ex+1][ey]!='*'&&a[ex+1][ey]!='0'&&a[ex+1][ey]!='1'){a[ex][ey]=' ';ex++;a[ex][ey]='$';}}else if(b=='l'){if(a[ex][ey+1]!='#'&&a[ex][ey+1]!='@'&&a[ex][ey+1]!='&'&&a[ex][ey+1]!='*'&&a[ex][ey+1]!='0'&&a[ex][ey+1]!='1'){a[ex][ey]=' ';ey++;a[ex][ey]='$';}}else if(b=='i'){if(a[ex-1][ey]!='#'&&a[ex-1][ey]!='@'&&a[ex-1][ey]!='&'&&a[ex-1][ey]!='*'&&a[ex-1][ey]!='0'&&a[ex-1][ey]!='1'){a[ex][ey]=' ';ex--;a[ex][ey]='$';}}else if(b=='x'){if(a[x-1][y]=='$'||a[x][y-1]=='$'||a[x][y+1]=='$'){bloodb--;a[23]=a2[3-bloodb];if(bloodb==0){a[ex][ey]=' ';ex=8;ey=53;a[ex][ey]='$';bloodb=3;a[23]=a2[0];}}else if(a[x-1][y]=='1'||a[x][y-1]=='1'||a[x][y+1]=='1'){blood1--;a[25]=b2[10-blood1];if(blood1==0){system("cls");cout<<"1号玩家抢占了2号玩家基地,1号玩家胜利!";return 0;}}}else if(b=='n'){if(a[ex-1][ey]=='*'||a[ex][ey-1]=='*'||a[ex][ey+1]=='*'){blooda--;a[22]=a1[3-blooda];if(blooda==0){a[x][y]=' ';x=8;y=6;a[x][y]='*';blooda=3;a[22]=a1[0];}}else if(a[ex-1][ey]=='0'||a[ex][ey-1]=='0'||a[ex][ey+1]=='0'){blood0--;a[24]=b1[10-blood0];if(blood0==0){system("cls");cout<<"2号玩家抢占了1号玩家基地,2号玩家胜利!";return 0;}}}if(b=='o'){//退出 return 0;}system("cls");for(int i=0;i<=25;i++){cout<<a[i]<<endl;}}}return 0;}

好,今天就写到这里吧!

我们来投票下次更新什么:

最后能给个三联吗?

因为我是个小学生,才刚开始写博客。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。