所在位置:主页 > 程序语言 > C语言程序设计80行左右有理解的

C语言程序设计80行左右有理解的

发布时间:2023-11-14 16:40来源:www.sf1369.com作者:宇宇

/*

    姓名:

    日期:2016年6月23日

    描述:推箱子游戏

*/

#include <stdio.h>

#include <stdlib.h>

#define ROWS  10//行

#define COLS 11//列

void main()//地图

{

 char maps[ROWS][COLS]={

 ##########,

 #   ###  #,

 #  O###  #,

 #  R    #,

 ####    #,

 #  ####  #,

 #    #,

 #    #####,

 #    ,

 ##########

};

 //获得地图上的人的初始坐标

 int currentPersonRow;

 int currentPersonCol;

 while (maps[8][10]!='O')//如果箱子到了指定的坐标,就跳出游戏,宣布游戏通过

 {

  bool dap=false;

  system(cls);//清屏

  for (int i = 0; i < ROWS; i++)//打印地图

  {

   for (int j = 0; j < COLS; j++)

   {

    printf(%C,maps[i][j]);

    if(maps[i][j]=='R')//获取人的位置

    {

    currentPersonRow=i;

    currentPersonCol=j;

    }

   }

   printf(\n);

  }

  printf(游戏规则:R是人,O是箱子,将箱子移动到出口处就算过关!\n);

  printf(w:向上移动、a:向左移动、s:向下移动、d:向右移动,q:退出游戏\n);

  char direction=getchar();

  fflush(stdin);

  switch (direction)//控制移动方向

  {

   case 'w':

   case 'W':

    if(maps[currentPersonRow-1][currentPersonCol]==' ')//判断人前面是不是空格

    {

    maps[currentPersonRow-1][currentPersonCol]='R';

    maps[currentPersonRow][currentPersonCol]=' ';

    }

    else if(maps[currentPersonRow-1][currentPersonCol]=='O')//判断人前面是不是箱子

    {

    if(maps[currentPersonRow-2][currentPersonCol]==' ')//如果箱子前面是空格

    {

    maps[currentPersonRow-2][currentPersonCol]='O';

    maps[currentPersonRow-1][currentPersonCol]='R';

    maps[currentPersonRow][currentPersonCol]=' ';

    }

    }

    break;

   case 's':

   case 'S':

    if(maps[currentPersonRow+1][currentPersonCol]==' ')//判断人前面是不是空格

    {

    maps[currentPersonRow+1][currentPersonCol]='R';

    maps[currentPersonRow][currentPersonCol]=' ';

    }

    else if(maps[currentPersonRow+1][currentPersonCol]=='O')//判断人前面是不是箱子

    {

    if(maps[currentPersonRow+2][currentPersonCol]==' ')//如果箱子前面是空格

    {

    maps[currentPersonRow+2][currentPersonCol]='O';

    maps[currentPersonRow+1][currentPersonCol]='R';

    maps[currentPersonRow][currentPersonCol]=' ';

    }

    }

    break;

   case 'a':

   case 'A':

    if(maps[currentPersonRow][currentPersonCol-1]==' ')//判断人前面是不是空格

    {

    maps[currentPersonRow][currentPersonCol-1]='R';

    maps[currentPersonRow][currentPersonCol]=' ';

    }

    else if(maps[currentPersonRow][currentPersonCol-1]=='O')//判断人前面是不是箱子

    {

    if(maps[currentPersonRow][currentPersonCol-2]==' ')//如果箱子前面是空格

    {

    maps[currentPersonRow][currentPersonCol-1]='R';

    maps[currentPersonRow][currentPersonCol]=' ';

    maps[currentPersonRow][currentPersonCol-2]='O';

    }

    }

    break;

   case 'd':

   case 'D':

    if(maps[currentPersonRow][currentPersonCol+1]==' ')//判断人前面是不是空格

    {

    maps[currentPersonRow][currentPersonCol+1]='R';

    maps[currentPersonRow][currentPersonCol]=' ';

    }

    else if(maps[currentPersonRow][currentPersonCol+1]=='O')//判断人前面是不是箱子

    {

    if(maps[currentPersonRow][currentPersonCol+2]==' ')//如果箱子前面是空格

    {

    maps[currentPersonRow][currentPersonCol+1]='R';

    maps[currentPersonRow][currentPersonCol]=' ';

    maps[currentPersonRow][currentPersonCol+2]='O';

    }

    }

    break;

    //退出游戏

   case 'q':

   case 'Q':

    dap=true;

    break;

  }

  if(dap)//退出游戏

  {

   break;

  }

 }

 printf(恭喜你,通关了!\n);

 system(pause);

}