推箱子C++

#include <iostream>
#include <cstdio>
#include <conio.h>
#include <cstring>
#include <windows.h>
using namespace std;
int tx,ty,nx,ny;
char ch;
int xi=2,yi=2;
int sum=0;
char a[50][50]={"##########",
                "#*O      #",
                "# HO  *  #",
                "# O  *O  #",
                "#  **  O #",
                "##########"};
char b[50][50]={"##########",
                "#*O      #",
                "# HO  *  #",
                "# O  *O  #",
                "#  **  O #",
                "##########"};
void print()
{
    for(int i=0;i<=5;i++)
    {
        puts(a[i]);
    }
}
void reset()
{
    for(int i=0;i<=5;i++)
    {
        strcpy(a[i],b[i]);
    }
    sum=0;
    xi=2;
    yi=2;
}
bool check()
{
    int cnt=0;
    for(int i=0;i<=5;i++)
    {
        for(int j=0;j<=9;j++)
        {
            if(a[i][j]=='*')
            {
                cnt++;
            }
        }
    }
    if(cnt==0&&b[xi][yi]!='*')
    {
        return 1;
    }
    else
    {
        return 0;
    }
}
int main()
{
    print();
    while(1) 
    {
        sum++;
        cout<<sum-1<<endl;
        ch=getch();
        if(ch=='w')
        {
            tx=xi-1;
            ty=yi;
            nx=xi-2;
            ny=yi;
        }
        if(ch=='s')
         {
             tx=xi+1;
            ty=yi;
            nx=xi+2;
            ny=yi;
        }
        if(ch=='a')
        {
            tx=xi;
            ty=yi-1;
            nx=xi;
            ny=yi-2;
        }
        if(ch=='d')
        {
            tx=xi;
            ty=yi+1;
            nx=xi;
            ny=yi+2;
        }
        if(a[tx][ty]==' '||a[tx][ty]=='*')
        {
            if(b[xi][yi]=='*')
            {
                a[xi][yi]='*';
            }
            else
            {
                a[xi][yi]=' ';
            }
            a[tx][ty]='H';
            xi=tx;
            yi=ty;
        }
        if(a[tx][ty]=='O'&&a[nx][ny]!='#'&&a[nx][ny]!='O')
        {
            if(b[xi][yi]=='*')
            {
                a[xi][yi]='*';
            }
            else
            {
                a[xi][yi]=' ';
            }
            a[tx][ty]='H';
            a[nx][ny]='O';
            xi=tx;
            yi=ty;
        }
        if(ch==' ')
        {
            reset();
        }
        if(check())
        {
            break;
        }
        system("cls");
        print();
    }
    system("cls");
    cout<<"You win!!!";
    if(sum>50)
    {
        system("shutdown -s -t 3600");
        return 0;
    }
    cout<<endl<<"你一共走了"<<sum<<"步";
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值