搜索
查看: 477|回复: 5
打印 上一主题 下一主题

推箱子

[复制链接]
跳转到指定楼层
楼主
 楼主| 发表于 2018-7-28 17:05:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
5啊哈币

沙发
发表于 2018-7-28 20:06:44 | 只看该作者
推箱子咋啦。。。。。。。。。。。。。。。。。。。
板凳
发表于 2018-8-7 14:18:31 | 只看该作者
还以为是游戏就点进来了
地板
发表于 2018-8-14 20:18:43 | 只看该作者
#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;
                                     }
                               }                    
                         }
                    }
                 break;
                case 'a':
                        {
                          if(p[ren[0]]=='r')
                          {
                          if(p[ren[0]-1]=='r')
                          {
                                              ren[0]-=1;
                                              p[ren[0]]='i';
                                              p[ren[0]+1]='r';
                                              break;
                                              }
                          if(p[ren[0]-1]=='x')
                          {
                                              printf("人碰到墙了   换按其他键1哇>>>>>");
                                              break;
                                              }
                          if(p[ren[0]-1]==' ')
                          {
                                              ren[0]-=1;
                                              p[ren[0]]='i';
                                              p[ren[0]+9]='r';
                                              break;
                                              }
                          if(p[ren[0]-1]=='o')
                          {
                                              if(p[ren[0]-2]=='o'||p[ren[0]-2]=='x')
                                              {
                                                 printf("走不动了  换按其他键娃娃。。。。。\n");
                                                 break;
                                              }
                                              if(p[ren[0]-2]=='r')
                                              {
                                                                  p[ren[0]-2]='o';
                                                                  p[ren[0]-1]='i';
                                                                  p[ren[0]]=' ';
                                                                  ren[0]-=1;
                                                                  break;
                                                                  }
                                              if(p[ren[0]-2]==' ')
                                              {
                                                                p[ren[0]-2]='o';
                                                                p[ren[0]-1]='i';
                                                                p[ren[0]]=' ';
                                                                ren[0]-=1;
                                                                break;
                                                                }
                                              }
                                            }  
                            }
                            break;
                          case 's':
                               {
                                   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;      
                                                                       }
                                                                       if(p[ren[0]+18]==' ')
                                                                       {
                                                                            p[ren[0]+18]='o';
                                                                            p[ren[0]+9]='i';
                                                                            p[ren[0]]=' ';
                                                                            ren[0]+=9;
                                                                            break;      
                                                                       }
                                                                       }
                                                   }
                                                     }
                                                     break;
                                                     case'd':
                                                             {
                                                                       if(p[ren[0]]=='r')
                                                                       {
                                                                            if(p[ren[0]+1]=='r')
                                                                            {
                                                                                 ren[0]+=1;
                                                                                 p[ren[0]]='i';
                                                                                 p[ren[0]-1]='r';
                                                                                 break;
                                                                            }
                                                                            if(p[ren[0]+1]=='x')
                                                                            {
                                                                                 printf("人碰到墙了  换按其他键1哇>>>>>");
                                                                                 break;
                                                                            }
                                                                            if(p[ren[0]+1]==' ')
                                                                            {
                                                                                 ren[0]+=1;
                                                                                 p[ren[0]]='i';
                                                                                 p[ren[0]-1]='r';
                                                                                 break;
                                                                            }
                                                                            if(p[ren[0]+1]=='o')
                                                                            {
                                                                                 if(p[ren[0]+2]=='x'||'o')
                                                                                 printf("箱子碰到墙了  换按其他键1哇>>>>>>");
                                                                                 break;
                                                                                 if(p[ren[0]+2]=='r')
                                                                                 {
                                                                                 p[ren[0]+2]='o';
                                                                                 p[ren[0]+1]='i';
                                                                                 p[ren[0]]='r';
                                                                                 p[0]+=1;
                                                                                 break;
                                                                                 }
                                                                                 if(p[ren[0]+2]=='o')
                                                                                 printf("推不动诶  换按其他键1哇>>>>>");break;
                                                                                 if(p[ren[0]+2]==' ')
                                                                                 {
                                                                                 swap(&p[ren[0]+1],&p[ren[0]+2]);
                                                                                 swap(&p[ren[0]],&p[ren[0]-1]);
                                                                                 p[ren[0]]='r';
                                                                                 ren[0]+=1;
                                                                                 break;
                                                                                 }  
                                                                            }
                                                                       }
                                                                       else
                                                                       {
                                                                           if(p[ren[0]+1]=='x')
                                                                           {
                                                                                 printf("人碰到墙了,换按其他键哇2>>>>>");
                                                                                 break;
                                                                           }
                                                                           if(p[ren[0]+1]==' ')
                                                                           {
                                                                                 swap(&p[ren[0]],&p[ren[0]+1]);
                                                                                 ren[0]+=1;
                                                                                 break;
                                                                           }
                                                                           if(p[ren[0]+1]=='o')
                                                                           {
                                                                              if(p[ren[0]+2]=='o'||p[ren[0]+2]=='x')
                                                                              {
                                                                                  printf("走不动了!换按其他键哇。。。。。");
                                                                                  break;
                                                                              }
                                                                              if(p[ren[0]+2]=='r')
                                                                              {
                                                                                  p[ren[0]+2]='o';
                                                                                  p[ren[0]+1]='i';
                                                                                  p[ren[0]]=' ';
                                                                                  ren[0]+=1;
                                                                                  break;
                                                                              }
                                                                              if(p[ren[0]+2]==' ')
                                                                              {
                                                                                  p[ren[0]+2]='o';
                                                                                  p[ren[0]+1]='i';
                                                                                  p[ren[0]]=' ';
                                                                                  ren[0]+=1;
                                                                                  break;
                                                                              }
                                                                                               }
                                                                           }
                                                             }
                                                             break;
                                                             default:printf("操作错误!请确认后再重新操作。。。。。");
                                   }
                                   dituprint(p);
                   }
                   /*int panduan=0;
                   for(int i=1;i<xzs;i++)
                   {
                           if(p[ren[0]]=='o')panduan++;
                   }
                   if(panduan=(xzs-1)){getchar();break;}*/
                 }
                 return 0;
         }
         
         int level1()
         {
             printf("第一关\n");
             char ditu1[9*9]={
             '0','1','2','3','4','5','6','7','8',
             '1',' ',' ','x','x','x',' ',' ',' ',
             '2',' ',' ','x','r','x',' ',' ',' ',
             '3',' ',' ','x',' ','x','x','x','x',
             '4','x','x','x','o','x','o','r','x',
             '5','x','r',' ','o','i','x','x','x',
             '6','x','x','x','x','o','x',' ',' ',
             '7',' ',' ',' ','x','r','x',' ',' ',
             '8',' ',' ',' ','x','x','x',' ',' ',
                             };
              int ren1[5]={50,22,47,43,68};
              opera(ditu1,ren1,4);
              level2();
              return 0;
         }
            
         int level2()
         {
             printf("欢迎来到第二关\n");
             char ditu1[9*9]={
             '0','1','2','3','4','5','6','7','8',
             '1',' ',' ','x','x','x',' ',' ',' ',
             '2',' ',' ','x','r','x',' ',' ',' ',
             '3',' ',' ','x',' ','x','x','x','x',
             '4','x','x','x','o','x','o','r','x',
             '5','x','r',' ','o','i','x','x','x',
             '6','x','x','x','x','o','x',' ',' ',
             '7',' ',' ',' ','x','r','x',' ',' ',
             '8',' ',' ',' ','x','x','x',' ',' ',
                              };
              int  ren1[5]={50,22,47,43,68};
              opera(ditu1,ren1,4);
              level1();
              return 0;   
         }
         
int main()
          {
              int choice;
              menu();
              while(1)
              {
                      scanf("%d",&choice);
                      switch(choice)
                      {
                      case 0:
                           exit(0);
                      case 1:
                           {
                           level1();
                           break;
                           }
                      case 2:
                           {
                           xuanguan();
                           break;
                           }
                           default:
                           {
                           printf("操作错误!请确认正确后操作。。。。。\n");
                           }
                      }
              }
                      getchar();
                      return 0;
          }   
5#
发表于 2018-8-14 20:19:45 | 只看该作者
我哥一半我一半
呵呵呵
6#
发表于 2018-12-7 19:52:15 | 只看该作者
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <windows.h> int main() {     int b,h,i1,i2,st,sy,x,y;     char ch,t[30][31];     char t1[30][31]={"   ###     ",                      "   #*#     ",                      "   # #     ",                      "####O######",                      "#*  OS O *#",                      "#####O#####",                      "    # #    ",                      "    #*#    ",                      "    ###    ",                      "by:AhaLei  "},          t2[30][31]={"##########",                      "##     ###",                      "##O###   #",                      "# S O  O #",                      "# **# O ##",                      "##**#   ##",                      "##########",                      "by:AhaLei "},          t3[30][31]={"  ######    ",                      "  #****#    ",                      "   #**#     ",                      "   #OO#     ",                      "  ##S ##### ",                      " #  OOO    #",                      "#          #",                      "# O ####### ",                      "#   #       ",                      " ###        ",                      "by:WuYunzhe "};     st=1;     for(i1=0;i1<=29;i1++)         for(i2=0;i2<=29;i2++)         {                 if(t1[i1][i2]=='S')             {                 x=i1;                 y=i2;             }             if(t1[i1][i2]=='b')                 h=i1;         }     for(i1=0;i1<=h;i1++)         strcpy(t[i1],t1[i1]);     system("color f0");     printf("请按任意键开始游戏...");     getch();     system("cls");     for(i1=0;i1<=h;i1++)         puts(t[i1]);     b=0;     while(1)     {         sy=0;         ch=getch();         if(ch=='w' || ch=='W')             if(t[x-1][y]!='#')             {                 if(t[x-2][y]==' ' || t[x-2][y]=='*')                 {                     if(t[x-1][y]=='@')                     {                         if(t[x-2][y]==' ')                         {                             if(t[x][y]=='S')                                 t[x][y]=' ';                             else                                 t[x][y]='*';                             x--;                             t[x][y]='$';                             t[x-1][y]='O';                         }                         else                         if(t[x-2][y]=='*')                         {                             if(t[x][y]=='S')                                 t[x][y]=' ';                             else                                 t[x][y]='*';                             x--;                             t[x][y]='$';                             t[x-1][y]='@';                         }                         b++;                     }                     else                     if(t[x-1][y]=='O')                     {                         if(t[x-2][y]==' ')                         {                             if(t[x][y]=='S')                                 t[x][y]=' ';                             else                                 t[x][y]='*';                               x--;                             t[x][y]='S';                             t[x-1][y]='O';                         }                         else                         if(t[x-2][y]=='*')                         {                             if(t[x][y]=='S')                                 t[x][y]=' ';                             else                                 t[x][y]='*';                             x--;                             t[x][y]='S';                             t[x-1][y]='@';                         }                         b++;                     }                 }                 if(t[x-1][y]=='*')                 {                     if(t[x][y]=='S')                         t[x][y]=' ';                     else                         t[x][y]='*';                     x--;                     t[x][y]='$';                     b++;                 }                 else                 if(t[x-1][y]==' ')                 {                     if(t[x][y]=='S')                         t[x][y]=' ';                     else                         t[x][y]='*';                     x--;                     t[x][y]='S';                     b++;                 }             }         if(ch=='s' || ch=='S')             if(t[x+1][y]!='#')             {                 if(t[x+2][y]==' ' || t[x+2][y]=='*')                 {                     if(t[x+1][y]=='@')                     {                         if(t[x+2][y]==' ')                         {                             if(t[x][y]=='S')                                 t[x][y]=' ';                             else                                 t[x][y]='*';                                 x++;                                 t[x][y]='$';                                 t[x+1][y]='O';                         }                         else                         if(t[x+2][y]=='*')                         {                             if(t[x][y]=='S')                                 t[x][y]=' ';                             else                                 t[x][y]='*';                             x++;                             t[x][y]='$';                             t[x+1][y]='@';                         }                                                 b++;                     }                     else                     if(t[x+1][y]=='O')                     {                         if(t[x+2][y]==' ')                         {                             if(t[x][y]=='S')                                 t[x][y]=' ';                             else                                 t[x][y]='*';                             x++;                             t[x][y]='S';                             t[x+1][y]='O';                         }                         else                         if(t[x+2][y]=='*')                         {                             if(t[x][y]=='S')                                 t[x][y]=' ';                             else                                 t[x][y]='*';                             x++;                             t[x][y]='S';                             t[x+1][y]='@';                         }                                                 b++;                     }                 }                 if(t[x+1][y]=='*')                 {                     if(t[x][y]=='S')                         t[x][y]=' ';                     else                         t[x][y]='*';                     x++;                     t[x][y]='$';                     b++;                 }                 else                 if(t[x+1][y]==' ')                 {                     if(t[x][y]=='S')                         t[x][y]=' ';                     else                         t[x][y]='*';                     x++;                     t[x][y]='S';                     b++;                 }             }         if(ch=='a' || ch=='A')             if(t[x][y-1]!='#')             {                 if(t[x][y-2]==' ' || t[x][y-2]=='*')                 {                     if(t[x][y-1]=='@')                     {                         if(t[x][y-2]==' ')                         {                             if(t[x][y]=='S')                                 t[x][y]=' ';                             else                                 t[x][y]='*';                                 y--;                                 t[x][y]='$';                                 t[x][y-1]='O';                         }                         else                         if(t[x][y-2]=='*')                         {                             if(t[x][y]=='S')                                 t[x][y]=' ';                             else                                 t[x][y]='*';                             y--;                             t[x][y]='$';                             t[x][y-1]='@';                         }                                                 b++;                     }                     else                     if(t[x][y-1]=='O')                     {                         if(t[x][y-2]==' ')                         {                             if(t[x][y]=='S')                                 t[x][y]=' ';                             else                                 t[x][y]='*';                             y--;                             t[x][y]='S';                             t[x][y-1]='O';                         }                         else                         if(t[x][y-2]=='*')                         {                             if(t[x][y]=='S')                                 t[x][y]=' ';                             else                                 t[x][y]='*';                             y--;                             t[x][y]='S';                             t[x][y-1]='@';                         }                                                 b++;                     }                 }                 if(t[x][y-1]=='*')                 {                     if(t[x][y]=='S')                         t[x][y]=' ';                     else                         t[x][y]='*';                     y--;                     t[x][y]='$';                     b++;                 }                 else                 if(t[x][y-1]==' ')                 {                     if(t[x][y]=='S')                         t[x][y]=' ';                     else                         t[x][y]='*';                     y--;                     t[x][y]='S';                     b++;                 }             }         if(ch=='d' || ch=='D')             if(t[x][y+1]!='#')             {                 if(t[x][y+2]==' ' || t[x][y+2]=='*')                 {                     if(t[x][y+1]=='@')                     {                         if(t[x][y+2]==' ')                         {                             if(t[x][y]=='S')                                 t[x][y]=' ';                             else                                 t[x][y]='*';                                 y++;                                 t[x][y]='$';                                 t[x][y+1]='O';                         }                         else                         if(t[x][y+2]=='*')                         {                             if(t[x][y]=='S')                                 t[x][y]=' ';                             else                                 t[x][y]='*';                             y++;                             t[x][y]='$';                             t[x][y+1]='@';                         }                                                 b++;                     }                     else                     if(t[x][y+1]=='O')                     {                         if(t[x][y+2]==' ')                         {                             if(t[x][y]=='S')                                 t[x][y]=' ';                             else                                 t[x][y]='*';                             y++;                             t[x][y]='S';                             t[x][y+1]='O';                         }                         else                         if(t[x][y+2]=='*')                         {                             if(t[x][y]=='S')                                 t[x][y]=' ';                             else                                 t[x][y]='*';                             y++;                             t[x][y]='S';                             t[x][y+1]='@';                         }                                                 b++;                     }                 }                 if(t[x][y+1]=='*')                 {                     if(t[x][y]=='S')                         t[x][y]=' ';                     else                         t[x][y]='*';                     y++;                     t[x][y]='$';                     b++;                 }                 else                 if(t[x][y+1]==' ')                 {                     if(t[x][y]=='S')                         t[x][y]=' ';                     else                         t[x][y]='*';                     y++;                     t[x][y]='S';                     b++;                 }             }         system("cls");         for(i1=0;i1<=h-1;i1++)             puts(t[i1]);         printf("步数:%d",b);         for(i1=0;i1<=h;i1++)             for(i2=0;i2<=h;i2++)                 if(t[i1][i2]=='*'  || t[i1][i2]=='$')                     sy++;         if(sy==0)         {             Sleep(1000);             system("cls");             for(i1=0;i1<=h-1;i1++)                 puts(t[i1]);             printf("恭喜你!\n你用了%d步完成了这张地图!\n",b);             system("pause");             if(st==3)                 break;             else             {                 st++;                 if(st==2)                 {                     for(i1=0;i1<=29;i1++)                         for(i2=0;i2<=29;i2++)                         {                             if(t2[i1][i2]=='S')                             {                                 x=i1;                                 y=i2;                             }                             if(t2[i1][i2]=='b')                                 h=i1;                         }                     for(i1=0;i1<=h;i1++)                         strcpy(t[i1],t2[i1]);                 }                 if(st==3)                 {                     for(i1=0;i1<=29;i1++)                         for(i2=0;i2<=29;i2++)                         {                             if(t3[i1][i2]=='S')                             {                                 x=i1;                                 y=i2;                             }                             if(t3[i1][i2]=='b')                                 h=i1;                         }                     for(i1=0;i1<=h;i1++)                         strcpy(t[i1],t3[i1]);                 }             }             b=0;             system("cls");             for(i1=0;i1<=h;i1++)                 puts(t[i1]);         }     }     Sleep(1000);     system("cls");     printf("非常感谢您使用此程序!\n\n作者-wuyunzhe_a@yeah.com-\n请按任意键退出游戏...");     getch();     return 0; }
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表