用C++实现推箱子

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

// 1.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
#include <stdio.h>//■
#include <cstdlib>
#include <conio.h>
using std::cout;
const int row = 12;
const int col = 13;
int x = 1;
int y = 11;
int map[row][col] = {
  {2,2,2,2,2,2,2,2,2,2,2,2,2},
  {2,0,0,0,0,0,0,0,0,0,0,5,2},
  {2,0,0,0,0,0,0,0,0,0,3,0,2},
  {2,0,0,0,0,0,0,0,0,0,0,0,2},
  {2,0,0,0,0,0,0,0,1,0,0,0,2},
  {2,0,0,0,0,0,0,0,0,0,0,0,2},
  {2,0,0,0,0,0,0,0,0,0,0,0,2},
  {2,0,0,0,0,0,0,0,0,0,0,0,2},
  {2,0,0,0,0,0,0,0,0,0,0,0,2},
  {2,0,0,0,0,0,0,0,0,0,0,0,2},
  {2,0,0,0,0,0,0,0,0,0,0,0,2},
  {2,2,2,2,2,2,2,2,2,2,2,2,2},
};

void draw() {
  int i;
  for (i = 0; i < 12; i++)
  {
    for (int j = 0; j < 13; j++)
    {
      switch (map[i][j])
      {
      case 0:
      {
        cout << " ";//0代表可以走的空格
        break;
      }
      case 1:
      {
        cout << "★";//1代表箱子,用我就★代替了
        break;
      }
      case 2:
      {
        cout << "■";//2代表了墙,不能逾越
        break;
      }
      case 3:
      {
        cout << "☆";
        break;
      }

      case 5:
      {
        cout << "♀";//5代表了人,可移动
        break;
      }
      }
    }
    cout << "\n";
  }
}

void move(int _x, int _y) {
  if (map[x + _x][y + _y] == 2 || map[x + _x][y + _y] == 3 ||
    map[x + _x][y + _y] == 5) {//判断边界人不能走出墙外
    return;
  }
  if (map[x + _x][y + _y] == 1) {
    if (map[x + 2 * _x][y + 2 * _y] == 2) {
      return;
    }
    map[x + _x][y + _y] = 0;
    map[x + 2 * _x][y + 2 * _y] = 1;
    move(_x, _y);
    return;
  }
  map[x][y] = 0;
  x += _x;
  y += _y;
  map[x][y] = 5;
  draw();

}
void step(char o) {
  switch (o) {
  case 'w': {//就像cf,cs那样,wsad代表上下左右移动

    move(-1, 0);
    break;
  }
  case 's': {
    move(1, 0);
    break;
  }
  case 'd': {
    move(0, 1);
    break;
  }
  case 'a': {
    move(0, -1);
    break;
  }
  }
}

int main()
{
  while (true) {
    draw();//根据二维数组的值来进行绘图
    step(_getch());//直接获取屏幕输入
    system("cls");//清屏来实现动画效果
  }
}

再为大家分享一段实现代码:谢谢原作者的分享

推箱子是一个经典的c++题目,用w,a,s,d移动,效果自看

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int i,j;
void draw_map(int map[10][12]); //声明画图函数
int main()
{
 system("title 李柏衡");
 char input;
 int count=0;  //定义记分变量
 int map[10][12] = {{2,2,2,2,2,1,1,1,1,1,2,2},
 {1,1,1,1,2,1,0,0,0,1,1,2},
 {1,0,0,1,1,1,0,1,0,0,1,2},
 {1,0,4,3,3,3,3,3,1,0,1,1},
 {1,0,0,1,1,3,3,3,4,0,0,1},
 {1,0,0,0,0,4,1,1,4,1,0,1},
 {1,0,4,1,4,0,0,0,4,0,0,1},
 {1,1,0,6,0,1,1,1,4,1,0,1},
 {2,1,1,1,1,1,2,1,0,0,0,1},
 {2,2,2,2,2,2,2,1,1,1,1,1}
 };
 while (1)  //死循环,等待用户命令
 {
 system("CLS");
 for (i=0;i<12;i++)
 {
  printf("%d",i);
 }
 printf("\n");
 /*for (i=1;i<10;i++)
 {
  printf("%d\n",i);
 }*/
 printf("\n");
 draw_map(map);
 printf("当前得分:%d\n",count);
 //找初始位置
 for (i=0;i<10;i++)
 {
  for (j=0;j<12;j++)
  {
  if (map[i][j]==6||map[i][j]==9)
   break;
  }
  if (map[i][j]==6||map[i][j]==9)
  break;
 }
 printf("您的当前坐标(%d,%d)",i,j);
 input = getch();  //用getch()函数无需回车确认地获取用户输入,用于控制行走方向。
 switch (input)
 {
 case 'w':
  //如果人前面是空地。 //0代表空地 6代表人 //3代表目的地
  if(map[i-1][j]==0)
  {
  map[i-1][j]=6+0; //人往前走一步,ID为人的ID()加上空地的ID()。
  if(map[i][j]==9) //如果当前人站的位置为目的地,则ID为(即人的ID()加上目的地ID())。
   map[i][j]=3; //将人往前走一步后原地的ID修改为空地ID()。
  else
   map[i][j]=0;  //否则原地ID修改为空地ID 。
  }
  //如果人前面是目的地。
  else if((map[i-1][j]==3)||(map[i-1][j]==9))
  {
  map[i-1][j]=6+3; //人往前走一步,ID为人ID+目的地ID=9。
  if(map[i][j]==9) //如果原地也是目的地(ID为)。
   map[i][j]=3; //人走后把原地ID修改回目的地ID。
  else
   map[i][j]=0; //否则原地ID修改为为空地ID
  }
  //如果人前面是箱子。//4代表箱子  //7箱子进入目的地
  else if(map[i-1][j]==4)
  {
  //如果人前面是箱子,而箱子前面是空地。
  if (map[i-2][j]==0)
  {
   map[i-2][j]=4; //人推箱子往前走一步,把空地ID修改为箱子ID()
   //下面是对箱子原地进行判断
   if(map[i-1][j]==7) //如果箱子原地为目的地。
   map[i-1][j]=9; //人站在箱子的原地(目的地)时该地ID应该为人的ID+目的地ID=9。
   else
   map[i-1][j]=6; //否则,人站在了原来的空地上,ID应该为+0=6。
   //下面是对人原地进行判断
   if(map[i][j]==9) //如果之前是目的地。
   map[i][j]=3; //人走了之后修改回目的地ID。
   else
   map[i][j]=0; //否则就是空地。
  }
  //如果人的前面是箱子,而箱子前面是目的地。
  else if (map[i-2][j]==3)
  {
   map[i-2][j]=7;  //ID为(目的地ID()+箱子ID()=7),表示已经把箱子推入了目的地。
   count++;
   //下面是对箱子原先位置的判断,同上。
   if(map[i-1][j]==7)
   map[i-1][j]=9;
   else
   map[i-1][j]=6;
   //下面是对人原先位置进行判断,同上。
   if(map[i][j]==9)
   map[i][j]=3;
   else
   map[i][j]=0;
  }
  }
  //如果人前面是已经进入某目的地的箱子(ID=7)。
  else if(map[i-1][j]==7)
  {
  //如果人前面是已经进入某目的地的箱子,而箱子前面是空地。
  if(map[i-2][j]==0)
  {
   count--;
   map[i-2][j]=4;  //把箱子重新推到空地上,ID=箱子ID+空地ID=4。
   map[i-1][j]=9;  //人自然而然的就站在了原先的目的地上了。
   //下面是对人原先地进行判断,方法同上。
   if(map[i][j]==9)
   map[i][j]=3;
   else
   map[i][j]=0;
  }
  //如果人前面是已经进入某目的地的箱子,而箱子前面是另一目的地。
  if(map[i-2][j]==3)
  {
   map[i-2][j]=7;  //把箱子推入了另一目的地,自然,ID也应是。
   map[i-1][j]=9;  //人站在了目的地上。
   //下面是对人原先站立地进行判断,方法同上。
   if(map[i][j]==9)
   map[i][j]=3;
   else
   map[i][j]=0;
  }
  }
  break;
 case 's':
  //如果人前面是空地。
  if(map[i+1][j]==0)
  {
  map[i+1][j]=6+0; //人往前走一步,ID为人的ID()加上空地的ID()。
  if(map[i][j]==9) //如果当前人站的位置为目的地,则ID为(即人的ID()加上目的地ID())。
   map[i][j]=3; //将人往前走一步后原地的ID修改为空地ID()。
  else
   map[i][j]=0;  //否则原地ID修改为空地ID 。
  }
  //如果人前面是目的地。
  else if(map[i+1][j]==3)
  {
  map[i+1][j]=6+3; //人往前走一步,ID为人ID+目的地ID=9。
  if(map[i][j]==9) //如果原地也是目的地(ID为)。
   map[i][j]=3; //人走后把原地ID修改回目的地ID。
  else
   map[i][j]=0; //否则原地ID修改为为空地ID
  }
  //如果人前面是箱子。
  else if(map[i+1][j]==4)
  {
  //如果人前面是箱子,而箱子前面是空地。
  if (map[i+2][j]==0)
  {
   map[i+2][j]=4; //人推箱子往前走一步,把空地ID修改为箱子ID()
   //下面是对箱子原地进行判断
   if(map[i+1][j]==7) //如果箱子原地为目的地。
   map[i+1][j]=9; //人站在箱子的原地(目的地)时该地ID应该为人的ID+目的地ID=9。
   else
   map[i+1][j]=6; //否则,人站在了原来的空地上,ID应该为+0=6。
   //下面是对人原地进行判断
   if(map[i][j]==9) //如果之前是目的地。
   map[i][j]=3; //人走了之后修改回目的地ID。
   else
   map[i][j]=0; //否则就是空地。
  }
  //如果人的前面是箱子,而箱子前面是目的地。
  else if (map[i+2][j]==3)
  {
   map[i-2][j]=7;  //ID为(目的地ID()+箱子ID()=7),表示已经把箱子推入了目的地。
   count++;
   //下面是对箱子原先位置的判断,同上。
   if(map[i+1][j]==7)
   map[i+1][j]=9;
   else
   map[i+1][j]=6;
   //下面是对人原先位置进行判断,同上。
   if(map[i][j]==9)
   map[i][j]=3;
   else
   map[i][j]=0;
  }
  }
  //如果人前面是已经进入某目的地的箱子(ID=7)。
  else if(map[i+1][j]==7)
  {
  //如果人前面是已经进入某目的地的箱子,而箱子前面是空地。
  if(map[i+2][j]==0)
  {
   count--;
   map[i+2][j]=4;  //把箱子重新推到空地上,ID=箱子ID+空地ID=4。
   map[i+1][j]=9;  //人自然而然的就站在了原先的目的地上了。
   //下面是对人原先地进行判断,方法同上。
   if(map[i][j]==9)
   map[i][j]=3;
   else
   map[i][j]=0;
  }
  //如果人前面是已经进入某目的地的箱子,而箱子前面是另一目的地。
  if(map[i+2][j]==3)
  {
   map[i+2][j]=7;  //把箱子推入了另一目的地,自然,ID也应是。
   map[i+1][j]=9;  //人站在了目的地上。
   //下面是对人原先站立地进行判断,方法同上。
   if(map[i][j]==9)
   map[i][j]=3;
   else
   map[i][j]=0;
  }
  }
  break;
 case 'a':
  //如果人前面是空地。
  if(map[i][j-1]==0)
  {
  map[i][j-1]=6+0; //人往前走一步,ID为人的ID()加上空地的ID()。
  if(map[i][j]==9) //如果当前人站的位置为目的地,则ID为(即人的ID()加上目的地ID())。
   map[i][j]=3; //将人往前走一步后原地的ID修改为空地ID()。
  else
   map[i][j]=0;  //否则原地ID修改为空地ID 。
  }
  //如果人前面是目的地。
  else if(map[i][j-1]==3)
  {
  map[i][j-1]=6+3; //人往前走一步,ID为人ID+目的地ID=9。
  if(map[i][j]==9) //如果原地也是目的地(ID为)。
   map[i][j]=3; //人走后把原地ID修改回目的地ID。
  else
   map[i][j]=0; //否则原地ID修改为为空地ID
  }
  //如果人前面是箱子。
  else if(map[i][j-1]==4)
  {
  //如果人前面是箱子,而箱子前面是空地。
  if (map[i][j-2]==0)
  {
   map[i][j-2]=4; //人推箱子往前走一步,把空地ID修改为箱子ID()
   //下面是对箱子原地进行判断
   if(map[i][j-1]==7) //如果箱子原地为目的地。
   map[i][j-1]=9; //人站在箱子的原地(目的地)时该地ID应该为人的ID+目的地ID=9。
   else
   map[i][j-1]=6; //否则,人站在了原来的空地上,ID应该为+0=6。
   //下面是对人原地进行判断
   if(map[i][j]==9) //如果之前是目的地。
   map[i][j]=3; //人走了之后修改回目的地ID。
   else
   map[i][j]=0; //否则就是空地。
  }
  //如果人的前面是箱子,而箱子前面是目的地。
  else if (map[i][j-2]==3)
  {
   count++;
   map[i][j-2]=7;  //ID为(目的地ID()+箱子ID()=7),表示已经把箱子推入了目的地。
   //下面是对箱子原先位置的判断,同上。
   if(map[i][j-1]==7)
   map[i][j-1]=9;
   else
   map[i][j-1]=6;
   //下面是对人原先位置进行判断,同上。
   if(map[i][j]==9)
   map[i][j]=3;
   else
   map[i][j]=0;
  }
  }
  //如果人前面是已经进入某目的地的箱子(ID=7)。
  else if(map[i][j-1]==7)
  {
  //如果人前面是已经进入某目的地的箱子,而箱子前面是空地。
  if(map[i][j-2]==0)
  {
   count--;
   map[i][j-2]=4;  //把箱子重新推到空地上,ID=箱子ID+空地ID=4。
   map[i][j-1]=9;  //人自然而然的就站在了原先的目的地上了。
   //下面是对人原先地进行判断,方法同上。
   if(map[i][j]==9)
   map[i][j]=3;
   else
   map[i][j]=0;
  }
  //如果人前面是已经进入某目的地的箱子,而箱子前面是另一目的地。
  if(map[i][j-2]==3)
  {
   map[i][j-2]=7;  //把箱子推入了另一目的地,自然,ID也应是。
   map[i][j-1]=9;  //人站在了目的地上。
   //下面是对人原先站立地进行判断,方法同上。
   if(map[i][j]==9)
   map[i][j]=3;
   else
   map[i][j]=0;
  }
  }
  break;
 case 'd':
  //如果人前面是空地。
  if(map[i][j+1]==0)
  {
  map[i][j+1]=6+0; //人往前走一步,ID为人的ID()加上空地的ID()。
  if(map[i][j]==9) //如果当前人站的位置为目的地,则ID为(即人的ID()加上目的地ID())。
   map[i][j]=3; //将人往前走一步后原地的ID修改为空地ID()。
  else
   map[i][j]=0;  //否则原地ID修改为空地ID 。
  }
  //如果人前面是目的地。
  else if(map[i][j+1]==3)
  {
  map[i][j+1]=6+3; //人往前走一步,ID为人ID+目的地ID=9。
  if(map[i][j]==9) //如果原地也是目的地(ID为)。
   map[i][j]=3; //人走后把原地ID修改回目的地ID。
  else
   map[i][j]=0; //否则原地ID修改为为空地ID
  }
  //如果人前面是箱子。
  else if(map[i][j+1]==4)
  {
  //如果人前面是箱子,而箱子前面是空地。
  if (map[i][j+2]==0)
  {
   map[i][j+2]=4; //人推箱子往前走一步,把空地ID修改为箱子ID()
   //下面是对箱子原地进行判断
   if(map[i][j+1]==7) //如果箱子原地为目的地。
   map[i][j+1]=9; //人站在箱子的原地(目的地)时该地ID应该为人的ID+目的地ID=9。
   else
   map[i][j+1]=6; //否则,人站在了原来的空地上,ID应该为+0=6。
   //下面是对人原地进行判断
   if(map[i][j]==9) //如果之前是目的地。
   map[i][j]=3; //人走了之后修改回目的地ID。
   else
   map[i][j]=0; //否则就是空地。
  }
  //如果人的前面是箱子,而箱子前面是目的地。
  else if (map[i][j+2]==3)
  {
   count++;
   map[i][j+2]=7;  //ID为(目的地ID()+箱子ID()=7),表示已经把箱子推入了目的地。
   //下面是对箱子原先位置的判断,同上。
   if(map[i][j+1]==7)
   map[i][j+1]=9;
   else
   map[i][j+1]=6;
   //下面是对人原先位置进行判断,同上。
   if(map[i][j]==9)
   map[i][j]=3;
   else
   map[i][j]=0;
  }
  }
  //如果人前面是已经进入某目的地的箱子(ID=7)。
  else if(map[i][j+1]==7)
  {
  //如果人前面是已经进入某目的地的箱子,而箱子前面是空地。
  if(map[i][j+2]==0)
  {
   count--;
   map[i][j+2]=4;  //把箱子重新推到空地上,ID=箱子ID+空地ID=4。
   map[i][j+1]=9;  //人自然而然的就站在了原先的目的地上了。
   //下面是对人原先地进行判断,方法同上。
   if(map[i][j]==9)
   map[i][j]=3;
   else
   map[i][j]=0;
  }
  //如果人前面是已经进入某目的地的箱子,而箱子前面是另一目的地。
  if(map[i][j+2]==3)
  {
   map[i][j+2]=7;  //把箱子推入了另一目的地,自然,ID也应是。
   map[i][j+1]=9;  //人站在了目的地上。
   //下面是对人原先站立地进行判断,方法同上。
   if(map[i][j]==9)
   map[i][j]=3;
   else
   map[i][j]=0;
  }
  }
  break;
 }
 if(count==8)  //如果分数达到分
 {
  system("CLS"); //清屏
  draw_map(map);
  break;  //退出死循环
 }
 }
 printf("\n恭喜你,过关了!!\n"); //过关提示
 return 0;
}
void draw_map(int map[10][12])
{

 for(i=0;i<10;i++)
 {
 for(j=0;j<12;j++)
 {
  switch(map[i][j])
  {
  case 0:
  printf(" "); //数字代表道路
  break;
  case 1:
  printf("#"); //数字代表墙壁
  break;
  case 2:
  printf(" "); //数字是游戏边框的空白部分
  break;
  case 3:
  printf("!"); //数字代表目的地
  break;
  case 4:
  printf("*"); //数字代表箱子
  break;
  case 7:
  printf("$"); //数字代表箱子进入目的地
  break;
  case 6:
  printf("@"); //数字代表人
  break;
  case 9:
  printf("@"); //数字代表人进入目的地
  break;
  }
 }
 printf("\n");  //分行输出
 }
}

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

(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

  • 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++实现简单推箱子小游戏

    本文实例为大家分享了C++实现简单推箱子的具体代码,供大家参考,具体内容如下 游戏演示 代码展示 #include<stdio.h> #include<stdlib.h> #include<getch.h> int main(int argc,const char*argv[]) { int cut=0; int a[8][8]={ {0,0,3,3,3,3,0,0}, {0,0,3,5,5,3,0,0}, {0,0,3,0,5,3,0,0}, {0,3,0,0,4,5

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

  • JavaScript编写推箱子游戏

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

  • android自定义view实现推箱子小游戏

    本文实例为大家分享了android推箱子游戏的具体实现代码,供大家参考,具体内容如下 自定义view: package com.jisai.materialdesigndemo.tuixiangzhi; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import androi

  • js推箱子小游戏步骤代码解析

    推箱子小游戏大家肯定都玩过,之所以写这篇文章,是觉得这个小游戏足够简单好理解 demo: 步骤解析: 本文代码已经放在了github上面了,里面也进行了很详细的代码注释,可以copy下来,在本地运行一下看看. 1. 渲染地图 html结构: html结构十分简单,只要弄一堆div,来放置地图的class就可以了,我这里初始化了12*9个div,地图里最多九行高度. 这些div都是同样大小,地图渲染出来区别的只是颜色的不同. 地图函数: var box=$('.box div'); //地图使用的

  • 易语言制作推箱子小游戏的代码

    DLL命令表 .版本 2 .DLL命令 写配置文件, 整数型, , "WritePrivateProfileStringA", , 如果配置文件不存在则将被创建 .参数 小节名, 文本型, , 就是用中括号括起来的内容 .参数 项目名, 文本型, , 就是等号前边的内容 .参数 项目值, 文本型, , 就是等号后面的内容 .参数 文件名, 文本型, , 就是你要写入的那个文件 .DLL命令 读配置整数, 整数型, , "GetPrivateProfileIntA"

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

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

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

    很早就想过做点小游戏了,但是一直没有机会动手.今天闲来无事,动起手来.过程还是蛮顺利的,代码也不是非常难.今天给大家分享一下~ 一.介绍 开发语言:C语言 开发工具:Dev-C++ 5.11 日期:2019年9月28日 作者:ZackSock 也不说太多多余的话了,先看一下效果图: 游戏中的人物.箱子.墙壁.球都是字符构成的.通过wasd键移动,规则的话就是推箱子的规则,也就不多说了. 二.代码实现 关于代码方面,我尽可能讲的细致.希望大家可以理解~ (1)方法列表 //主函数 void mai

  • 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) .判断箱子的位置,如果

随机推荐