目录
吃星星(0.5)
该版本简介
DEV--C++小游戏(吃星星(0.1))
DEV--C++小游戏(吃星星(0.2))
分部代码
头文件
命名空间+变量(增)
副函数(新,增)
清屏函数
打印地图函数(增)
移动函数
选择颜色函数
随机选一个颜色并输出星星(改)
去到指定位置并输出函数(新)
隐藏光标函数(新)
'我'的颜色函数
选蓝色或绿色
碰到星星函数(新)
输出+初始化(新)
游戏主体函数
主函数
0.5版完整代码
byebye
吃星星(0.5)
版本<1表示还未完全完成
该版本简介
经过
DEV--C++小游戏(吃星星(0.1))
和
DEV--C++小游戏(吃星星(0.2))
以及粉丝们的支持
我加班加点,造出了0.5版
比以前有着巨大大改变:
先看图片:
- 增加了颜色选取
- 增加了得分
- 隐藏了光标
- 星星随机位置
- 'I'可以吃星星
- 星星被吃可增加得分,移动到地图随机位置
- 增加了对行列的限制(5~20)防止刷分
- 可以算作一个正常游戏,但缺少开头结尾
以上就是表面上能看到的东西
现在来看看代码吧!!!!!
分部代码
头文件
#include<bits/stdc++.h>
#include<conio.h>
#include<windows.h>
不万能的万能头
按键式输入头文件
颜色窗口等头文件
命名空间+变量(增)
using namespace std;
int x,y,n,m,color,wx,wy,cc=-1,fen;
char a[100][200],w='*',c;
命名空间
地图大小(n,m),‘I’的坐标(x,y),颜色,星星坐标,颜色,得分
地图,输入变量,星星
副函数(新,增)
清屏函数
void cls()
{
system("cls");
}
清除屏幕上所有东西
打印地图函数(增)
void p1()
{
printf("该版本为:吃星星(0.5)\n");
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
if(i==wx&&j==wy)q1();
if(i==x&&j==y)i1();
if(!(((i==wx&&j==wy)||(i==x&&j==y))))printf("%c",a[i][j]);
}
printf("\n");
}
gotoxy(m,1);
printf("得分:%d",fen);
}
打印版本+地图+地图中随机颜色的星星+地图中的我
移动函数
void yd()
{
(c=='a'&&y>0)?a[x][--y]='I',a[x][y+1]='x':0;
(c=='d'&&y<m-1)?a[x][++y]='I',a[x][y-1]='x':0;
(c=='w'&&x>0)?a[--x][y]='I',a[x+1][y]='x':0;
(c=='s'&&x<n-1)?a[++x][y]='I',a[x-1][y]='x':0;
if(int(c)==27)exit(0);
}
w,a,s,d,Esc键的判断是否按下
选择颜色函数
void colorchoose(int color)
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),color);
}
定义一个颜色,并实现输出使用这个颜色
随机选一个颜色并输出星星(改)
void q1()
{
color=rand()%255+0;
colorchoose(color);
printf("%c",w);
colorchoose(cc);
}
随机选一个颜色
实现这个颜色
输出星星
颜色变回来(变成背景颜色)
去到指定位置并输出函数(新)
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 i1()
{
if(cc/16*16+10!=cc)color=cc/16*16+10;
else color=cc/16*16+9;
colorchoose(color);
char ch='I';
printf("%c",ch);
colorchoose(cc);
}
选蓝色或绿色
碰到星星函数(新)
void q2()
{
if(wx==x&&wy==y)
{
while(wx==x&&wy==y)
{
wx=rand()%n+0;
wy=rand()%m+0;
}
fen++;
}
}
如果‘我’碰到星星
将星星随机到一个位置,但不能是‘我’的位置
得分+1
输出+初始化(新)
void in_chu()
{
srand(time(0));
system("mode con cols=150 lines=40");
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);
}
memset(a,'x',sizeof(a));
x=n/2;
y=m/2;
cls();
}
设置随机种子
调整窗口至40*150(长*宽)
输入长、宽、颜色,并保持合理
将a所有字符都设为‘x’
'我'的坐标(n/2(x),m/2(y))
清屏
游戏主体函数
void game()
{
yc();
p1();
c=getch();
cls();
yd();
q2();
}
隐藏光标
打印地图
获取移动方向
清屏
移动
星星有没有别吃到
主函数
int main()
{
in_chu();
while(1)game();
}
输入并初始化
开始游戏
0.5版完整代码
#include<bits/stdc++.h>
#include<conio.h>
#include<windows.h>
using namespace std;
int x,y,n,m,color,wx,wy,cc=-1,fen;
char a[100][200],w='*',c;
void gotoxy(int x,int y)
{
HANDLE hOutput;
COORD loc;
loc.X=x;
loc.Y=y;
hOutput=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(hOutput,loc);
}
void yc()
{
CONSOLE_CURSOR_INFO cursor_info={1,0};
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);
}
void colorchoose(int color)
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),color);
}
void q1()
{
color=rand()%255+0;
colorchoose(color);
printf("%c",w);
colorchoose(cc);
}
void q2()
{
if(wx==x&&wy==y)
{
while(wx==x&&wy==y)
{
wx=rand()%n+0;
wy=rand()%m+0;
}
fen++;
}
}
void i1()
{
if(cc/16*16+10!=cc)color=cc/16*16+10;
else color=cc/16*16+9;
colorchoose(color);
char ch='I';
printf("%c",ch);
colorchoose(cc);
}
void cls()
{
system("cls");
}
void p1()
{
printf("该版本为:吃星星(0.5)\n");
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
if(i==wx&&j==wy)q1();
if(i==x&&j==y)i1();
if(!(((i==wx&&j==wy)||(i==x&&j==y))))printf("%c",a[i][j]);
}
printf("\n");
}
gotoxy(m,1);
printf("得分:%d",fen);
}
void in_chu()
{
srand(time(0));
system("mode con cols=150 lines=40");
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);
}
memset(a,'x',sizeof(a));
x=n/2;
y=m/2;
cls();
}
void yd()
{
(c=='a'&&y>0)?a[x][--y]='I',a[x][y+1]='x':0;
(c=='d'&&y<m-1)?a[x][++y]='I',a[x][y-1]='x':0;
(c=='w'&&x>0)?a[--x][y]='I',a[x+1][y]='x':0;
(c=='s'&&x<n-1)?a[++x][y]='I',a[x-1][y]='x':0;
if(int(c)==27)exit(0);
}
void game()
{
yc();
p1();
c=getch();
cls();
yd();
q2();
}
int main()
{
in_chu();
while(1)game();
}
我会尽快更新
敬请期待!!!!!