C语言实现推箱子小游戏

这是一个使用C语言编写的推箱子小游戏程序。程序包括主菜单、关卡选择、游戏操作和地图显示等功能。玩家可以通过键盘输入上下左右方向键进行游戏操作,尝试将所有箱子推到指定位置来过关。
摘要由CSDN通过智能技术生成
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define N 1000
/*
r目的地 
o箱子 
i人 
x墙 
 路(空格) 
w上 
a左 
d右 
s下 
*/
void menu();
int level1();
int level2();
void swap(char*,char*);
int opera(char *p,int *ren,int xzs);
void dituprint();


void menu()
{
     printf("推箱子\n");
     printf("1.新游戏          2.选关\n");
     printf("0.退出\n");
}
     
void xuanguan()
{
     int choice_level;
     while(1)
     {
     printf("请选择关卡:\n");
     scanf("%d",&choice_level);
     switch(choice_level)
     {
      case 1:
           level1();
           break;
      case 2:
           level2();
           break;
      default:
              printf("输入错误,请重新选择关卡!"); 
      
     }
     }
}
     
     void swap(char *a,char *b)
     {
         
          char ch;
          ch=*a;
          *a=*b;
          *b=ch;
          }
          
     void dituprint(char *p)
     {
        
          for(int i=0;i<9;i++)
          {
                  for(int j=0;j<9;j++)
                  printf("%3c",p[i*9+j]);
                  printf("\n");
                  }
          }
     int opera(char *p,int *ren,int xzs)
     {
         dituprint(p);
         while(1)
         {
           for(int i=1,panduan=0;i<=xzs;i++)
             {
                if(p[ren[i]]=='o')
                   {
                     panduan+=1;
                     printf("panduan=%d\n",panduan);
                   }
                if(panduan==xzs)
                   {
                    printf("恭喜你,过关啦!");
                    getchar();
                    return 0; 
                    }
              }
         char ch;
         printf("你的按键是:");
         scanf("%c",&ch);
         switch(ch)
         {
           case 'w':
              {
                if(p[ren[0]]=='r')
                  {
                    if(p[ren[0]-9]=='r')
                      {
                        ren[0]-=9;
                        p[ren[0]='i'];
                        p[ren[0]+9]='r';
                        break;
                      }
                    if(p[ren[0]-9]=='x')
                      {
                        printf("人碰到墙了  换按其他键1哇>>>>>");
                        break;
                      }
                    if(p[ren[0]-9]==' ')
                      {
                        ren[0]-=9;
                        p[ren[0]='i'];
                        p[ren[0]-9]='r';
                        break;
                       }
                     if(p[ren[0]-9]=='o')
                       {
                         if(p[ren[0]-18]=='x'||'o')
                            printf("箱子碰到了   换按其他键1哇>>>>>");break;
                              if(p[ren[0]-18]=='r')
                                 {
                                    p[ren[0]-18]='o';
                                    p[ren[0]-9]='i';
                                    p[ren[0]]='r';
                                    ren[0]-=9;
                                    break;                                                                                  
                                  }
                               if(p[ren[0]-18]=='o')
                                  printf("推不动诶   换按其他键1哇>>>>>");break;
                               if(p[ren[0]-18]==' ')
                                  {
                                    swap(&p[ren[0]-9],&p[ren[0]-18]);
                                    swap(&p[ren[0]],&p[ren[0]-9]);
                                    p[ren[0]]='r';
                                    ren[0]-=9;
                                    break;
                                  }                    
                        }                    
                    }
                        else
                          {
                            if(p[ren[0]-9]=='x')
                              {
                                 printf("人碰到墙了  换按其他键2>>>>>");
                                 break;
                              }
                            if(p[ren[0]-9]==' ')
                              {
                                 swap(&p[ren[0]],&p[ren[0]-9]);
                                 ren[0]-=9;
                                 break;                                                               
                              }
                             if(p[ren[0]-9]=='o')
                              {
                                 if(p[ren[0]-18]=='o'||p[ren[0]-18]=='x')
                                    {
                                      printf("走不动了  换按其他键哇。。。。\n");
                                      break;
                                    }
                                 if(p[ren[0]-18]=='r')
                                    {
                                       p[ren[0]-18]='o';
                                       p[ren[0]-9]='i';
                                       p[ren[0]]=' ';
                                       ren[0]-=9;
                                       break;
                                     }
                               }         
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值