欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C/C++编写推箱子小游戏

程序员文章站 2022-06-23 09:08:39
本文实例为大家分享了c/c++编写推箱子小游戏的具体代码,供大家参考,具体内容如下我们用' #'来代表墙,‘o'来代表箱子,' * '代表终点,‘@'代表箱子已经到达终点,‘s来表示人'。注意:w,a...

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

我们用' #'来代表墙,‘o'来代表箱子,' * '代表终点,‘@'代表箱子已经到达终点,‘s来表示人'。
注意:w,a,s,d为方向键,而且要在英文格式下

运行示例:

C/C++编写推箱子小游戏

以下为完整代码:

/*

推箱子(示例二)


*/
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <conio.h>
int main()
{
 char a[12][12]={"##########",
     "##     ###",
                    "##o###   #",
                    "# s o  o #",
                    "# **# o ##",
                    "##**#   ##",
                    "##########",
                   };
    int x=3,y=2;
    int i;
    char ch;
    for(i=0;i<7;i++)
    puts(a[i]);
    
    while(a[4][2]!='@'||a[4][3]!='@'||a[5][2]!='@'||a[5][3]!='@')
    {
     
  ch=getch();
     if(ch=='s')
     {
         if(a[x+1][y]!='#'&&a[x+1][y]!='o'&&a[x+1][y]!='@') //如果只有人,没有箱子 
      {
       a[x][y]=' ';
       x++;
       a[x][y]='s';
   }
   else if(a[x+2][y]!='#'&&a[x+1][y]=='o'&&a[x+2][y]!='*') //如果是箱子和人一起走 
   {
    a[x][y]=' ';
    x++;
    a[x][y]='s';
    a[x+1][y]='o';
   }
   else if(a[x+2][y]!='#'&&(a[x+1][y]=='o'||a[x+1][y]=='@')&&a[x+2][y]=='*') //如果人和箱子一起走,并且前面是终点      
   {
    a[x][y]=' ';
    x++;
    a[x][y]='s'; 
    a[x+1][y]='@';
   }
  }
  
  if(ch=='w')
     {
      
      if(a[x-1][y]!='#'&&a[x-1][y]!='o'&&a[x-1][y]!='@') //如果只有人,没有箱子 
      {
       a[x][y]=' ';
       x--;
       a[x][y]='s';
       
   }
   else if(a[x-2][y]!='#'&&a[x-1][y]=='o'&&a[x-2][y]!='o') //如果是箱子和人一起走 
   {
    a[x][y]=' ';
    x--;
    a[x][y]='s';
    a[x-1][y]='o';

   }
   else if(a[x-2][y]!='#'&&(a[x-1][y]=='o'||a[x-1][y]=='@')&&a[x-2][y]=='*')  //如果人和箱子一起走,并且前面是终点      
   {
    a[x][y]=' ';
    x--;
    a[x][y]='s'; 
    a[x-1][y]='@';
   }
  }
  if(ch=='a')
     {
      
      if(a[x][y-1]!='#'&&a[x][y-1]!='o'&&a[x][y-1]!='@') //如果只有人,没有箱子 
      {
       a[x][y]=' ';
       y--;
       a[x][y]='s';
       
   }
   else if(a[x][y-2]!='#'&&a[x][y-1]=='o') //如果是箱子和人一起走 
   {
    a[x][y]=' ';
    y--;
    a[x][y]='s';
    a[x][y-1]='o';
   }
   else if(a[x][y-2]!='#'&&(a[x][y-1]=='o'||a[x][y-1]=='@')&&a[x][y-2]=='*') //如果人和箱子一起走,并且前面是终点      
   {
    a[x][y]=' ';
    y--;
    a[x][y]='s'; 
    a[x][y-1]='@';
   }
  }
  if(ch=='d')
     {
      
      if(a[x][y+1]!='#'&&a[x][y+1]!='o'&&a[x][y+1]!='@') //如果只有人,没有箱子 
      {
       a[x][y]=' ';
       y++;
       a[x][y]='s';
       
   }
   else if(a[x][y+2]!='#'&&a[x][y+1]=='o'&&a[x][y+2]!='o') //如果是箱子和人一起走 
   {
    a[x][y]=' ';
    y++;
    a[x][y]='s';
    a[x][y+1]='o';
   }
   else if(a[x][y+2]!='#'&&(a[x][y+1]=='o'||a[x][y+1]=='@')&&a[x][y+2]=='*'&&a[x][y+2]!='o')   //如果人和箱子一起走,并且前面是终点      
   {
    a[x][y]=' ';
    y++;
    a[x][y]='s'; 
    a[x][y+1]='@';
   }
  }
  if(a[4][2]!='@'&&a[4][2]!='s'&&a[4][2]!='*')
     {
      a[4][2]='*';
  }
  if(a[4][3]!='@'&&a[4][3]!='s'&&a[4][3]!='*')
     {
      a[4][3]='*';
  }
  if(a[5][2]!='@'&&a[5][2]!='s'&&a[5][2]!='*')
     {
      a[5][2]='*';
  }
  if(a[5][3]!='@'&&a[5][3]!='s'&&a[5][3]!='*')
     {
      a[5][3]='*';
  }
  if(a[1][2]=='o'||a[1][6]=='o'||a[2][8]=='o'||a[3][8]=='o'||a[5][5]=='o'||a[5][7]=='o')              //判断失败的情况 
  {
   break;
  }
  system("cls");
  for(i=0;i<7;i++)
     puts(a[i]);
 }
 system("cls");
 if(a[4][2]!='@'||a[4][3]!='@'||a[5][2]!='@'||a[5][3]!='@')
    printf("you lose!");
    else
    printf("you win!");
    sleep(3000);
    
 return 0;
}

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

相关标签: C++ 推箱子