DEV--C++小游戏(吃星星(0.5))

4 篇文章 0 订阅

目录

吃星星(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版

比以前有着巨大大改变:

先看图片:

  1. 增加了颜色选取
  2. 增加了得分
  3. 隐藏了光标
  4. 星星随机位置
  5. 'I'可以吃星星
  6. 星星被吃可增加得分,移动到地图随机位置
  7. 增加了对行列的限制(5~20)防止刷分
  8. 可以算作一个正常游戏,但缺少开头结尾

以上就是表面上能看到的东西

现在来看看代码吧!!!!!


分部代码

头文件

#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();
}

我会尽快更新

敬请期待!!!!!

byebye

慢着!

先来投个票!

  • 11
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值