C++基于easyx图形库实现推箱子游戏

本文实例为大家分享了C++实现推箱子游戏的具体代码,供大家参考,具体内容如下

头文件:

#include<stdio.h>
#include<stdlib.h>
//#include<Windows.h>
#include<conio.h>
#include<graphics.h>
#include<stdbool.h>

//播放音乐需要的头文件
#include <mmsystem.h>
#pragma comment(lib,"winmm.lib")

//格子边长
#define SPACE 60

//6.3.1 定义变量
IMAGE png[12];//5张图,定义5个变量,定义一个数组

#define MapMany 6

//枚举方向
enum CH {
 right = 1,
 left = 2,
 up = 3,
 down = 4
}ch;

//定义一个全局三维数组

//0表示空地“ ”  1表示墙“■”  2代表目的地“⊙”  3代表人站在空地上“♀”  4代表箱子“□”
//5箱子与目的地重合“◆”  6,人站在目的地上“♀”

//下面定义地图
int map[MapMany][10][10] = {
 //图一
 {
  { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
  { 1, 2, 0, 1, 1, 0, 0, 0, 2, 1 },
  { 1, 0, 0, 1, 1, 0, 0, 0, 0, 1 },
  { 1, 0, 0, 1, 1, 1, 1, 0, 4, 1 },
  { 1, 0, 0, 1, 1, 1, 1, 0, 0, 1 },
  { 1, 0, 0, 1, 1, 1, 0, 0, 0, 1 },
  { 1, 0, 0, 1, 1, 1, 0, 0, 0, 1 },
  { 1, 4, 0, 0, 0, 0, 0, 3, 0, 1 },
  { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
  { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
 },
 //图二
 {
  { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
  { 1, 0, 1, 2, 0, 0, 0, 4, 0, 1 },
  { 1, 0, 1, 0, 0, 0, 0, 0, 0, 1 },
  { 1, 0, 1, 0, 0, 1, 1, 0, 0, 1 },
  { 1, 0, 1, 0, 0, 1, 1, 0, 0, 1 },
  { 1, 0, 1, 1, 1, 1, 1, 0, 3, 1 },
  { 1, 0, 1, 1, 1, 1, 1, 0, 0, 1 },
  { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
  { 1, 2, 0, 0, 4, 0, 0, 0, 0, 1 },
  { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
 },
 //图三
 {
  { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
  { 1, 2, 0, 1, 0, 0, 3, 0, 0, 1 },
  { 1, 0, 0, 1, 0, 0, 0, 0, 0, 1 },
  { 1, 0, 0, 1, 1, 1, 1, 0, 0, 1 },
  { 1, 4, 0, 1, 1, 1, 1, 0, 0, 1 },
  { 1, 0, 0, 1, 1, 0, 0, 0, 4, 1 },
  { 1, 0, 0, 1, 0, 0, 0, 0, 0, 1 },
  { 1, 0, 0, 0, 4, 0, 1, 0, 0, 1 },
  { 1, 2, 0, 0, 0, 0, 1, 0, 2, 1 },
  { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
 },
 //图四
 {
  { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
  { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
  { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
  { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
  { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
  { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
  { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
  { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
  { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
  { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
 },
 //图五
 {
  { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
  { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
  { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
  { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
  { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
  { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
  { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
  { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
  { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
  { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
 },
 //图六
 {
  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
 }
};

//定义当前关卡
int WhatMap = 0;//初始化位第0张地图

void DrawMap(int n);
void initscreen();
void ManUp();
int KbHit();
void ManUp();
void ManRight();
void ManLeft();
void ManDown();
int GameOver();
void drawGame();

CPP文件:

#include"SokoBan.h"

int main()
{
 initscreen();
 //播放音乐
 mciSendString(TEXT("open sun.mp3 alias mysong"), NULL, 0, NULL);
 mciSendString(TEXT("play mySong"), NULL, 0, NULL);

 while (1)
 {
  switch (KbHit())
  {
  case 4:ManUp(); break;
  case 2:ManLeft(); break;
  case 1:ManRight(); break;
  case 3:ManDown(); break;
  //case 0:continue;
  }
  drawGame();
  if (GameOver())
  {
   WhatMap++;
   Sleep(1000);
  }
  if (WhatMap == 3)break;
 }
 loadimage(&png[7], _T("6.jpg"), 10*SPACE, 10*SPACE, true);
 putimage(0, 0, &png[7]);
 Sleep(10000);
 return 0;
 //printf("作者:小豆芽\n时间:2018/12/18\n版权:2862841130@qq.com");
 //system("pause");
}

//设置窗口大小
void initscreen()
{
 initgraph(10 * SPACE, 10 * SPACE );

 //6.3.2 加载图片

 //0表示空地“ ”  1表示墙“■”  2代表目的地“⊙”  3代表人站在空地上“♀”  4代表箱子“□”
 //5箱子与目的地重合“◆”  6,人站在目的地上“♀”
 loadimage(&png[0], _T("0.jpg"), SPACE, SPACE, true);
 loadimage(&png[1], _T("1.jpg"), SPACE, SPACE, true);
 loadimage(&png[2], _T("2.jpg"), SPACE, SPACE, true);
 loadimage(&png[3], _T("3.jpg"), SPACE, SPACE, true);
 loadimage(&png[4], _T("4.jpg"), SPACE, SPACE, true);
 loadimage(&png[5], _T("5.jpg"), SPACE, SPACE, true);
 loadimage(&png[6], _T("3.jpg"), SPACE, SPACE, true);

 //以下是windows窗口
 //system("mode con cols=20 lines=10");  //cols 代表列 //lines 代表行
 //           //设置标题
 //SetConsoleTitleA("推箱子");    //设置标题
}
//贴图
void drawGame() {
 for (int i = 0; i < 10; i++) {//显示一行
  for (int j = 0; j < 10; j++) {//显示一个格子
   putimage(j*SPACE, i*SPACE, &png[map[WhatMap][i][j]]);
  }
 }
}

//画出地图

//0表示空地“ ”  1表示墙“■”  2代表目的地“⊙”  3代表人“♀”  4代表箱子“□”
//5箱子与目的地重合“◆”  6,人站在目的地
void DrawMap(int n)
{
 system("cls");
 for (int j = 0; j < 10; j++)
 {
  int i;
  for (i = 0; i < 10; i++)
  {
   if (map[WhatMap][i][j] == 0)printf(" ");
   if (map[WhatMap][i][j] == 1)printf("■");
   if (map[WhatMap][i][j] == 2)printf("⊙");
   if (map[WhatMap][i][j] == 3)printf("♀");
   if (map[WhatMap][i][j] == 4)printf("□");
   if (map[WhatMap][i][j] == 5)printf("◆");
   if (map[WhatMap][i][j] == 6)printf("♀");
  }
  if(i<9)printf("\n");
 }
}

//判断按键操作
int KbHit()
{
 if (GetAsyncKeyState(VK_UP)&1)return up;
 else if (GetAsyncKeyState(VK_DOWN)&1)return down;
 else if (GetAsyncKeyState(VK_RIGHT)&1)return right;
 else if (GetAsyncKeyState(VK_LEFT)&1)return left;
 else return 0;
}

//********************************************人向上移动
void ManUp()
{
 //先找到人的位置
 int i, j;
 for (i = 0; i < 10; i++)
 {
  int flag = 0;
  for (j = 0; j < 10; j++)
   if (map[WhatMap][i][j] == 3 || map[WhatMap][i][j] == 6)
   {
    flag = 1;
    break;
   }
  if (flag)break;
 }
 //人的位置是map[WhatMap][i][j];

 //改变人的方向

 //人的位置是空地
 if (map[WhatMap][i][j] == 3)
 {
  //***********人的上面是空地
  if (map[WhatMap][i + 1][j] == 0)
  {
   map[WhatMap][i][j] = 0;
   map[WhatMap][i + 1][j] = 3;
  }
  //************人的上面是目的地
  else if (map[WhatMap][i + 1][j] == 2)
  {
   map[WhatMap][i][j] = 0;
   map[WhatMap][i + 1][j] = 6;
  }
  //*************人的上面是箱子
  else if (map[WhatMap][i + 1][j] == 4)
  {
   //1,***********箱子上面是目的地
   if (map[WhatMap][i + 2][j] == 2)
   {
    map[WhatMap][i][j] = 0;
    map[WhatMap][i + 1][j] = 3;
    map[WhatMap][i + 2][j] = 5;
   }
   //2,************箱子上面是空地
   else if (map[WhatMap][i + 2][j] == 0)
   {
    map[WhatMap][i][j] = 0;
    map[WhatMap][i + 1][j] = 3;
    map[WhatMap][i + 2][j] = 4;
   }
   //3,*************箱子上面是。。。。。
  }

 }
 //人的位置是目的地
 else if (map[WhatMap][i][j] == 6)
 {

  //***********人的上面是空地

  if (map[WhatMap][i + 1][j] == 0)
  {
   map[WhatMap][i][j] = 2;
   map[WhatMap][i + 1][j] = 3;
  }
  //************人的上面是目的地
  else if (map[WhatMap][i + 1][j] == 2)
  {
   map[WhatMap][i][j] = 2;
   map[WhatMap][i + 1][j] = 6;
  }
  //*************人的上面是箱子

  else if (map[WhatMap][i + 1][j] == 4)
  {
   //1,***********箱子上面是目的地
   if (map[WhatMap][i + 2][j] == 2)
   {
    map[WhatMap][i][j] = 2;
    map[WhatMap][i + 1][j] = 3;
    map[WhatMap][i + 2][j] = 5;
   }
   //2,************箱子上面是空地
   else if (map[WhatMap][i + 2][j] == 0)
   {
    map[WhatMap][i][j] = 2;
    map[WhatMap][i + 1][j] = 3;
    map[WhatMap][i + 2][j] = 4;
   }
   //3,*************箱子上面是。。。。。
  }
 }
}
//********************************************人向右移动
void ManRight()
{
 //先找到人的位置
 int i, j;
 for (i = 0; i < 10; i++)
 {
  int flag = 0;
  for (j = 0; j < 10; j++)
   if (map[WhatMap][i][j] == 3 || map[WhatMap][i][j] == 6)
   {
    flag = 1;
    break;
   }
  if (flag)break;
 }
 //人的位置是map[WhatMap][i][j];

 //改变人的方向

 //人的位置是空地
 if (map[WhatMap][i][j] == 3)
 {
  //***********人的右面是空地
  if (map[WhatMap][i][j+1] == 0)
  {
   map[WhatMap][i][j] = 0;
   map[WhatMap][i][j+1] = 3;
  }
  //************人的右面是目的地
  else if (map[WhatMap][i][j+1] == 2)
  {
   map[WhatMap][i][j] = 0;
   map[WhatMap][i][j+1] = 6;
  }
  //*************人的右面是箱子
  else if (map[WhatMap][i][j+1] == 4)
  {
   //1,***********箱子右面是目的地
   if (map[WhatMap][i][j+2] == 2)
   {
    map[WhatMap][i][j] = 0;
    map[WhatMap][i][j+1] = 3;
    map[WhatMap][i][j+2] = 5;
   }
   //2,************箱子右面是空地
   else if (map[WhatMap][i][j+2] == 0)
   {
    map[WhatMap][i][j] = 0;
    map[WhatMap][i][j+1] = 3;
    map[WhatMap][i][j+2] = 4;
   }
   //3,*************箱子右面是。。。。。
  }
 }
 //人的位置是目的地
 else if (map[WhatMap][i][j] == 6)
 {
  //***********人的右面是空地

  if (map[WhatMap][i][j+1] == 0)
  {
   map[WhatMap][i][j] = 2;
   map[WhatMap][i][j+1] = 3;
  }
  //************人的右面是目的地
  else if (map[WhatMap][i][j+1] == 2)
  {
   map[WhatMap][i][j] = 2;
   map[WhatMap][i][j+1] = 6;
  }
  //*************人的右面是箱子

  else if (map[WhatMap][i][j+1] == 4)
  {
   //1,***********箱子右面是目的地
   if (map[WhatMap][i][j+2] == 2)
   {
    map[WhatMap][i][j] = 2;
    map[WhatMap][i][j+1] = 3;
    map[WhatMap][i][j+2] = 5;
   }
   //2,************箱子右面是空地
   else if (map[WhatMap][i][j+2] == 0)
   {
    map[WhatMap][i][j] = 2;
    map[WhatMap][i][j+1] = 3;
    map[WhatMap][i][j+2] = 4;
   }
   //3,*************箱子右面是。。。。。
  }
 }
}
//********************************************人向左移动
void ManLeft()
{
 //先找到人的位置
 int i, j;
 for (i = 0; i < 10; i++)
 {
  int flag = 0;
  for (j = 0; j < 10; j++)
   if (map[WhatMap][i][j] == 3 || map[WhatMap][i][j] == 6)
   {
    flag = 1;
    break;
   }
  if (flag)break;
 }
 //人的位置是map[WhatMap][i][j];

 //改变人的方向

 //人的位置是空地
 if (map[WhatMap][i][j] == 3)
 {
  //***********人的左面是空地
  if (map[WhatMap][i][j-1] == 0)
  {
   map[WhatMap][i][j] = 0;
   map[WhatMap][i][j-1] = 3;
  }
  //************人的左面是目的地
  else if (map[WhatMap][i][j-1] == 2)
  {
   map[WhatMap][i][j] = 0;
   map[WhatMap][i][j-1] = 6;
  }
  //*************人的左面是箱子
  else if (map[WhatMap][i][j-1] == 4)
  {
   //1,***********箱子左面是目的地
   if (map[WhatMap][i][j-2] == 2)
   {
    map[WhatMap][i][j] = 0;
    map[WhatMap][i][j-1] = 3;
    map[WhatMap][i][j-2] = 5;
   }
   //2,************箱子左面是空地
   else if (map[WhatMap][i][j-2] == 0)
   {
    map[WhatMap][i][j] = 0;
    map[WhatMap][i][j-1] = 3;
    map[WhatMap][i][j-2] = 4;
   }
   //3,*************箱子左面是。。。。。
  }
 }
 //人的位置是目的地
 else if (map[WhatMap][i][j] == 6)
 {
  //***********人的上面是空地

  if (map[WhatMap][i][j-1] == 0)
  {
   map[WhatMap][i][j] = 2;
   map[WhatMap][i][j-1] = 3;
  }
  //************人的上面是目的地
  else if (map[WhatMap][i][j-1] == 2)
  {
   map[WhatMap][i][j] = 2;
   map[WhatMap][i][j-1] = 6;
  }
  //*************人的上面是箱子

  else if (map[WhatMap][i][j-1] == 4)
  {
   //1,***********箱子上面是目的地
   if (map[WhatMap][i][j-2] == 2)
   {
    map[WhatMap][i][j] = 2;
    map[WhatMap][i][j-1] = 3;
    map[WhatMap][i][j-2] = 5;
   }
   //2,************箱子上面是空地
   else if (map[WhatMap][i][j-2] == 0)
   {
    map[WhatMap][i][j] = 2;
    map[WhatMap][i][j-1] = 3;
    map[WhatMap][i][j-2] = 4;
   }
   //3,*************箱子上面是。。。。。
  }
 }
}
//********************************************人向下移动
void ManDown()
{
 //先找到人的位置
 int i, j;
 for (i = 0; i < 10; i++)
 {
  int flag = 0;
  for (j = 0; j < 10; j++)
   if (map[WhatMap][i][j] == 3 || map[WhatMap][i][j] == 6)
   {
    flag = 1;
    break;
   }
  if (flag)break;
 }
 //人的位置是map[WhatMap][i][j];

 //改变人的方向

 //人的位置是空地
 if (map[WhatMap][i][j] == 3)
 {
  //***********人的下面是空地
  if (map[WhatMap][i - 1][j] == 0)
  {
   map[WhatMap][i][j] = 0;
   map[WhatMap][i - 1][j] = 3;
  }
  //************人的上面是目的地
  else if (map[WhatMap][i - 1][j] == 2)
  {
   map[WhatMap][i][j] = 0;
   map[WhatMap][i - 1][j] = 6;
  }
  //*************人的上面是箱子
  else if (map[WhatMap][i - 1][j] == 4)
  {
   //1,***********箱子上面是目的地
   if (map[WhatMap][i - 2][j] == 2)
   {
    map[WhatMap][i][j] = 0;
    map[WhatMap][i - 1][j] = 3;
    map[WhatMap][i - 2][j] = 5;
   }
   //2,************箱子上面是空地
   else if (map[WhatMap][i - 2][j] == 0)
   {
    map[WhatMap][i][j] = 0;
    map[WhatMap][i - 1][j] = 3;
    map[WhatMap][i - 2][j] = 4;
   }
   //3,*************箱子上面是。。。。。
  }
 }
 //人的位置是目的地
 else if (map[WhatMap][i][j] == 6)
 {
  //***********人的上面是空地

  if (map[WhatMap][i - 1][j] == 0)
  {
   map[WhatMap][i][j] = 2;
   map[WhatMap][i - 1][j] = 3;
  }
  //************人的上面是目的地
  else if (map[WhatMap][i - 1][j] == 2)
  {
   map[WhatMap][i][j] = 2;
   map[WhatMap][i - 1][j] = 6;
  }
  //*************人的上面是箱子

  else if (map[WhatMap][i - 1][j] == 4)
  {
   //1,***********箱子上面是目的地
   if (map[WhatMap][i - 2][j] == 2)
   {
    map[WhatMap][i][j] = 2;
    map[WhatMap][i - 1][j] = 3;
    map[WhatMap][i - 2][j] = 5;
   }
   //2,************箱子上面是空地
   else if (map[WhatMap][i - 2][j] == 0)
   {
    map[WhatMap][i][j] = 2;
    map[WhatMap][i - 1][j] = 3;
    map[WhatMap][i - 2][j] = 4;
   }
   //3,*************箱子上面是。。。。。
  }
 }
}

//判断游戏是否结束
int GameOver()
{
 //统计目的地的个数
 int flag = 0;
 for (int i = 0; i < 10; i++)
 {
  for (int j = 0; j < 10; j++)
  {
   if (map[WhatMap][i][j] == 2)flag++;
  }
 }

 //箱子到达目的地的个数
 int count = 0;
 for (int i = 0; i < 10; i++)
 {
  for (int j = 0; j < 10; j++)
  {
   if (map[WhatMap][i][j] == 4)count++;
  }
 }
 if (count == 0&&flag == 0 )return 1;
 else return 0;
}

运行效果:

游戏资源:

1.

2.

3.

4.

5.

6.

结束展示:

更多有趣的经典小游戏实现专题,分享给大家:

C++经典小游戏汇总

python经典小游戏汇总

python俄罗斯方块游戏集合

JavaScript经典游戏 玩不停

java经典小游戏汇总

javascript经典小游戏汇总

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • C++实现推箱子游戏

    一.项目简介 用两天闲余时间回顾了推箱子这款经典的小游戏,目前设置了5关,只能实现基本的人物移动.判断胜利条件,其他功能还未实现(例:撤回到上一步,自由选择关卡等),也顺便复习了C++的相关知识. 二. 代码区 Class Map(地图类) Map.h: #pragma once #define N 10 #define M 10 //地图类 class Map { public: Map(); ~Map(); void Init(); void ReadMapFile(int map[M][N

  • C++实现推箱子小游戏源码

    本文实例为大家分享了C++实现推箱子小游戏的具体代码,供大家参考,具体内容如下 功能尚为完善. // ConsoleApplication2.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> #include<windows.h> #define KEY_DOWN(vk_code) GetAsyncKeyState(vk_code) & 0x8000 ? 1 : 0 using

  • DEVC++实现推箱子小游戏

    推箱子小游戏(基于DEVC++),供大家参考,具体内容如下 #include<iostream> #include<stdio.h> #include<conio.h> #include <windows.h> using namespace std; void Game_Menu(HANDLE hout); void Game_description(HANDLE hout); void gotoxy(HANDLE hout, int x, int y);

  • C++基于easyx图形库实现推箱子游戏

    本文实例为大家分享了C++实现推箱子游戏的具体代码,供大家参考,具体内容如下 头文件: #include<stdio.h> #include<stdlib.h> //#include<Windows.h> #include<conio.h> #include<graphics.h> #include<stdbool.h> //播放音乐需要的头文件 #include <mmsystem.h> #pragma comment(

  • 基于C语言实现推箱子游戏

    本文实例为大家分享了C语言实现推箱子游戏的具体代码,供大家参考,具体内容如下 代码在vs2013上测试运行. 思想: 1):地图用二维数组实现,箱子.墙壁.人等事物用不同的数字表示,遍历二维数组,遇到不同的数字打印相应的图案即可. 2):按键移动原理:判断要移动的方向是怎样的障碍物,如果理论上可以移动的话,只需把对应位置的数字作相应更改即可. #include<stdio.h> #include<stdlib.h> #include<windows.h> #includ

  • C++基于EasyX图形库实现2048小游戏

    C++ 和 EasyX 图形库,实现2048小游戏,供大家参考,具体内容如下 MainGame2048.cpp /** Name: Game2048CoreClass*/ #include<iostream> #include<graphics.h> #include<stdio.h> #include<windows.h> #include<conio.h> #include<stdio.h> #include"Game2

  • C语言实现简单的推箱子游戏

    本文实例为大家分享了C语言实现简单的推箱子游戏的具体代码,供大家参考,具体内容如下 项目实现的具体方案: 先安装VS2019,后安装画图工具Easyx,安装以后就可以将推箱子中的(人物,墙壁,箱子目的地,箱子)的图片加载到程序中显示出来.游戏的实现是通过程序读取键盘中输入的字母,后控制加载到程序中的人物图片的移动实现小人的移动,通过人物图片和地板图片交换位置实现人物的行走,如果人物前面是箱子图片,箱子图片前面是地板图片,则人物图片和箱子图片一起移动,直到箱子图片前面是箱子目的地图片则箱子图片将箱

  • C语言+MySQL实现推箱子游戏

    目录 图片素材及源码 数据库SQL语句 操作数据库C++代码 database.h database.cpp 推箱子游戏代码 box_man.h box_man.cpp 图片素材及源码 下载链接 数据库SQL语句 create database box_man if not exists; use box_man; create table users ( id int not null auto_increment, username varchar(64) not null, passwor

  • JavaScript编写推箱子游戏

    推箱子游戏是老游戏了, 网上有各种各样的版本, 说下推箱子游戏的简单实现,以及我找到的一些参考视频和实例: 如下是效果图: 这个拖箱子游戏做了移动端的适配, 我使用了zepto的touch模块, 通过手指滑动屏幕就可以控制乌龟走不同的方向: 因为推箱子这个游戏比较简单, 直接用了过程式的方式写代码, 模块也就是两个View 和 Model, 剩下就是用户的事件Controller, 用户每一次按下键盘的方向键都会改变数据模型的数据,然后重新生成游戏的静态html, 然后用innerHTML方式插

  • Python使用tkinter模块实现推箱子游戏

    前段时间用C语言做了个字符版的推箱子,着实是比较简陋.正好最近用到了Python,然后想着用Python做一个图形界面的推箱子.这回可没有C那么简单,首先Python的图形界面我是没怎么用过,在网上找了一大堆教材,最后选择了tkinter,没什么特别的原因,只是因为网上说的多. 接下来就来和大家分享一下,主要分享两点,第一就是这个程序的实现过程,第二点就是我在编写过程中的一些思考. 一.介绍 开发语言:Python 3.7 开发工具:PyCharm 2019.2.4 日期:2019年10月2日

  • python实现推箱子游戏

    本文实例为大家分享了python实现推箱子游戏的具体代码,供大家参考,具体内容如下 题目描述: 最短路径为: uurrDDDDuuuulldRurDDDrddLLrruLuuulldRurDDDrdL u表示向上,d表示向下,l表示向左,r表示向右. 大写表示人推着箱子一起动,小写表示人自己走. 代码用BFS实现.状态要分推着箱子一起走和人单独走,这两种状态转移是不同的. 由于代码中注释较详细,这里不过多解释. 代码: # -*- coding: utf-8 -*- # @Time : 2017

  • 用C语言编写推箱子游戏

    本文实例为大家分享了C语言推箱子游戏的具体实现代码,供大家参考,具体内容如下 #include <stdio.h> #include <stdlib.h> #include<string.h> #include <conio.h> //行和列 #define ROW 10 #define COL 11 /* run this program using the console pauser or add your own getch, system(&quo

  • C语言推箱子游戏实现代码

    推箱子游戏的运行规则:在街道上上小人推动箱子移动,直到把箱子移动到目的地. 思路分析: 小人及箱子的移动就是小人或者箱子和路的交换: 1 定义二维字符数组,存储地图 2 显示地图,提示游戏玩法 3 记录小人及箱子位置,并定义字符变量接收用户输入方向 4 循环判断语句 1).小人的下一步是否为路,如果为路,则移动并记录小人新位置信息 2).小人的下一步如果不是路,在判断是否为箱子,如果是箱子,在判断箱子的下一个位置是否是路,如果是路,则移动箱子和小人 3). 刷新地图 4) .判断箱子的位置,如果

随机推荐