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;
}

  

posted @   会装系统的程序员  阅读(528)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示