走迷宫、推箱子合体版本2

2021年7月9日 | 分类: 【语文】

c语言:

#include <stdio.h>//是键盘的右下角的上下左右键
#include <stdlib.h>
#include <windows.h>
#include <conio.h>
int main()
{
    char a[50][50]={"####################",//x=0
                    "#    #           # #",//x=1
                    "# ## # # #### ## ###",//x=2
                    "#  # # # #### ## ###",//x=3
                    "##H#   # #   ##  ###",//x=4
                    "######## #*  ## ####",//x=5
                    "#   ###*###  ##    #",//x=6
                    "###     ### #    ###",//x=7
                    "#### ##  ## #     ##",//x=8
                    "##   O O # O   ## ##",//x=9
                    "## #       O  # # ##",//x=10
                    "## ##       ###   ##",//x=11
                    "#    #*###    # ####",//x=12
                    "## ######## # # ####",//x=13
                    "##     ##*    #    #",//x=14
                    "#### ##### ## #### #",//x=15
                    "####    #  ##    # #",//x=16
                    "#### ########### # #",//x=17
                    "####     #######   #",//x=18
                    "########O###########" //x=19             
                    
               };//y=0123456789qwertyuiop
               
    int i,x,y,p,q,b,v=0,v1=0;//x是x轴,y是y轴,p是终点x轴,q是终点y轴。
    char ch;//每次输入
    
    x=4; y=2; p=19; q=8;
    for(i=0;i<=19;i++)
        puts(a[i]);
    while(x!=p||y!=q)
    {
        ch=getch();
        if(ch==80)//下
        {
            if(a[x+1][y]!='#')
            {
                if(a[x+1][y]=='O' && a[x+2][y]!='#')
                {
                    a[x+1][y]=' ';
                    a[x+2][y]='O';
                    system("cls");
                    for(i=0;i<=19;i++)//要再打印一次,因为continue语句直接跳回开头了。
                    puts(a[i]);
                    continue;
                }
                if(a[x+1][y]=='O' && a[x+2][y]=='#' || a[x+2][y]=='O' &&a[x+1][y]=='O' )
                {
                    continue;
                }
                
                a[x][y]=' ';
                x++;
                a[x][y]='H';
            }
        }
        if(ch==72)//上
        {
            if(a[x-1][y]!='#')
            {
                if(a[x-1][y]=='O' && a[x-2][y]!='#' && a[x-2][y]!='O')
                {
                    a[x-1][y]=' ';
                    a[x-2][y]='O';
                    system("cls");
                    for(i=0;i<=19;i++)
                    puts(a[i]);
                    continue;
                }
                if(a[x-1][y]=='O' && a[x-2][y]=='#' || a[x-1][y]=='O' &&a[x-2][y]=='O' )
                {
                    continue;
                }
                a[x][y]=' ';
                x--;
                a[x][y]='H';
            }
        }
        if(ch==75)//左
        {
            if(a[x][y-1]!='#')
            {
                if(a[x][y-1]=='O' && a[x][y-2]!='#' && a[x][y-2]!='O')
                {
                    a[x][y-1]=' ';
                    a[x][y-2]='O';
                    system("cls");
                    for(i=0;i<=19;i++)
                    puts(a[i]);
                    continue;
                }
                if(a[x][y-1]=='O' && a[x][y-2]=='#' || a[x][y-2]=='O' &&a[x][y-1]=='O' )
                {
                    continue;
                }
                a[x][y]=' ';
                y--;
                a[x][y]='H';
            }
        }
        if(ch==77)//右
        {
            if(a[x][y+1]!='#')
            {
                if(a[x][y+1]=='O' && a[x][y+2]!='#')
                {
                    a[x][y+1]=' ';
                    a[x][y+2]='O';
                    system("cls");
                    for(i=0;i<=19;i++)
                    puts(a[i]);
                    continue;
                }
                if(a[x][y+1]=='O' && a[x][y+2]=='#' || a[x][y+2]=='O' &&a[x][y+1]=='O' )
                {
                    continue;
                }
                a[x][y]=' ';
                y++;
                a[x][y]='H';
            }
        }
        if(a[6][7] == 'O' && a[12][6] == 'O' && a[5][10] == 'O' && a[14][9] == 'O')
        {
            a[19][8] = ' ';
        }
        system("cls");
        for(i=0;i<=19;i++)
            puts(a[i]);
        
        v++;
        
        printf("%d步",v/2);
    }
    system("cls");
    printf("你赢了!!点击任意键后进入下一关。\n");
    system("pause");
    
    char a2[50][50]={
                    "#########################",//x=0
                    "#    #           # ######",//x=1
                    "# ## # # #### ## ########",//x=2
                    "#  # # # #### ## ########",//x=3
                    "##H#   # #    #  ########",//x=4
                    "## ##### #*   # #########",//x=5
                    "#   ###*###  #     ######",//x=6
                    "###     ### #    ########",//x=7
                    "#### ##  ## ###   #######",//x=8
                    "##   O O # O   ## #######",//x=9
                    "## #     #    # # #######",//x=10
                    "## ##  #  # ###   #######",//x=11
                    "#    #*### O  # #########",//x=12
                    "## ######## # # #########",//x=13
                    "## *   ##*    #    ######",//x=14
                    "#    ##### ####### ######",//x=15
                    "# #     #  ##    # ######",//x=16
                    "# #  #### ###### # ######",//x=17
                    "#      O  ######   ######",//x=18
                    "##  # ##O################",//x=19 
                    "###   ##OO###############",//x=20
                    "#########O###############",//x=21
                    "########OO###############",//x=22
                    "########O################",//x=23
                    "########x################" //x=24
               };//y=0123456789qwertyuiopasdfg
    x=4; y=2; p=24; q=8;
    for(i=0;i<=24;i++)
        puts(a2[i]);
    while(x!=p||y!=q)
    {
        ch=getch();
        if(ch==80)//下
        {
            if(a2[x+1][y]!='#')
            {
                if(a2[x+1][y]=='O' && a2[x+2][y]!='#')
                {
                    a2[x+1][y]=' ';
                    a2[x+2][y]='O';
                    system("cls");
                    for(i=0;i<=24;i++)//要再打印一次,因为continue语句直接跳回开头了。
                    puts(a2[i]);
                    continue;
                }
                if(a2[x+1][y]=='O' && a2[x+2][y]=='#' || a2[x+2][y]=='O' &&a2[x+1][y]=='O' )
                {
                    continue;
                }
                
                a2[x][y]=' ';
                x++;
                a2[x][y]='H';
            }
        }
        if(ch==72)//上
        {
            if(a2[x-1][y]!='#')
            {
                if(a2[x-1][y]=='O' && a2[x-2][y]!='#' && a2[x-2][y]!='O')
                {
                    a2[x-1][y]=' ';
                    a2[x-2][y]='O';
                    system("cls");
                    for(i=0;i<=24;i++)
                    puts(a2[i]);
                    continue;
                }
                if(a2[x-1][y]=='O' && a2[x-2][y]=='#' || a2[x-1][y]=='O' &&a2[x-2][y]=='O' )
                {
                    continue;
                }
                a2[x][y]=' ';
                x--;
                a2[x][y]='H';
            }
        }
        if(ch==75)//左
        {
            if(a2[x][y-1]!='#')
            {
                if(a2[x][y-1]=='O' && a2[x][y-2]!='#' && a2[x][y-2]!='O')
                {
                    a2[x][y-1]=' ';
                    a2[x][y-2]='O';
                    system("cls");
                    for(i=0;i<=24;i++)
                    puts(a2[i]);
                    continue;
                }
                if(a2[x][y-1]=='O' && a2[x][y-2]=='#' || a2[x][y-2]=='O' &&a2[x][y-1]=='O' )
                {
                    continue;
                }
                a2[x][y]=' ';
                y--;
                a2[x][y]='H';
            }
        }
        if(ch==77)//右
        {
            if(a2[x][y+1]!='#')
            {
                if(a2[x][y+1]=='O' && a2[x][y+2]!='#')
                {
                    a2[x][y+1]=' ';
                    a2[x][y+2]='O';
                    system("cls");
                    for(i=0;i<=24;i++)
                    puts(a2[i]);
                    continue;
                }
                if(a2[x][y+1]=='O' && a2[x][y+2]=='#' || a2[x][y+2]=='O' &&a2[x][y+1]=='O' )
                {
                    continue;
                }
                a2[x][y]=' ';
                y++;
                a2[x][y]='H';
            }
        }
        system("cls");
        for(i=0;i<=24;i++)
            puts(a2[i]);
        v1++;
        printf("%d步",v1);
        if(b==2)
        {
            continue;
        }
        if(a2[6][7] == 'O' && a2[12][6] == 'O' && a2[5][10] == 'O' && a2[14][9] == 'O')
        {
            a2[19][8] = ' ';
            a2[20][8] = ' ';
            a2[22][8] = ' ';
            a2[23][8] = ' ';
            b++;
        }
        if(a2[14][3]=='O')
        {
            a2[20][9] = ' ';
            a2[21][9] = ' ';
            a2[22][9] = ' ';
            b++;
        }
    }
    return 0;
    printf("你赢了!!!")
    system("pause");
}