C++实现简单推箱子小游戏

 更新时间:2020年08月24日 14:31:07   作者:变强也变秃了  
这篇文章主要为大家详细介绍了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;
 }
} 
}

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

C++经典小游戏汇总

python经典小游戏汇总

python俄罗斯方块游戏集合

JavaScript经典游戏 玩不停

java经典小游戏汇总

javascript经典小游戏汇总

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

相关文章

  • C++利用Opencv实现多个圆形检测

    C++利用Opencv实现多个圆形检测

    霍夫圆检测是opencv中用来检测圆的重要算法,简单的说,霍夫圆检测就是对图像中的弧线做切线,再在切点位置做切线的垂线,然后看这些垂线能交于一点的个数,这个在方法中是自己设定的
    2022-08-08
  • FFmpeg实现变速播放的两种方法总结

    FFmpeg实现变速播放的两种方法总结

    这篇文章主要为大家详细介绍了FFmpeg中实现变速播放的两种方法,文中的示例代码讲解详细,具有一定的学习价值,感兴趣的可以了解一下
    2023-07-07
  • VS+Qt+Halcon 显示图片,实现鼠标缩放、移动图片

    VS+Qt+Halcon 显示图片,实现鼠标缩放、移动图片

    本篇博文记录一下,用VS+Qt+Halcon实现对图片的读取以及鼠标缩放,移动(鼠标事件调用了halcon自带的算子)的过程。感兴趣的可以了解一下
    2021-08-08
  • 用C语言完整实现2048游戏

    用C语言完整实现2048游戏

    2048是一款数字益智游戏,初始数字则是由2+2组成的基数4。在操作方面的不同则表现为一步一格的移动,变成更为爽快的一次到底。相同数字的方况在靠拢、相撞时会相加。系统给予的数字方块不是2就是4,玩家要想办法在这小小的16格范围中凑出2048这个数字方块
    2021-11-11
  • Qt自定义控件实现线条型加载条

    Qt自定义控件实现线条型加载条

    这篇文章主要为大家详细介绍了Qt自定义控件实现线条型加载条,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-12-12
  • QT实现简单TCP通信

    QT实现简单TCP通信

    这篇文章主要为大家详细介绍了QT实现简单的TCP通信,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • C语言演示对归并排序算法的优化实现

    C语言演示对归并排序算法的优化实现

    这篇文章主要介绍了C语言演示对归并排序算法的优化实现,归并排序的最差时间复杂度为(n\log n),最优时间复杂为(n),存在可以改进的空间,需要的朋友可以参考下
    2016-05-05
  • VisualStudio2022提交git代码的方法实现

    VisualStudio2022提交git代码的方法实现

    本文主要介绍了VisualStudio2022提交git代码的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • QT应用程序cout输出中文乱码解决方法

    QT应用程序cout输出中文乱码解决方法

    本文主要介绍了QT应用程序cout输出中文乱码解决方法,文中通过图文的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-01-01
  • C/C++详解如何实现文件备份

    C/C++详解如何实现文件备份

    这篇文章主要介绍了C/C++详解如何实现文件备份,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06

最新评论