OC推箱子

#include<stdio.h>
#include<stdlib.h>
int main(void)
{
    char sr;//存储用户输入的指令
    //绘制地图
    char a[11][20]={
     "###################",
     "###################",
     "###     $ $     ###",
     "###    #####    ###",
     "###             ###",
     "#### ####  ### ####",
     "###   #  @   #  ###",
     "###   #  @   #  ###",
     "###      ^      ###",
     "###################",
     "###################"};
    // 定义箱子,小人和目的的坐标
    int i=1,e=8,f=9,m=7,n=9,x=6,y=9;
    while(i)
    {
        //清屏,给人一种真实游戏的感觉,这是在MAC环境上的,WIN的清屏语句是system("cls")
        //这个程序所用到的类型和语法除了清屏这句还有清除缓存区都是可以在WIN系统下,VC++6.0里完美运行的
        system("clear");
        printf("欢迎使用推箱子\n^就代表你,而你的工作就是把@推到$的位置,好好努力吧!\n");
        printf("对了w代表上,s代表下,a代表左,d代表右,q表示退出,开始吧!\n");
        //判断是否推到目的地
       if(m== 2 && n==8)
        {
            if(x==2 && y==10)
            {
                printf("恭喜你挑战成功!\n");
                break;
            }
        }
       if(m==2 && n==10)
       {
           if(x==2 && y==8)
           {
                printf("恭喜你挑战成功!\n");
                break;
           }
        }
        //打印地图
        for(int b=0;b<11;b++)
        {
            for(int c=0;c<20;c++)
            {
                printf("%c",a[b][c]);
            }
            printf("\n");
        }
        //清除缓存区
        fpurge(stdin);
        scanf("%c",&sr);
        //判断方向
        switch(sr)
        {
            case ‘w‘:
            case ‘W‘:
                if(a[e-1][f]==‘ ‘)
                {
                    a[e-1][f]=‘^‘;
                    a[e][f]=‘ ‘;
                    e-=1;
                }
                else if(a[e-1][f]==‘@‘ && a[e-2][f]!=‘#‘ && a[e-2][f]!=‘@‘)
                {
                    if(e-m==1 && f==n)
                    {
                        m-=1;
                        a[m][n]=‘@‘;
                        a[e-1][f]=‘^‘;
                        a[e][f]=‘ ‘;
                        e-=1;
                    }
                    else if(e-x==1 && f==y)
                    {
                       x-=1;
                      a[x][y]=‘@‘;
                      a[e-1][f]=‘^‘;
                      a[e][f]=‘ ‘;
                      e-=1;
                    }
                }
                break;
            case ‘s‘:
            case ‘S‘:
                if(a[e+1][f]==‘ ‘)
                {
                    a[e+1][f]=‘^‘;
                    a[e][f]=‘ ‘;
                    e+=1;
                }
                else if(a[e+1][f]==‘@‘ && a[e+2][f]!=‘#‘ && a[e+2][f]!=‘@‘)
                {
                    if(m-e==1 && f==n)
                    {
                        m+=1;
                        a[m][n]=‘@‘;
                        a[e+1][f]=‘^‘;
                        a[e][f]=‘ ‘;
                        e+=1;
                    }
                    else if(x-e==1 && y==f)
                    {
                        x+=1;
                        a[x][y]=‘@‘;
                        a[e+1][f]=‘^‘;
                        a[e][f]=‘ ‘;
                        e+=1;
                    }

                }
                break;

            case ‘a‘:
            case ‘A‘:
                if(a[e][f-1]==‘ ‘)
                {
                    a[e][f-1]=‘^‘;
                    if((e==2 && f==8)||(e==2 && f==10))
                        a[e][f]=‘$‘;
                    else
                        a[e][f]=‘ ‘;
                    f-=1;
                }
                else if(a[e][f-1]==‘$‘)
                {
                    a[e][f-1]=‘^‘;
                    if((e==2 && f==8)||(e==2 && f==10))
                        a[e][f]=‘$‘;
                    else
                        a[e][f]=‘ ‘;
                    f-=1;
                }
                else if(a[e][f-1]==‘@‘ && a[e][f-2]!=‘#‘ && a[e][f-2]!=‘@‘)
                {
                    if(e==m && f-n==1)
                    {
                        n-=1;
                        a[m][n]=‘@‘;
                        a[e][f-1]=‘^‘;
                        if((e==2 && f==8)||(e==2 && f==10))
                            a[e][f]=‘$‘;
                        else
                            a[e][f]=‘ ‘;
                        f-=1;
                    }
                    else if(e==x && f-y==1)
                    {
                        y-=1;
                        a[x][y]=‘@‘;
                        a[e][f-1]=‘^‘;
                        if((e==2 && f==8)||(e==2 && f==10))
                            a[e][f]=‘$‘;
                        else
                            a[e][f]=‘ ‘;
                        f-=1;
                    }
                }
                break;
            case ‘d‘:
            case ‘D‘:
                if(a[e][f+1]==‘ ‘)
                {
                    a[e][f+1]=‘^‘;
                    if((e==2 && f==8)||(e==2 && f==10))
                      a[e][f]=‘$‘;
                    else
                       a[e][f]=‘ ‘;
                    f+=1;
                }
                else if(a[e][f+1]==‘$‘)
                {
                    a[e][f+1]=‘^‘;
                    if((e==2 && f==8)||(e==2 && f==10))
                        a[e][f]=‘$‘;
                    else
                        a[e][f]=‘ ‘;
                    f+=1;
                }
                else if(a[e][f+1]==‘@‘ && a[e][f+2]!=‘#‘ && a[e][f+2]!=‘@‘)
                {
                    if(e==m && n-f==1)
                    {
                        n+=1;
                        a[m][n]=‘@‘;
                        a[e][f+1]=‘^‘;
                        if((e==2 && f==8)||(e==2 && f==10))
                            a[e][f]=‘$‘;
                        else
                            a[e][f]=‘ ‘;
                        f+=1;
                    }
                    else if(e==x && y-f==1)
                    {
                        y+=1;
                        a[x][y]=‘@‘;
                        a[e][f+1]=‘^‘;
                        if((e==2 && f==8)||(e==2 && f==10))
                            a[e][f]=‘$‘;
                        else
                            a[e][f]=‘ ‘;
                        f+=1;
                    }
                }
              break;
            case ‘q‘:
            case ‘Q‘:i=0;break;
        }
    }
    return 0;
}

  

时间: 2025-01-02 08:49:53

OC推箱子的相关文章

hihoCoder_推箱子

一.题目 题目1 : 推箱子 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 推箱子是一款经典游戏.如图所示,灰色格子代表不能通过区域,蓝色方格是箱子,黑色圆形代表玩家,含有圆点的格子代表目标点. 规定以下规则: 1.一局游戏中只会有一个箱子,一个玩家和一个目标点. 2.通过方向键控制玩家移动. 3.图中的灰色格子代表墙壁,玩家与箱子都不能通过. 4.推到墙壁的箱子,就无法再将箱子推离墙壁,因为玩家无法到达箱子靠墙壁的一侧去推箱子.也就是说箱子只能以"被推"

致佳音: 推箱子游戏自动求解算法设计(一)

本来酷爱音乐, 老衲也想谱一曲<献给爱丽丝>之类, 通俗又有境界的曲子, 奈何没有那个水平, 也不是一个程序员做的勾当,于是就有了本文. 希望莲花妹妹跟着思路走,能遗忘那些太多的忧伤-- 本文分以下四个小节: 一.平面寻路算法(Alpha Star) 二.闭合图形填充算法(扫描线种子填充) 三.推箱子求解 四.执行效率的优化 日本人有个程序叫Sokuban Automatic Solver,文件名是sokoban722.exe我附带在资源里面 不过日本人的东西没有开源,我们也不知道它里面的花花

致佳音: 推箱子游戏自动求解算法设计(二)

这一个小节我们说一说传说中的A×算法,其实之前也上传过类似的小件件,这里我们就去剖析一下它 毕竟在游戏程序,我们要从一点移动到另一点,并得到最短路程的轨迹,类似这种算法还有好几种,执行效率都差不多,不过大多不能得到轨迹 首先,从一点移动到另一点,最快就是直接走过去了,就像小男生爱上小女生,最好的办法就是直接走到她面前说:我爱你 不过理想状态,几乎是没有的,弯路那是必然的经过,有曲线,其实更美-- 那么弯路该怎么走呢,是不是先去背景看下毛主席,再去三亚晒个太阳,再回来告诉她外面的世界好美,不,不,

12月28日 二维数组的应用:第一个小游戏(推箱子)

小游戏:******推箱子******** static void Main(string[] args) { int i, j; int[,] a = new int[10, 10]                  //二维数组的定义           类型[,] 数组名 = new  类型 [行数, 列数] {赋值}:   或单个赋值 a[i,j]=1; { {1,1,1,1,1,1,1,1,1,1}, {1,0,0,0,0,0,0,0,0,1}, {1,0,2,0,0,8,0,0,0,

搜索 [HDU 1254] 推箱子

推箱子 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 5343    Accepted Submission(s): 1503 Problem Description 推箱子是一个很经典的游戏.今天我们来玩一个简单版本.在一个M*N的房间里有一个箱子和一个搬运工,搬运工的工作就是把箱子推到指定的位置,注意,搬运工只能推箱子而不能拉箱子

C语言版推箱子

推箱子源代码初步: 1 #include<stdio.h> 2 #include<conio.h> 3 #include<stdlib.h> 4 #define boolean int 5 #define true 1 6 #define false 0 7 8 #define ROWS 10 9 //之所以定义为11,是因为字符串的尾部的\0 10 #define COLUMNS 11 11 12 //根据程序定义或者文件读入来构建地图,然后把他绘制到屏幕上 13 v

java版 推箱子,俄罗斯方块,诗歌默写,坦克!由瑶哥特改造哦!

其实我发现自己用java还真的写了好多小游戏了,一起刚刚开始学java的时候听学长说,写个俄罗斯方块要看一本搬砖厚的书, 刚开始还不信,不过现在信了,javaSe学完是要有本搬砖候的书了! 这个好像也是大一写的吧,具体时间都记不得了. 这个游戏还是改良了一下咯,我添加了个魔鬼的角色在里面, 魔鬼可以退箱子,而且魔鬼不能碰到你,碰到你,你就over了 .比以前的推箱子好玩些.我自己也经常玩玩. 懒得把自己写的一些java写游戏一个一个发文章了一次性吧,总之如果要代码找我QQ就好了935090232

推箱子(嵌套搜索,bfs中有dfs)

推箱子 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 6416    Accepted Submission(s): 1834 Problem Description 推箱子是一个很经典的游戏.今天我们来玩一个简单版本.在一个M*N的房间里有一个箱子和一个搬运工,搬运工的工作就是把箱子推到指定的位置,注意,搬运工只能推箱子而不能拉箱子,

专业实训题目需求分析(3D推箱子)

业务需求:    游戏提供主菜单让玩家进行游戏设置.帮助说明,推箱子的小人可以前后左右转动,箱子可以被上下左右的推动,要有关卡设置,障碍物设置,游戏提供背景音乐的功能,要实现3D效果. 面向的用户类型:会使用手机软件的人 用户需求:可以对游戏进行设置,可以上下左右的推箱子,移动小人,要有关卡的转换,有个美好的体验. 软件需求:用户可以对游戏进行设置,用户通过移动小人来改变箱子的位置,游戏每关的关卡都要不一样,有独特的地图,给用户一个美好的体验.