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

推箱子游戏

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

推箱子游戏

游戏需求

1.询问是否要玩这个游戏【Y】or【N】
2.按下Y进入游戏界面,↑or[w]:向上移动
↓or[s]:向下移动
←or[a]:向左移动
→or[d]:向右移动

怎么打出↑↓←→呢?

右击搜狗条形栏→属性设置→高级→自定义短语设置→添加新定义

在vs怎么一键对齐?

ctrl+a全选→ctrl+k→ctrl+f,就可以了

怎么对所选的内容进行注释和取消注释

选择要注释的代码→ctrl+k→ctrl+c
选择要取消注释的代码→ctrl+k→ctrl+u

graphics.h图形库

initgraph(x, y);设置背景图片的长和宽
IMAGE img;
loadimage(&img,width,height);
putimage(x,y,&img);

setfont(size,0,字体样式);
ps:setfont(24,0,_T(“黑体”));
settextcolor(颜色);
ps:settextcolor(RED);
outtextxy(x,y,文字);
ps:outtextxy(0,0,_T(“hello,world”));

vc2010怎么清空缓冲区

cin.sync();是清除缓冲区中未读的信息。
cin.clear();是将错误转态更改为有效转态。

说明文字 标题

HWND hwnd=GetHWnd();
SetWindowText(hwnd,_T(“xxx”));

热键

#include
_kbhit和_getch
ps:if(_kbhit){//按下键盘
auto key=_getch;
if(key==‘w’)
…
}
效果图:

#include 
#include  
#include 
#include 
using namespace std;



#define IMG_ROW		8		//行数
#define IMG_COL		13		//列数
#define RADIO		61		//小图片的大小
#define BG_WIDTH	1000	//背景的宽
#define BG_HEIGHT	700		//背景的高
#define STAR_X		80		//左上方小图片距离画板左边的距离
#define STAR_Y		200		//左上方小图片距离画板上面的距离
#define KEY_UP		72		//↑
#define KEY_LEFT	75		//←
#define KEY_RIGHT	77		//→
#define KEY_DOWN	80		//↓

//小图片的枚举
enum em{
	WALL=0,
	MAN,
	FLOOR,
	DES,
	BOX,
	HIT
};

struct POS{
	int x;
	int y;
};

POS man;		//定义了一个人的对象
IMAGE image[6];//小图片的数量

bool Check=true;

int images[IMG_ROW][IMG_COL]={
	0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,2,2,0,0,2,2,2,2,0,
	0,2,2,2,2,2,0,0,2,0,0,2,0,
	0,2,2,0,0,2,0,0,2,2,0,2,0,
	0,0,2,0,0,3,0,0,0,2,0,2,0,
	0,0,2,2,2,2,2,2,4,2,0,2,0,
	0,0,2,2,0,0,0,0,0,2,0,1,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0
};

//检查是否结束
bool check(){
	for(int i=0;i
		for(int j=0;j
			if(images[i][j]==3)
				return false;
		}
	}
	return true;
}

//进入游戏页面
void iniGame() {
	initgraph(BG_WIDTH, BG_HEIGHT);//初始化界面大小
	IMAGE img;

	//标题
	HWND hwnd=GetHWnd();
	SetWindowText(hwnd,_T("推箱子游戏(菜鸟及小白)"));

	//1.加载背景图
	loadimage(&img,_T("blackground.bmp"),BG_WIDTH,BG_HEIGHT,true);
	putimage(0,0,&img);

	//2.说明文字
	setfont(28,0,_T("黑体"));
	settextcolor(LIGHTBLUE);
	outtextxy(100,100,_T("操作说明:"));

	setfont(30,0,_T("楷体"));
	settextcolor(RED);
	outtextxy(300,10,_T("↑or[W]:向上移动"));
	outtextxy(300,50,_T("↓or[S]:向下移动"));
	outtextxy(300,90,_T("←or[A]:向左移动"));
	outtextxy(300,130,_T("→or[D]:向右移动"));


	setfont(35,0,_T("宋体"));
	settextcolor(YELLOW);
	outtextxy(650,100,_T("退出:q"));

	//3.加载地图(移动说明)
	loadimage(&image[WALL],_T("wall.bmp"),RADIO,RADIO,true);
	loadimage(&image[MAN],_T("man.bmp"),RADIO,RADIO,true);
	loadimage(&image[FLOOR],_T("floor.bmp"),RADIO,RADIO,true);
	loadimage(&image[DES],_T("des.bmp"),RADIO,RADIO,true);
	loadimage(&image[BOX],_T("box.bmp"),RADIO,RADIO,true);
	loadimage(&image[HIT],_T("box.bmp"),RADIO,RADIO,true);

	for(int i=0;i
		for(int j=0;j
			if(images[i][j]==WALL)
				putimage(STAR_X+RADIO*j,STAR_Y+RADIO*i,&image[WALL]);
			else if(images[i][j]==MAN){
				putimage(STAR_X+RADIO*j,STAR_Y+RADIO*i,&image[MAN]);
				man.x=STAR_X+RADIO*j;
				man.y=STAR_Y+RADIO*i;
			}
			else if(images[i][j]==FLOOR)
				putimage(STAR_X+RADIO*j,STAR_Y+RADIO*i,&image[FLOOR]);
			else if(images[i][j]==DES)
				putimage(STAR_X+RADIO*j,STAR_Y+RADIO*i,&image[DES]);
			else if(images[i][j]==BOX)
				putimage(STAR_X+RADIO*j,STAR_Y+RADIO*i,&image[BOX]);			
		}
	}

	do{
		if(_kbhit()){
			auto key=_getch();
			if(key=='w'||key==KEY_UP){//向上移动
				if(FLOOR==images[(man.y-STAR_Y-RADIO)/RADIO][(man.x-STAR_X)/RADIO]){//向上是地板
					images[(man.y-STAR_Y)/RADIO][(man.x-STAR_X)/RADIO]=FLOOR;		//改变数组
					putimage(man.x,man.y,&image[FLOOR]);							//改变图片
					man.y-=RADIO;													//改变人的位置
					images[(man.y-STAR_Y)/RADIO][(man.x-STAR_X)/RADIO]=MAN;			//改变数组
					putimage(man.x,man.y,&image[MAN]);								//改变图片
				}else if(BOX==images[(man.y-STAR_Y-RADIO)/RADIO][(man.x-STAR_X)/RADIO]){//向上是盒子
					if(FLOOR==images[(man.y-STAR_Y-RADIO*2)/RADIO][(man.x-STAR_X)/RADIO]){//盒子上面是地板
						images[(man.y-STAR_Y-RADIO*2)/RADIO][(man.x-STAR_X)/RADIO]=BOX;	//改变数组
						putimage(man.x,man.y-RADIO*2,&image[BOX]);						//改变图片
						images[(man.y-STAR_Y)/RADIO][(man.x-STAR_X)/RADIO]=FLOOR;		//改变数组
						putimage(man.x,man.y,&image[FLOOR]);							//改变图片
						man.y-=RADIO;													//改变人的位置
						images[(man.y-STAR_Y)/RADIO][(man.x-STAR_X)/RADIO]=MAN;			//改变数组
						putimage(man.x,man.y,&image[MAN]);								//改变图片
					}else if(DES==images[(man.y-STAR_Y-RADIO*2)/RADIO][(man.x-STAR_X)/RADIO]){//盒子上面是目的地
						images[(man.y-STAR_Y-RADIO*2)/RADIO][(man.x-STAR_X)/RADIO]=HIT;	//改变数组
						putimage(man.x,man.y-RADIO*2,&image[HIT]);						//改变图片
						images[(man.y-STAR_Y)/RADIO][(man.x-STAR_X)/RADIO]=FLOOR;		//改变数组
						putimage(man.x,man.y,&image[FLOOR]);							//改变图片
						man.y-=RADIO;													//改变人的位置
						images[(man.y-STAR_Y)/RADIO][(man.x-STAR_X)/RADIO]=MAN;			//改变数组
						putimage(man.x,man.y,&image[MAN]);

						if(Check==check())//检查是否结束
							break;							
					}
				}
			}else if(key=='a'||key==KEY_LEFT){//向左移动
				if(FLOOR==images[(man.y-STAR_Y)/RADIO][(man.x-STAR_X-RADIO)/RADIO]){//向左是地板
					images[(man.y-STAR_Y)/RADIO][(man.x-STAR_X)/RADIO]=FLOOR;		//改变数组
					putimage(man.x,man.y,&image[FLOOR]);							//改变图片
					man.x-=RADIO;													//改变人的位置
					images[(man.y-STAR_Y)/RADIO][(man.x-STAR_X)/RADIO]=MAN;			//改变数组
					putimage(man.x,man.y,&image[MAN]);								//改变图片					
				}else if(BOX==images[(man.y-STAR_Y)/RADIO][(man.x-STAR_X-RADIO)/RADIO]){//向左是盒子
					if(FLOOR==images[(man.y-STAR_Y)/RADIO][(man.x-STAR_X-RADIO*2)/RADIO]){//盒子左面是地板
						images[(man.y-STAR_Y)/RADIO][(man.x-STAR_X-RADIO*2)/RADIO]=BOX;	//改变数组
						putimage(man.x-RADIO*2,man.y,&image[BOX]);						//改变图片
						images[(man.y-STAR_Y)/RADIO][(man.x-STAR_X)/RADIO]=FLOOR;		//改变数组
						putimage(man.x,man.y,&image[FLOOR]);							//改变图片
						man.x-=RADIO;													//改变人的位置
						images[(man.y-STAR_Y)/RADIO][(man.x-STAR_X)/RADIO]=MAN;			//改变数组
						putimage(man.x,man.y,&image[MAN]);								//改变图片
					}else if(DES==images[(man.y-STAR_Y)/RADIO][(man.x-STAR_X-RADIO*2)/RADIO]){//盒子左面是目的地
						images[(man.y-STAR_Y)/RADIO][(man.x-STAR_X-RADIO*2)/RADIO]=HIT;	//改变数组
						putimage(man.x-RADIO*2,man.y,&image[HIT]);						//改变图片
						images[(man.y-STAR_Y)/RADIO][(man.x-STAR_X)/RADIO]=FLOOR;		//改变数组
						putimage(man.x,man.y,&image[FLOOR]);							//改变图片
						man.x-=RADIO;													//改变人的位置
						images[(man.y-STAR_Y)/RADIO][(man.x-STAR_X)/RADIO]=MAN;			//改变数组
						putimage(man.x,man.y,&image[MAN]);

						if(Check==check())//检查是否结束
							break;							
					}
				}

			}else if(key=='s'||key==KEY_DOWN){//向下移动
				if(FLOOR==images[(man.y-STAR_Y+RADIO)/RADIO][(man.x-STAR_X)/RADIO]){//向下是地板
					images[(man.y-STAR_Y)/RADIO][(man.x-STAR_X)/RADIO]=FLOOR;		//改变数组
					putimage(man.x,man.y,&image[FLOOR]);							//改变图片
					man.y+=RADIO;													//改变人的位置
					images[(man.y-STAR_Y)/RADIO][(man.x-STAR_X)/RADIO]=MAN;			//改变数组
					putimage(man.x,man.y,&image[MAN]);								//改变图片					
				}else if(BOX==images[(man.y-STAR_Y+RADIO)/RADIO][(man.x-STAR_X)/RADIO]){//向下是盒子
					if(FLOOR==images[(man.y-STAR_Y+RADIO*2)/RADIO][(man.x-STAR_X)/RADIO]){//盒子下面是地板
						images[(man.y-STAR_Y+RADIO*2)/RADIO][(man.x-STAR_X)/RADIO]=BOX;	//改变数组
						putimage(man.x,man.y+RADIO*2,&image[BOX]);						//改变图片
						images[(man.y-STAR_Y)/RADIO][(man.x-STAR_X)/RADIO]=FLOOR;		//改变数组
						putimage(man.x,man.y,&image[FLOOR]);							//改变图片
						man.y+=RADIO;													//改变人的位置
						images[(man.y-STAR_Y)/RADIO][(man.x-STAR_X)/RADIO]=MAN;			//改变数组
						putimage(man.x,man.y,&image[MAN]);								//改变图片
					}else if(DES==images[(man.y-STAR_Y+RADIO*2)/RADIO][(man.x-STAR_X)/RADIO]){//盒子下面是目的地
						images[(man.y-STAR_Y+RADIO*2)/RADIO][(man.x-STAR_X)/RADIO]=HIT;	//改变数组
						putimage(man.x,man.y+RADIO*2,&image[HIT]);						//改变图片
						images[(man.y-STAR_Y)/RADIO][(man.x-STAR_X)/RADIO]=FLOOR;		//改变数组
						putimage(man.x,man.y,&image[FLOOR]);							//改变图片
						man.y+=RADIO;													//改变人的位置
						images[(man.y-STAR_Y)/RADIO][(man.x-STAR_X)/RADIO]=MAN;			//改变数组
						putimage(man.x,man.y,&image[MAN]);

						if(Check==check())//检查是否结束
							break;							
					}
				}

			}else if(key=='d'||key==KEY_RIGHT){//向右移动
				if(FLOOR==images[(man.y-STAR_Y)/RADIO][(man.x-STAR_X+RADIO)/RADIO]){//向右是地板
					images[(man.y-STAR_Y)/RADIO][(man.x-STAR_X)/RADIO]=FLOOR;		//改变数组
					putimage(man.x,man.y,&image[FLOOR]);							//改变图片
					man.x+=RADIO;													//改变人的位置
					images[(man.y-STAR_Y)/RADIO][(man.x-STAR_X)/RADIO]=MAN;			//改变数组
					putimage(man.x,man.y,&image[MAN]);								//改变图片
				}else if(BOX==images[(man.y-STAR_Y)/RADIO][(man.x-STAR_X+RADIO)/RADIO]){//向右是盒子
					if(FLOOR==images[(man.y-STAR_Y)/RADIO][(man.x-STAR_X+RADIO*2)/RADIO]){//盒子右面是地板
						images[(man.y-STAR_Y)/RADIO][(man.x-STAR_X+RADIO*2)/RADIO]=BOX;	//改变数组
						putimage(man.x+RADIO*2,man.y,&image[BOX]);						//改变图片
						images[(man.y-STAR_Y)/RADIO][(man.x-STAR_X)/RADIO]=FLOOR;		//改变数组
						putimage(man.x,man.y,&image[FLOOR]);							//改变图片
						man.x+=RADIO;													//改变人的位置
						images[(man.y-STAR_Y)/RADIO][(man.x-STAR_X)/RADIO]=MAN;			//改变数组
						putimage(man.x,man.y,&image[MAN]);								//改变图片
					}else if(DES==images[(man.y-STAR_Y)/RADIO][(man.x-STAR_X+RADIO*2)/RADIO]){//盒子下面是目的地
						images[(man.y-STAR_Y)/RADIO][(man.x-STAR_X+RADIO*2)/RADIO]=HIT;	//改变数组
						putimage(man.x+RADIO*2,man.y,&image[HIT]);						//改变图片
						images[(man.y-STAR_Y)/RADIO][(man.x-STAR_X)/RADIO]=FLOOR;		//改变数组
						putimage(man.x,man.y,&image[FLOOR]);							//改变图片
						man.x+=RADIO;													//改变人的位置
						images[(man.y-STAR_Y)/RADIO][(man.x-STAR_X)/RADIO]=MAN;			//改变数组
						putimage(man.x,man.y,&image[MAN]);

						if(Check==check())//检查是否结束
							break;							
					}
				}
			}else if(key=='q'){//退出					
				break;
			}
		}
	}while(1);
}

int main()
{
	char choice;
	cout << "您是想玩推箱子游戏吗?n(按【Y】or【y】代表是的,按【N】or【n】代表否)"<> choice;
	while (1) {
		if ('Y' == choice || 'y' == choice) {//进入游戏页面
			iniGame();
			Sleep(2000);
			break;
		}
		else if ('N' == choice || 'n' == choice) {//不玩游戏,直接退出
			return 0;
		}
		else {//输入其他字符
			cout << "您输入的有误,请重新输入!"<> choice;//重新输入
			continue;
		}
	}
	return 0;	
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1021138.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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