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
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”));
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; }



