勇者走迷宫小游戏(1.0)

因为课程设计写了勇者走迷宫小游戏,写了雏形,后续应该会改进更多

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<windows.h>
#pragma comment(lib,"Winmm.lib")
int cot=0,flag1=0,flag2;//cot是计步器 flag1指示是否拿到钥匙 flag2指示是否在到达出口时拿到钥匙
int x,y,i,p,q;
char a[50][50]= {  "##########    HP:100",
                   "#o      ##    key:0",
                   "# # # # $#",
                   "#   # #  #",
                   "# ### # ##",
                   "#  ##  # *",
                   "# #    # #",
                   "# # #### #",
                   "# #      #",
                   "## #######",
                };
void end()//过关图形函数
{
    if(cot==30)
    {
        printf("什么?! 你竟然这么快就走出了迷宫!\n");
        printf("   *   \n");
        printf("  ***  \n");
        printf("  ***  \n");
        printf("  ***  \n");
        printf("  ***       那么,圣剑属于你了!QAQ\n");
        printf("  ***  \n");
        printf("*******\n");
        printf("  ***  \n");
        printf("  ***  \n");
        system("color 4");
    }
    else
    {
        printf("庆贺吧!你走出了迷宫!\n");
        system("color 2");
    }
}
void status()//状态函数
{
    if(x==2&&y==8)
    {
        flag1=1;//flag1变为1 拿到钥匙
    }
}
//void PlayMusic(const char*FileName)//音乐控制函数
//{
//       char cmdString[50]="open";
//       strcat_s(cmdString,FileName);
//       strcat_s(cmdString,"alias bkmusic");
//
//       mciSendString("close bkmusic",NULL,0,NUll);
//       mciSendString(cmdString,NULL,0,NULL);
//       mciSendString("play bkmusic",NULL,0,NULL);
//}
int main()
{
    i=1,x=1,y=1,p=5,q=9;
    char ch;
    printf("在你面前的,是一座迷宫\n#表示墙 o表示你 $表示钥匙 *表示出口\n");
    printf("\n");
    for(i=0; i<=9; i++)
    {
        puts(a[i]);
    }
    printf("当前步数: %d\n状态: \n",cot);
    system("color 2");
    while(x!=p||y!=q||!flag1)//只有在flag1==1(拿到钥匙)并且到达出口时跳出循环
    {
        flag2=0;
        ch=getch();
        if(ch=='s')
        {
            if(a[x+1][y]!='#')
            {
                if(a[x+1][y]=='*'&&!flag1)//判断进入出口前是否拿到钥匙
                {
                    flag2=1;
                    goto out;
                }
                a[x][y]=' ';
                x++;
                a[x][y]='o';
                status();
                cot++;
            }
        }
        if(ch=='w')
        {
            if(a[x-1][y]!='#')
            {
                if(a[x-1][y]=='*'&&!flag1)//判断进入出口前是否拿到钥匙
                {
                    flag2=1;
                    goto out;
                }
                a[x][y]=' ';
                x--;
                a[x][y]='o';
                status();
                cot++;
            }
        }
        if(ch=='a')
        {
            if(a[x][y-1]!='#')
            {
                if(a[x][y-1]=='*'&&!flag1)//判断进入出口前是否拿到钥匙
                {
                    flag2=1;
                    goto out;
                }
                a[x][y]=' ';
                y--;
                a[x][y]='o';
                status();
                cot++;
            }
        }
        if(ch=='d')
        {
            if(a[x][y+1]!='#')
            {
                if(a[x][y+1]=='*'&&!flag1)//判断进入出口前是否拿到钥匙
                {
                    flag2=1;
                    goto out;
                }
                a[x][y]=' ';
                y++;
                a[x][y]='o';
                status();
                cot++;
            }
        }
out://跳出if语句
        {
            system("cls");//清屏
            printf("在你面前的,是一座迷宫\n#表示墙 o表示你 $表示钥匙 *表示出口\n");
            printf("\n");
            for(i=0; i<=9; i++)
            {
                puts(a[i]);
            };
            printf("当前步数: %d\n",cot);
            printf("状态:\n");
            if(flag2)
                printf("勇者啊,在拿到钥匙前,你还无法打开它!\n");
            if(flag1)
            {
                printf("勇者,恭喜你!得到了遗失在迷宫中的钥匙!\n");
                a[1][18]='1';
            }
            system("color 9");
        }
    }
    system("CLS");//清屏
    end();
    Sleep(10000);//通关后挂机10秒
    return 0;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值