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,3,0},
   {3,3,0,4,0,0,3,3},
   {3,0,0,3,4,4,0,3},
   {3,0,0,2,0,0,0,3},
   {3,3,3,3,3,3,3,3}};
 int x=6,y=3;
 for(;;)
 {
 int cunt=0;
 system("clear");
 for(int i=0;i<8;i++)
 {
  for(int j=0;j<8;j++)
  {
  if(a[i][j]==9)
  {
  cunt++;
  }
  switch(a[i][j])
  {
  case 0:printf(" ");break;
  case 2:printf("@ ");break;//人
  case 3:printf("# ");break;//墙
  case 4:printf("$ ");break;//箱子
  case 5:printf("o ");break;//目标位置
  case 7:printf("@ ");break;
  case 9:printf("$ ");break;
  }
  }
  printf("\n");
 }
 if(4==cunt)
 {
  printf("成功\n步数:%d",cut);
  return 0;
 }
 //根据数据的大小来判断当前的坐标上的情况
 switch(getch())
 {
 case 183:
   if(0!=x&&3==a[x-1][y])
  {
  a[x][y]=2;
  }
  else if(5==a[x-1][y]||0==a[x-1][y])
  {
  a[x][y]-=2;
  a[x-1][y]+=2;
  x--;
  cut++;
  }
  else if((5==a[x-2][y]||0==a[x-2][y])&&(4==a[x-1][y]||9==a[x-1][y]))
  {
  a[x-2][y]+=4;
  a[x-1][y]-=4;
  a[x-1][y]+=2;
  a[x][y]-=2;
  x--;cut++;
  }break;
 case 184:
  if(0!=x&&3==a[x+1][y])
  {
  a[x][y]=2;
  }
  else if((5==a[x+1][y])||(0==a[x+1][y]))
  {
  a[x][y]-=2;
  a[x+1][y]+=2;
  x++;cut++;
  }
  else if((5==a[x+2][y]||0==a[x+2][y])&&(4==a[x+1][y]||9==a[x+1][y]))
  {
  a[x+2][y]+=4;
  a[x+1][y]-=4;
  a[x+1][y]+=2;
  a[x][y]-=2;
  x++;cut++;
  }break;
 case 185:
   if(0!=x&&3==a[x][y+1])
  {
  a[x][y]=2;
  }
  else if(5==a[x][y+1]||0==a[x][y+1])
  {
  a[x][y]-=2;
  a[x][y+1]+=2;
  y++;cut++;
  }
  else if((0==a[x][y+2]||5==a[x][y+2])&&(4==a[x][y+1]||9==a[x][y+1]))
  {
  a[x][y+2]+=4;
  a[x][y+1]-=4;
  a[x][y+1]+=2;
  a[x][y]-=2;
  y++;cut++;
  }break;
 case 186:
   if(0!=x&&3==a[x][y-1])
  {
  a[x][y]=2;
  }
  else if(5==a[x][y-1]||0==a[x][y-1])
  {
  a[x][y]-=2;
  a[x][y-1]+=2;
  y--;cut++;
  }
  else if((0==a[x][y-2]||5==a[x-1][y])&&(4==a[x][y-1]||9==a[x][y-1]))
  {
  a[x][y-2]+=4;
  a[x][y-1]-=4;
  a[x][y-1]+=2;
  a[x][y]-=2;
  y--;cut++;
  }break;
 }
}
}

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

(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++基于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(

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

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

    本文实例为大家分享了C语言实现简单推箱子小游戏的具体代码,供大家参考,具体内容如下 此推箱子游戏可以实现人物移动,箱子移动,人物不出框,自义定文件关卡,重新开始以及回退复位等功能的实现,由于系统或版本问题,关卡和人物及物体未做美化处理,希望美化的可自行美化. 1.所用到的宏 #include <stdio.h> #include <stdlib.h> #include <getopt.h> #define MAX_ROWS 16 #define MAX_CLOS 16

  • 利用c++写一个简单的推箱子小游戏

    效果图 相信各位都肯定完整这种推箱子的小游戏.游戏玩法很简单,那就是一个人把所有的箱子推动到对应的位置那就可以赢了. 那么我们接下来看看这个推箱子的游戏改怎么写 char map[10][10]= { {'#','#','#','#','#','#','#','#','#','#'}, {'#','#','#','#',' ',' ','!',' ',' ','#'}, {'#',' ',' ',' ',' ','o',' ',' ',' ','#'}, {'#',' ',' ',' ',' '

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

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

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

    本文实例为大家分享了C语言实现推箱子小游戏的具体代码,供大家参考,具体内容如下 本次游戏是个推箱子第一关最简单的小游戏 有详细注释,下面是做出来的游戏界面 游戏操作说明和功能说明: 1.按wasd控制小人的上下左右移动. 2.按 r 重新开始游戏 3.游戏开始有操作介绍 4.游戏结束有胜利提示 游戏原理分析 1.游戏开始时的星星个数 = 箱子在星星上的个数时 , 游戏胜利. 2.按 r 键重新开始游戏, 我们需要定义一个量 map_1[8][8] 来保存游戏初始时的界面, 操作时我们将其赋值给

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

    本文实例为大家分享了C/C++实现推箱子小游戏的具体代码,供大家参考,具体内容如下 效果演示 实现功能 如上图所示.按键控制小猪的运动,推箱子到达目的地. 如何实现 1.首先思考要保存箱子,小猪等信息,添加多个map可以用到三维数组. 2.定义小猪,箱子,墙,空地等信息在三维数组里的数值. 空地             0       墙               1  目的地           2     箱子             3  猪               4  2+4=6

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

    前言 推箱子小游戏相信是很多人的同年记忆了,今天用c++语言来尝试下,用的是vs编译器. 代码还有很多可以优化的地方,为了更直观了解函数的形参和实参,所以地图没有用全局变量声明了,其实用全局变量声明会简洁很多. 头文件和main函数分享在最下面了. 提示:以下是本篇文章正文内容,下面案例可供参考 一.初始化游戏数据 void GameInit(int(*&pMap)[10][10], int index)//两张地图数据 { // static:返回静态全局区变量 static int loca

  • java二维数组实现推箱子小游戏

    本文实例为大家分享了java实现推箱子小游戏的具体代码,供大家参考,具体内容如下 二维数组 二维数组:类似于二维表格(有很多层,每一层有多个房间的楼房) 数组声明: 数据类型[][]数据名 = new 数据类型[行数][列数]; 获取二维数组的长度:数组名.lengt 得到的是行数 数组名[行下标].length 得到的是列数 推箱子小游戏 import java.util.Random; import java.util.Scanner; /* * 推箱子的小游戏 */ public clas

随机推荐