项目: 推箱子游戏c/c++

Posted 辉小歌

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了项目: 推箱子游戏c/c++相关的知识,希望对你有一定的参考价值。

很早之前写的一个推箱子的游戏

最终效果

代码

#include<stdio.h>
#include<stdlib.h>
#include<graphics.h>
#include<Windows.h>
#include<conio.h>
int map[8][8]={
1,1,1,1,1,1,1,1,
1,0,0,0,0,0,0,1,
1,3,1,1,0,1,3,1,
1,0,1,1,0,1,0,1,
1,0,0,4,0,0,4,1,
1,0,1,1,1,5,0,1,
1,0,0,0,0,0,0,1,
1,1,1,1,1,1,1,1
};
void printf_map(int map[][8])
{
	int i,j;
	for(i=0;i<8;i++)
	{
		for(j=0;j<8;j++)
		{
			switch(map[i][j])
			{
				case 0:
					printf("  ");//两个空格,代表路
					break;
				case 1:
					printf("■");//代表墙
					break;
				case 3:
					printf("☆");//目的地
					break;
				case 4:
					printf("★");//箱子
					break;
				case 5:
				case 8:
					printf("λ");//人
					break;
				case 7:
					printf("◎");//箱子推进了目的地
					break;
			}
		}
		printf("\\n");
	}
}
//按键交互
void keydown()
{
	int i,j;
	//找到人的位置
	for(i=0;i<8;i++)
	{
		for(j=0;j<8;j++)
		{
			if(map[i][j]==5||map[i][j]==8)
			{
				break;
			}
		}
		if(map[i][j]==5||map[i][j]==8)
		{
			break;
		}
	}
	char userkey=_getch();
	switch(userkey)
	{
		case'w':
		case'W':
		case 72:
			//只是人走
			if(map[i-1][j]==0||map[i-1][j]==3)
			{
				map[i-1][j]+=5;//移动到的位置加5
				map[i][j]-=5;//原来位置减5
			}
			//人推箱子走
			if(map[i-1][j]==4||map[i-1][j]==7)
			{
				//箱子移动的条件
				if(map[i-2][j]==0||map[i-2][j]==3)
				{
					map[i-2][j]+=4;//箱子来了
					map[i-1][j]+=1;//箱子走了,人来了
					map[i][j]-=5;//人走了
				}
			}
			break;
		case's':
		case'S':
		case 80:
			//只是人走
			if(map[i+1][j]==0||map[i+1][j]==3)
			{
				map[i+1][j]+=5;//移动到的位置加5
				map[i][j]-=5;//原来位置减5
			}
			//人推箱子走
			if(map[i+1][j]==4||map[i+1][j]==7)
			{
				//箱子移动的条件
				if(map[i+2][j]==0||map[i+2][j]==3)
				{
					map[i+2][j]+=4;//箱子来了
					map[i+1][j]+=1;//箱子走了,人来了
					map[i][j]-=5;//人走了
				}
			}
			break;
		case'a':
		case'A':
		case 75:
			//只是人走
			if(map[i][j-1]==0||map[i][j-1]==3)
			{
				map[i][j-1]+=5;//移动到的位置加5
				map[i][j]-=5;//原来位置减5
			}
			//人推箱子走
			if(map[i][j-1]==4||map[i][j-1]==7)
			{
				//箱子移动的条件
				if(map[i][j-2]==0||map[i][j-2]==3)
				{
					map[i][j-2]+=4;//箱子来了
					map[i][j-1]+=1;//箱子走了,人来了
					map[i][j]-=5;//人走了
				}
			}
			break;
		case'd':
		case'D':
		case 77:
			//只是人走
			if(map[i][j+1]==0||map[i][j+1]==3)
			{
				map[i][j+1]+=5;//移动到的位置加5
				map[i][j]-=5;//原来位置减5
			}
			//人推箱子走
			if(map[i][j+1]==4||map[i][j+1]==7)
			{
				//箱子移动的条件
				if(map[i][j+2]==0||map[i][j+2]==3)
				{
					map[i][j+2]+=4;//箱子来了
					map[i][j+1]+=1;//箱子走了,人来了
					map[i][j]-=5;//人走了
				}
			}
			break;
	}
}
int main(void)
{
	system("title 推箱子游戏中");
	while(1)
	{
		printf_map(map);
		keydown();
		system("cls");
	}
	return 0;
}

以上是关于项目: 推箱子游戏c/c++的主要内容,如果未能解决你的问题,请参考以下文章

C/C++游戏项目完整教程:《推箱子》

推箱子小游戏——c/c++实现

用C/C++实现推箱子小游戏

❤️推箱子游戏❤️(C语言版)

重温经典,推箱子游戏,你能闯到第几关?可自行添加关卡

项目: 推箱子图形化游戏 C++ / C