目录
吃星星(1.2)
该版本简介+更新说明
分部代码
头文件+命名空间+变量
结构体
角色结构体
星星结构体
打印地图结构体
函数
函数声明
单人模式游戏函数
双人模式游戏函数
开始游戏函数
清屏函数
定点输出函数
隐藏光标函数
输入函数
单人初始化函数
双人初始化函数
主函数
总结
byebye
吃星星(1.2)
该版本是优化好的第一个正式版本
该版本简介+更新说明
我呕心沥血
亿天亿周更两次
累喜了
经过
DEV--C++小游戏(吃星星(0.1))-CSDN博客
和
DEV--C++小游戏(吃星星(0.2))-CSDN博客
塑造了
DEV--C++小游戏(吃星星(0.5))-CSDN博客
接着
又推出了
https://blog.csdn.net/lizhaoran22/article/details/138988758
(该版本)
看看:
主界面
单人模式简介界面
单人模式游戏界面
双人模式简介界面
双人模式游戏界面
规则简介界面
该版本对比以前版本的改变:
- 增加双人模式
- 增加了许多界面
- 增加了规则介绍
虽然看着少
但代码从113飞到281
整整多了168行
废话不多说,
代码他来喽!
分部代码
头文件+命名空间+变量
#include#include #include using namespace std; int n,m,wx,wy,cc=-1,fen,fen1,fen2,p1x,p1y,p2x,p2y,pc[2]={},f[4]={cc/16*16+9,cc/16*16+10,cc/16*16+12,cc/16*16+14},x=0; char a[100][200],w='*',c,ch='I';
不万能的万能头
按键式输入头文件
颜色窗口等头文件
命名空间
c,n:地图大小
wx,wy:星星坐标
cc:颜色
fen:单人得分
fen1:双人得分1
fen2:双人得分2
p1x,p1y:玩家1的x,y坐标
p2x,p2y:玩家2的x,y坐标
pc:角色颜色
f:角色可选颜色
x:对于pc的'i'(循环变量)
a:地图
c:输入变量
w:星星
ch:'I'的变量
结构体
角色结构体
struct people { void Ise() { for(int i=0;i<4;i++)if((f[i]/17*17==f[i])||(f[i]==cc))f[i]=-1; for(int i=0;i<4;i++)if((f[i]!=-1)&&(pc[x]==0))pc[x++]=f[i]; } void yd1() { (c=='a'&&p1y>0)?a[p1x][--p1y]='I',a[p1x][p1y+1]='x':0; (c=='d'&&p1y0)?a[--p1x][p1y]='I',a[p1x+1][p1y]='x':0; (c=='s'&&p1x 0&&a[p1x][p1y-1]!='I')?a[p1x][--p1y]='I',a[p1x][p1y+1]='x':0; (c=='d'&&p1y 0&&a[p1x-1][p1y]!='I')?a[--p1x][p1y]='I',a[p1x+1][p1y]='x':0; (c=='s'&&p1x 0&&a[p2x][p2y-1]!='I')?a[p2x][--p2y]='I',a[p2x][p2y+1]='x':0; (c=='l'&&p2y 0&&a[p2x-1][p2y]!='I')?a[--p2x][p2y]='I',a[p2x+1][p2y]='x':0; (c=='k'&&p2x 选择角色的颜色
单个角色的移动
用到w,a,s,d,Esc
两个角色的移动
用到w,a,s,d,i,j,k,l,Esc
打印角色1
打印角色2
星星结构体
struct xing { void q1() { int color=rand()%255+0; colorchoose(color); printf("%c",w); colorchoose(cc); } void q21() { if((wx==p1x&&wy==p1y)) { while(wx==p1x&&wy==p1y) { wx=rand()%n+0; wy=rand()%m+0; } fen++; } } void q22() { if(wx==p1x&&wy==p1y) { while((wx==p1x&&wy==p1y)||(wx==p2x&&wy==p2y)) { wx=rand()%n+0; wy=rand()%m+0; } fen1++; } if(wx==p2x&&wy==p2y) { while((wx==p1x&&wy==p1y)||(wx==p2x&&wy==p2y)) { wx=rand()%n+0; wy=rand()%m+0; } fen2++; } } }xing;q1:随机颜色的星星
q21:单人模式下星星被吃后移到随机位置
q22:双人模式下星星被吃后移到随机位置
打印地图结构体
struct print { void p1() { printf("该版本为:吃星星(1.2)\n"); printf("单人模式\n"); for(int i=0;ip1:单人模式地图打印,遇到星星、‘I’就去到相应结构体打印
p2:双人模式地图打印,遇到星星、‘I’就去到相应结构体打印
函数
函数声明
void ks(); void cls(); void gotoxy(int x,int y); void yc(); void colorchoose(int color); void game1(); void game2(); void in(); void chu1(); void chu2();提前声明所有函数
防止在函数嵌套式出现错误
单人模式游戏函数
void game1() { while(1) { yc(); xing.q21(); pr.p1(); printf("得分:%d",fen); c=getch(); cls(); p.yd1(); } }一直执行
隐藏光标
判断星星是否被吃
打印地图
打印得分
按键输入
清屏
移动
双人模式游戏函数
void game2() { while(1) { yc(); xing.q22(); pr.p2(); printf("得分1:%d\n",fen1); printf("得分2:%d",fen2); c=getch(); cls(); p.yd2(); } }一直执行
隐藏光标
判断星星是否被吃
打印地图
打印得分
按键输入
清屏
移动
开始游戏函数
void ks() { yc(); srand(time(0)); system("mode con cols=90 lines=30"); colorchoose(11); for(int i=1;i<=89;i++)printf("_"); cout<<"\n"; for(int i=1;i<=28;i++)printf("| |\n"); printf("|_"); for(int i=1;i<=85;i++)printf("_"); printf("_|"); colorchoose(12); gotoxy(40,14); printf("单人模式(a)"); gotoxy(40,15); printf("双人模式(b)"); gotoxy(40,16); printf("游戏规则(c)"); c=getch(); switch(c) { case 'a': { cls(); printf("你是I,你在书桌上N天没吃饭了,突然,桌子上出现了一个星星,你不管不顾的冲上前去,直接吃掉,但你看到另一处还有,就拼命的吃......"); Sleep(5000); in(); chu1(); break; }; case 'b': { cls(); printf("你是I,你和你的朋友在书桌上N天没吃饭了,突然,桌子上出现了一个星星,你们不管不顾的冲上前去,直接吃掉,但你们看到另一处还有,就拼命的吃,最后,两人因为星星而争抢起来...."); Sleep(5000); in(); chu2(); break; } case 'c': { cls(); printf("游戏规则:\n单人模式:\n使用wasd进行移动、吃星星,Esc键退出游戏。\n双人模式:\n玩家1使用wasd进行移动、吃星星,玩家2使用ijkl进行移动、吃星星,Esc键退出游戏。"); Sleep(5000); } default:ks(); } }隐藏
设置随机种子
调整窗口大小
选择颜色
打印框架
选择颜色
打印主界面
判断按下哪个键
按下a:
清屏
游戏简介
等待5s
输入
初始化
按下b:
清屏
游戏简介
等待5s
输入
初始化
按下c:
清屏
游戏规则简介
等待5s
其他:继续执行开始游戏函数
清屏函数
void cls() { system("cls"); }清除屏幕上所有东西
定点输出函数
void gotoxy(int x,int y) { HANDLE hOutput; COORD loc; loc.X=x; loc.Y=y; hOutput=GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleCursorPosition(hOutput,loc); }到坐标为(x,y)的地方……
隐藏光标函数
void yc() { CONSOLE_CURSOR_INFO cursor_info={1,0}; SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info); }将光标隐藏
输入函数
void in() { while(!((n>=5&&n<=20&&m>=5&&m<=20&&cc>=0&&cc<=255))) { cls(); printf("行数(5~20):"); scanf("%d",&n); printf("列数(5~20):"); scanf("%d",&m); printf("颜色(0~255):"); scanf("%d",&cc); } }进行行、列、颜色的输入
单人初始化函数
void chu1() { f[0]=cc/16*16+9; f[1]=cc/16*16+10; f[2]=cc/16*16+12; f[3]=cc/16*16+14; p.Ise(); memset(a,'x',sizeof(a)); p1x=0; p1y=0; wx=n/2; wy=m/2; a[0][0]='I'; game1(); }四个颜色
选择颜色
a里全为'x'
角色1坐标
星星坐标
设置‘I’的初始位置
单人游戏函数
双人初始化函数
void chu2() { f[0]=cc/16*16+9; f[1]=cc/16*16+10; f[2]=cc/16*16+12; f[3]=cc/16*16+14; p.Ise(); memset(a,'x',sizeof(a)); p1x=0; p1y=0; p2x=n-1; p2y=m-1; a[0][0]=a[n-1][m-1]='I'; wx=n/2; wy=m/2; game2(); }四个颜色
选择颜色
a里全为'x'
角色1坐标
角色2坐标
星星坐标
设置‘I’的初始位置
双人游戏函数
主函数
int main() { ks(); }开始函数
1.2版完整代码
#include#include #include using namespace std; int n,m,wx,wy,cc=-1,fen,fen1,fen2,p1x,p1y,p2x,p2y,pc[2]={},f[4]={cc/16*16+9,cc/16*16+10,cc/16*16+12,cc/16*16+14},x=0; char a[100][200],w='*',c,ch='I'; void ks(); void cls(); void gotoxy(int x,int y); void yc(); void colorchoose(int color); void game1(); void game2(); void in(); void chu1(); void chu2(); struct people { void Ise() { for(int i=0;i<4;i++)if((f[i]/17*17==f[i])||(f[i]==cc))f[i]=-1; for(int i=0;i<4;i++)if((f[i]!=-1)&&(pc[x]==0))pc[x++]=f[i]; } void yd1() { (c=='a'&&p1y>0)?a[p1x][--p1y]='I',a[p1x][p1y+1]='x':0; (c=='d'&&p1y 0)?a[--p1x][p1y]='I',a[p1x+1][p1y]='x':0; (c=='s'&&p1x 0&&a[p1x][p1y-1]!='I')?a[p1x][--p1y]='I',a[p1x][p1y+1]='x':0; (c=='d'&&p1y 0&&a[p1x-1][p1y]!='I')?a[--p1x][p1y]='I',a[p1x+1][p1y]='x':0; (c=='s'&&p1x 0&&a[p2x][p2y-1]!='I')?a[p2x][--p2y]='I',a[p2x][p2y+1]='x':0; (c=='l'&&p2y 0&&a[p2x-1][p2y]!='I')?a[--p2x][p2y]='I',a[p2x+1][p2y]='x':0; (c=='k'&&p2x =5&&n<=20&&m>=5&&m<=20&&cc>=0&&cc<=255))) { cls(); printf("行数(5~20):"); scanf("%d",&n); printf("列数(5~20):"); scanf("%d",&m); printf("颜色(0~255):"); scanf("%d",&cc); } } void chu1() { f[0]=cc/16*16+9; f[1]=cc/16*16+10; f[2]=cc/16*16+12; f[3]=cc/16*16+14; p.Ise(); memset(a,'x',sizeof(a)); p1x=0; p1y=0; wx=n/2; wy=m/2; a[0][0]='I'; game1(); } void chu2() { f[0]=cc/16*16+9; f[1]=cc/16*16+10; f[2]=cc/16*16+12; f[3]=cc/16*16+14; p.Ise(); memset(a,'x',sizeof(a)); p1x=0; p1y=0; p2x=n-1; p2y=m-1; a[0][0]=a[n-1][m-1]='I'; wx=n/2; wy=m/2; game2(); } 总结
吃星星小游戏擦不多久更到这了
以后可能就更新时间就会很久
因为已经做好了
没什么可更得了
如果大佬们觉得有可以改进的地方
请在评论区发言
我尽快修改
希望多给我意见建议
我也会再看看
对比一下别的游戏
看看还有什么可以改进
希望大佬给我提供宝贵的意见!!!!!
byebye
还没有评论,来说两句吧...