用C语言实现推箱子游戏

直接上代码,逻辑上没什么难点

#include <stdio.h>
#include <stdlib.h>

#include <windows.h>
#define hang (8)
int main()
{
    
    
        char a[50][50]={
    
    
                    "   ###     ",
                    "   #*#     ",
                    "   # #     ",
                    "####o######",
                    "#*  os o *#",
                    "#####o#####",
                    "    # #    ",
                    "    #*#    ",
                    "    ###    ",
                    };
                    
    int i,x,y,p,q,f;
    char ch;
   
    x=4; y=5,f=0;
    for(i=0;i<=hang;i++)
        {
    
    puts(a[i]);}
        printf("已达成:%d  ",f);               
    while(f<4)
    {
    
    
        ch=getch();
        if(ch=='s')
            if(a[x+1][y]!='#' && a[x+1][y]!='@')     //如果人前面不是墙
                if(a[x+1][y]!='o')//如果人前面不是箱子
                {
    
            
                    a[x][y]=' ';   //人当前坐标变为空
                    x++;           //更改人坐标
                    a[x][y]='s';   //新坐标替换为人
                }   
                else                            //如果人前面是箱子
                    if(a[x+2][y]!='#')          //如果箱子前面不是墙
                        if(a[x+2][y]!='*')      //如果箱子前面不是目的地
                        {
    
    
                            a[x][y]=' ';        //人当前坐标变为空
                            x++;                //更改人坐标
                            a[x][y]='s';        //新坐标替换为人
                            a[x+1][y]='o' ;     //更改箱子坐标
                        }
                        else                    //如果箱子前面是目的地
                        {
    
    
                                
                            a[x][y]=' ';        //人当前坐标变为空
                            x++;                //更改人坐标
                            a[x][y]='s';        //新坐标替换为人
                            a[x+1][y]='@' ;     //箱子到达目的地,更换目的地图案
                            f=f+1;
                        }              
        if(ch=='w')
            if(a[x-1][y]!='#'&&a[x-1][y]!='@')
                if(a[x-1][y]!='o')
                {
    
            
                    a[x][y]=' ';
                    x--;
                    a[x][y]='s';
                }
                else
                    if(a[x-2][y]!='#')
                        if(a[x-2][y]!='*')
                        {
    
    
                            a[x][y]=' ';
                            x--;
                            a[x][y]='s';
                            a[x-1][y]='o';
                        }
                        else
                        {
    
    
                            a[x][y]=' ';
                            x--;
                            a[x][y]='s';
                            a[x-1][y]='@';
                            f=f+1;
                        }
        if(ch=='a')
            if(a[x][y-1]!='#'&&a[x][y-1]!='@')
                if(a[x][y-1]!='o')
                {
    
    
                    a[x][y]=' ';
                    y--;
                    a[x][y]='s';
                }
                else
                    if(a[x][y-2]!='#')
                        if(a[x][y-2]!='*')
                        {
    
            
                            a[x][y]=' ';
                            y--;
                            a[x][y]='s';
                            a[x][y-1]='o';
                        }
                        else
                        {
    
    
                            a[x][y]=' ';
                            y--;
                            a[x][y]='s';
                            a[x][y-1]='@';
                            f=f+1;
                        }
        if(ch=='d')
            if(a[x][y+1]!='#'&&a[x][y+1]!='@')
                if(a[x][y+1]!='o')
                {
    
            
                   a[x][y]=' ';
                   y++;
                   a[x][y]='s';
                }
                else
                    if(a[x][y+2]!='#')
                        if(a[x][y+2]!='*')
                        {
    
            
                            a[x][y]=' ';
                            y++;
                            a[x][y]='s';
                            a[x][y+1]='o';
                        }
                        else
                        {
    
    
                            a[x][y]=' ';
                            y++;
                            a[x][y]='s';
                            a[x][y+1]='@';
                            f=f+1;
                        }
        system("cls");
        for(i=0;i<=hang;i++)
            puts(a[i]);
        printf("已达成:%d  ",f);
    }
    Sleep(2000);  
    system("cls"); //清屏
    puts("通关成功!");
    system("pause");  
    return 0;
}

在这里插入图片描述请添加图片描述

猜你喜欢

转载自blog.csdn.net/qq_43685686/article/details/122225169