栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c++自制小游戏(小人吃食物)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c++自制小游戏(小人吃食物)

这是一个上下左右控制小人移动吃食物的游戏,话不多说,直接上程序。

#include
#include
#include
#include
using namespace std;
int sorces=0;//分数 
int key=72;//方向 
int numberofbarrier=0;//障碍个数 
void hide_cursor()//隐藏光标
{
	HANDLE h_GAME =GetStdHandle(STD_OUTPUT_HANDLE);
	CONSOLE_CURSOR_INFO cursor_info;
	GetConsoleCursorInfo(h_GAME,&cursor_info);
	cursor_info.bVisible=false;
	SetConsoleCursorInfo(h_GAME,&cursor_info);
}
void show_cursor()//显示光标
{
	HANDLE h_GAME =GetStdHandle(STD_OUTPUT_HANDLE);
	CONSOLE_CURSOR_INFO cursor_info;
	GetConsoleCursorInfo(h_GAME,&cursor_info);
	cursor_info.bVisible=true;
	SetConsoleCursorInfo(h_GAME,&cursor_info);
}
struct
{
	int x;
	int y;
	int speed=300;
}character;//角色的要素 
struct
{
	int x;
	int y;
}food;//食物坐标 
struct
{
	int x[1005];
	int y[1005];
}barrier;//障碍坐标 
void gotoxy(int x, int y)//移动光标 
{
    COORD coord;
    coord.X = x;
    coord.Y = y;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}
void colour(int n)
{
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),n);
	
}
void boom()
{
	srand((unsigned int)time(NULL));
	int xx;//预先x坐标 
	int xy;//预先y坐标
	while(1)
	{
		xx=rand()%(40-2)+1;
		xy=rand()%(20-2)+1;
		if(xx!=food.x&&xy!=food.y)
		{
			break;
		}
	}
	xx=rand()%(40-2)+1;
	xy=rand()%(20-2)+1;
	gotoxy(xx,xy);
	colour(4);
	printf("!");
	Sleep(2000);
	barrier.x[numberofbarrier+1]=xx;
	barrier.y[numberofbarrier+1]=xy;
	numberofbarrier++;
	colour(1);
	gotoxy(barrier.x[numberofbarrier],barrier.y[numberofbarrier]);
	printf("#");
}
void drawmap()
{
	hide_cursor();
	for(int i=1;i<=20;i++)
	{
		colour(1);
		gotoxy(0,i);
		printf("#");
		gotoxy(40,i);
		printf("#");
	}
	for(int i=1;i<=40;i++)
	{
		colour(1);
		gotoxy(i,1);
		printf("#");
		gotoxy(i,20);
		printf("#");
	}
	character.x=40/2;
	character.y=20/2;
	gotoxy(character.x,character.y);
	colour(14);
	printf("*") ;
	for(int i=0;i<5;i++)
	{
		while(1)
		{
			int f=0;
			srand((unsigned int)time(NULL));
			barrier.x[i]=rand()%(40-2)+1;
			barrier.y[i]=rand()%(20-2)+1;	
			for(int j=0;j<5;j++)
			{
				if(barrier.x[i]==barrier.x[j]&&barrier.y[i]==barrier.y[j])
				{
					f++;
				}
			}
			if(f<=1&&barrier.x[i]!=character.x&&barrier.y[i]!=character.y)
			{
				numberofbarrier++;
				break;
			}
		}	
		gotoxy(barrier.x[i],barrier.y[i]);
		colour(1);
		printf("#");
	}
	while (1)
    {
    	int flag=1;
        srand((unsigned int)time(NULL));
        food.x = rand() % (40 - 2) + 1;
        food.y = rand() % (20 - 2) + 1;
        for(int i=0;i<5;i++)
        {
        	if(barrier.x[i]==food.x&&barrier.y[i]==food.y)
        	{
        		flag=0;
			}
		}
		if(food.y==1||food.y==20)
        {
        	flag=0;
		}
		if(food.x==0||food.x==40)
		{
			flag=0;
		}
		if(flag==1)
		{
			break;
		}
    }
    //将光标移到食物的坐标处打印食物
    gotoxy(food.x, food.y);
    colour(4);
    printf("@");
    gotoxy(40,21);
    colour(8);
    printf("分数:");
    colour(4);
	printf("0"); 
}
void begin()
{
	colour(14);
	cout<<"    自编小游戏"< 

通过这个程序我们可以看到这样的游戏画面:

 如果你遇到了bug,尝试按一按上下左右,如果不行就再开一局。

这就是我的作品,喜欢就关注一下吧。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/983677.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号