勇者走迷宫小游戏2.0版(记一次课程设计经历)

本次游戏的代码借鉴了网上不少的代码,比如光标移动,光标隐藏等
之前的迷宫点这里
之前游戏非常简陋,而《勇者走迷宫》在2.0版本有了很大的改变。

一 玩法

大致还是保留了先拿到钥匙才能走出迷宫的玩法思路,但因为军师的想法,又新加了怪物的机制,增加了可玩性,同时关卡数也从原来的一关变为三关,使游戏内容更加饱满

二 画面

之前的地图主要用键盘上直接能够取得的特殊符号打印,不太美观,这次的迷宫完全使用搜狗输入法的特殊符号打印,看起来更舒服一点;同时之前的颜色变换感觉有点花里胡哨(小帅),现在使用了system(“color B”)的青色,看起来比较简约。这次的三张地图也完全由军师操刀,orz

三 操作

在先前的《勇者走迷宫1.0》中,使用的是循环打印的方式,效率很低,因为每一次走动只需改变人的位置,整个地图基本上不需要变化,所以这次采用了光标定位的方法,每次只将需要变化的坐标改变,这样就不会使地图看起来一闪一闪了

四 在修改中遇到的难题

解决打印问题

要想将游戏变为2.0,最主要的就是将循环打印效率低的问题解决,所以从学长那里了解到了光标定位,后来又从军师那里得到了函数代码,之后这个函数在整个程序中被多次调用。

解决特殊符号问题

这是我主要负责的部分。其间遇到了许多棘手的问题,首先想到如果要用比较特殊的符号的话,必须应该是UTF-8格式所支持的,但是又该从哪里获得这些特殊符号呢?如果使用搜狗输入法的话应该很容易就能找到。

很快的我就找到了■◎★卍等特殊符号,而我在将其放入二维数组中打印后发现,打印出的地图每一行的长度并不一致。后来经过我的一番试验,发现原来这些特殊符号每一个就占了两个字节。所以为了保持长度一致,每一个空格必须也占两格,同时在每一次进行光标移动时,如果是左右方向的移动,那么一次移动也必须让光标移动两格。

在解决了打印问题之后,以为之后的问题也迎刃而解了,但在实际操作时,又遇到了问题。

因为一个特殊字符占了两个字节,哪又应该怎样判断是否碰到墙体呢?

既然无法直接判断特殊符号,那就直接将特殊符号的编码值找出来,所以我将所需要用到的特殊符号的编码值一个个打印了出来。而且我发现除了卍符号之外,其他符号的第一个编码都是-95,这使后续函数的执行也更加方便了

解决怪物随机移动问题

这个环节主要由军师负责,但是我也看了下代码,核心的思路就是使用time头文件的函数,先生成随机数,以此产生怪物的坐标,之后再用随机数来控制怪物的随机移动,同时怪物不能生成在非法区域(其他的特殊符号所在的区域以及迷宫外)。
其间他也遇到了一些难题,比如如何让怪物随时间自动移动。(后来他用了_kbhit()函数解决了)

解决关卡切换问题

这个问题被军师秒了 用if语句加system(“CLS”),再将新的界面直接打印就好了~

其他

后面还有一些琐碎的问题,比如如何给程序加入音乐,(虽然网上有很多办法,但这个问题还是花费了我一个下午),还有codeblocks有时会打印出乱码(现在还有时会发生)

五 总结

上次我虽然说会将第一版迷宫做一些优化,但是后来去学DP了,所以这次2.0版本拖了比较久,但同时我也学到了许多我之前从来没有用过的函数,比<windows.h>及<time.h>中的函数。同时这次的游戏也不是最终版,之后也许会加入bgm等(3.0版本),而且在第三关也有一些(很多)BUG

下面我附上游戏源代码:

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<windows.h>
#pragma comment(lib,"Winmm.lib")
#include<time.h>
using namespace std;
int cot,flag1,flag2,flag3;//cot是计步器 flag1,2,3指示是否拿到钥匙
int x,y,i,p,q,z,book,a3,a4,a5,a6;
int a1,a2;
char ch;
char c[100][100]= { "■■■■■■■■■■",
                    "■◎            ■■",
                    "■  ■  ■  ■  ★■",
                    "■      ■  ■    ■        勇者啊,记得拿到钥匙之后才能打开牢房逃离",
                    "■  ■■■  ■  ■■         ■表示墙 ◎表示你 ★表示钥匙 卍表示出口",
                    "■    ■■    ■  卍",
                    "■  ■        ■  ■",
                    "■  ■  ■■■■  ■",
                    "■                ■",
                    "■■■■■■■■■■",
                  };
char b[200][200]= {"■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■",
                   "■    ■            ■            ■■■■■■■    ■    ■",
                   "■  ■■    ■■■■    ■■  ■  ■■        ■■      ■■",
                   "■  ■          ■        ■        ■  ■    ■■  ■    ■",
                   "■  ■■■■  ◎    ■      ■■■      ■      ■■    ■■",
                   "■        ■        ■        ■    ■  ■■          ■  卍",
                   "■■              ■■  ■    ■■■■■■      ■■■    ■",
                   "■  ■■■■    ■      ■  ■      ■      ■■    ■■  ■",
                   "■    ■★  ■      ■■■■  ■    ■      ■■    ■    ■",
                   "■          ■  ■■      ■        ■■        ■■    ■■",
                   "■■■■        ■    ■      ■■■■  ■  ■  ■    ■■■",
                   "■        ■■          ■  ■■  ■        ■      ■■■■",
                   "■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■",
                  };
char a[200][300]=
{
    "■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■",
    "■        ■                      ■                    ■■■              ■■■■                                  ■",
    "■        ■    ■■■■■    ■      ■■    ■■■        ■        ■            ■■  ■■■■■  ■■■■■■■  ■",
    "■        ■    ■      ■    ■  ■    ■          ■      ■        ■■■■■              ■■            ■      ■",
    "■        ■■■■      ■    ■  ■    ■■■■    ■    ■■              ■        ■■■■        ■■■■■  ■■■",
    "■    ■                ■■■■  ■          ■    ■      ■        ■    ■        ■    ■■■■■    ■■    ■■■",
    "■    ■    ■    ■■        ■■■■■■    ■    ■        ■■■■■■  ■■■■■■            ■            ■■■",
    "■    ■■■        ■          ◎                  ■            ■          ■      ■    ■    ■■    ■■  ■■■■",
    "■          ■        ■■■■■    ■■■  ■■■■■■■■■■      ■■■■■■    ■    ■              ■■■■  卍",
    "■  ■■■■■  ■■■■    ■    ■■                        ■■■■■        ■          ■    ■■■■■          ■",
    "■  ■    ★■        ■              ■■■■■■■  ■■          ■        ■    ■■■■■■■■    ■■■■■■  ■",
    "■■■      ■    ■  ■■■■    ■        ■          ■■■■■  ■    ■■■■                            ■  ■  ■",
    "■        ■■    ■        ■■  ■■■■          ■■    ■          ■■      ■  ■    ■■■■■■          ■  ■",
    "■      ■        ■  ■            ■  ■    ■■■        ■  ■  ■    ■      ■■■      ■      ■      ■  ■  ■",
    "■      ■      ■■■■■■                ■■      ■        ■  ■■■■        ■      ■■■      ■    ■  ■  ■",
    "■      ■                ■    ■■■  ■■■      ■■■■■■■  ■              ■      ■  ■■■■■    ■      ■",
    "■              ■■■    ■        ■            ■■    ■              ■        ■■■■■  ■      ■    ■  ■  ■",
    "■      ■          ■        ■■■■      ■    ■            ■        ■■■            ■      ■        ■■■■■",
    "■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■",
};
void status()//状态函数
{
    void gotoxy(int x,int y);
    if(c[x][y+1]==-17&&c[x][y]==-95&&z==1)
    {
        flag1=1;//flag1变为1 拿到钥匙
        gotoxy(11,5);
        printf("勇者,恭喜你!得到了遗失在迷宫中的钥匙!");
    }
    else  if(b[x][y+1]==-17&&b[x][y]==-95&&z==2)
    {
        flag2=1;//flag1变为1 拿到钥匙
        gotoxy(14,5);
        printf("勇者,恭喜你!得到了遗失在迷宫中的钥匙!");
    }
    else  if(a[x][y+1]==-17&&a[x][y]==-95&&z==3)
    {
        flag3=1;//flag1变为1 拿到钥匙
        gotoxy(20,5);
        printf("勇者,恭喜你!得到了遗失在迷宫中的钥匙!");
    }
}
void gotoxy(int x,int y)//辅助函数:光标移动
{
    COORD coord;//光标结构体
    coord.X=y;//设置坐标
    coord.Y=x;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),coord);//同步到控制台/设置控制台光标位置
}
void HideCursor()  //隐藏光标,防止干扰视线
{
    CONSOLE_CURSOR_INFO cursor;
    cursor.bVisible = FALSE;
    cursor.dwSize = sizeof(cursor);
    HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleCursorInfo(handle, &cursor);
}
int getpd(char js)
{
    if(z==1)
    {
        if (js=='w'&&((c[x-1][y]!=-95&&c[x-1][y]!=-10)||(c[x-1][y+1]==-17)||(c[x-1][y+1]==-14)))
        {
            if(c[x-1][y]==-123&&!flag1)//判断走到出口时是否拿到钥匙
                goto out1;
            gotoxy(x,y);
            printf("  ");
            x--;
            gotoxy(x,y);
            printf("◎");
            cot++;
            gotoxy(10,10);
            printf("%d",cot);
            status();
        }
        if (js=='s'&&((c[x+1][y]!=-95&&c[x+1][y]!=-10)||(c[x+1][y+1]==-17)||(c[x+1][y+1]==-14)))
        {
            if(c[x+1][y]==-123&&!flag1)
                goto out1;
            gotoxy(x,y);
            printf("  ");
            x++;
            gotoxy(x,y);
            printf("◎");
            cot++;
            gotoxy(10,10);
            printf("%d",cot);
            status();
        }
        if (js=='d'&&((c[x][y+2]!=-95&&c[x][y+2]!=-10)||(c[x][y+3]==-17)||(c[x][y+3]==-14)))
        {
            if(c[x][y+2]==-123&&!flag1)
                goto out1;
            gotoxy(x,y);
            printf("  ");
            y+=2;
            gotoxy(x,y);
            printf("◎");
            cot++;
            gotoxy(10,10);
            printf("%d",cot);
            status();
        }
        if (js=='a'&&((c[x][y-2]!=-95&&c[x][y-2]!=-10)||(c[x][y-1]==-17)||(c[x][y-1]==-14)))
        {
            if(c[x][y-1]==-123&&!flag1)
                goto out1;
            gotoxy(x,y);
            printf("  ");
            y-=2;
            gotoxy(x,y);
            printf("◎");
            cot++;
            gotoxy(10,10);
            printf("%d",cot);
            status();
        }
out1:
        {
        }
    }
    if(z==2)
    {
        if (js=='w'&&((b[x-1][y]!=-95&&b[x-1][y]!=-10)||(b[x-1][y+1]==-17)||(b[x-1][y+1]==-14)))
        {
            if(b[x-1][y]==-123&&!flag2)//判断走到出口时是否拿到钥匙
                goto out2;
            gotoxy(x,y);
            printf("  ");
            x--;
            gotoxy(x,y);
            printf("◎");
            cot++;
            gotoxy(13,10);
            printf("%d",cot);
            status();
        }
        if (js=='s'&&((b[x+1][y]!=-95&&b[x+1][y]!=-10)||(b[x+1][y+1]==-17)||(b[x+1][y+1]==-14)))
        {
            if(b[x+1][y]==-123&&!flag2)
                goto out2;
            gotoxy(x,y);
            printf("  ");
            x++;
            gotoxy(x,y);
            printf("◎");
            cot++;
            gotoxy(13,10);
            printf("%d",cot);
            status();
        }
        if (js=='d'&&((b[x][y+2]!=-95&&b[x][y+2]!=-10)||(b[x][y+3]==-17)||(b[x][y+3]==-14)))
        {
            if(b[x][y+2]==-123&&!flag2)
                goto out2;
            gotoxy(x,y);
            printf("  ");
            y+=2;
            gotoxy(x,y);
            printf("◎");
            cot++;
            gotoxy(13,10);
            printf("%d",cot);
            status();
        }
        if (js=='a'&&((b[x][y-2]!=-95&&b[x][y-2]!=-10)||(b[x][y-1]==-17)||(b[x][y-1]==-14)))
        {
            if(b[x][y-1]==-123&&!flag2)
                goto out2;
            gotoxy(x,y);
            printf("  ");
            y-=2;
            gotoxy(x,y);
            printf("◎");
            cot++;
            gotoxy(13,10);
            printf("%d",cot);
            status();
        }
out2:
        {
        }
    }
    if(z==3)
    {
        if (js=='w'&&((a[x-1][y]!=-95&&a[x-1][y]!=-10)||(a[x-1][y+1]==-17)||(a[x-1][y+1]==-14)))
        {
            if(a[x-1][y]==-123&&!flag3)//判断走到出口时是否拿到钥匙
                goto out3 ;
            gotoxy(x,y);
            printf("  ");
            x--;
            gotoxy(x,y);
            printf("◎");
            cot++;
            gotoxy(19,10);
            printf("%d",cot);
            status();
        }
        if (js=='s'&&((a[x+1][y]!=-95&&a[x+1][y]!=-10)||(a[x+1][y+1]==-17)||(a[x+1][y+1]==-14)))
        {
            if(a[x+1][y]==-123&&!flag3)
                goto out3;
            gotoxy(x,y);
            printf("  ");
            x++;
            gotoxy(x,y);
            printf("◎");
            cot++;
            gotoxy(19,10);
            printf("%d",cot);
            status();
        }
        if (js=='d'&&((a[x][y+2]!=-95&&a[x][y+2]!=-10)||(a[x][y+3]==-17)||(a[x][y+3]==-14)))
        {
            if(a[x][y+2]==-123&&!flag3)
                goto out3;
            gotoxy(x,y);
            printf("  ");
            y+=2;
            gotoxy(x,y);
            printf("◎");
            cot++;
            gotoxy(19,10);
            printf("%d",cot);
            status();
        }
        if (js=='a'&&((a[x][y-2]!=-95&&a[x][y-2]!=-10)||(a[x][y-1]==-17)||(a[x][y-1]==-14)))
        {
            if(a[x][y-1]==-123&&!flag3)
                goto out3;
            gotoxy(x,y);
            printf("  ");
            y-=2;
            gotoxy(x,y);
            printf("◎");
            cot++;
            gotoxy(19,10);
            printf("%d",cot);
            status();
        }
out3:
        {
        }
    }
}
void time(int t,int r)//怪物随机移动函数
{
    clock_t s,f;
    int a1;
    s=clock();
    f=clock();
    srand(time(0));
    if (z==2)
    {
        while(1)
        {
            HideCursor();
            if(b[x][y]==-123&&flag2)//如果走到出口,跳出
                break;
            if(!_kbhit())
            {
                f=clock();
                if (f-s>=200)
                {
                    a1=rand()%100+1;
                    if (a1>=1&&a1<=25&&b[t][r+2]!=-95&&b[t][r+2]!=-123)//向四个方向随机移动且不能走到非法区域
                    {
                        gotoxy(t,r);
                        printf("  ");
                        r+=2;
                        gotoxy(t,r);
                        printf("◆");
                    }
                    if (a1>=26&&a1<=50&&b[t][r-2]!=-95&&b[t][r-2]!=-123)
                    {
                        gotoxy(t,r);
                        printf("  ");
                        r-=2;
                        gotoxy(t,r);
                        printf("◆");
                    }
                    if (a1>=51&&a1<=75&&b[t+1][r]!=-95&&b[t+1][r]!=-123)
                    {
                        gotoxy(t,r);
                        printf("  ");
                        t++;
                        gotoxy(t,r);
                        printf("◆");
                    }
                    if (a1>=76&&a1<=100&&b[t-1][r]!=-95&&b[t-1][r]!=-123)
                    {
                        gotoxy(t,r);
                        printf("  ");
                        t--;
                        gotoxy(t,r);
                        printf("◆");
                    }
                    if(t==x&&y==r)//如果被怪抓住,将钥匙和起始点重新打印
                    {
                        gotoxy(t,r);
                        printf("  ");
                        gotoxy(4,14);
                        printf("◎");
                        gotoxy(8,8);
                        printf("★");
                        flag2=0;//钥匙掉落
                        book=1;
                        break;
                    }
                    s+=200;
                }
            }
            else
            {
                HideCursor();
                ch=getch();
                getpd(ch);
                status();
            }
        }
    }
    else if (z==3)
    {
        while(1)
        {
            HideCursor();
            if(a[x][y]==-123&&flag3)
                break;
            if (!_kbhit())
            {
                f=clock();
                if (f-s>=200)
                {
                    a1=rand()%100+1;
                    int js1=rand()%100+1,js2=rand()%100+1;//三个怪的随机移动
                    if (a1>=1&&a1<=25&&a[t][r+2]!=-95&&a[t][r+2]!=-123)
                    {
                        gotoxy(t,r);
                        printf("  ");
                        r+=2;
                        gotoxy(t,r);
                        printf("◆");
                    }
                    if (a1>=26&&a1<=50&&a[t][r-2]!=-95&&a[t][r-2]!=-123)
                    {
                        gotoxy(t,r);
                        printf("  ");
                        r-=2;
                        gotoxy(t,r);
                        printf("◆");
                    }
                    if (a1>=51&&a1<=75&&a[t+1][r]!=-95&&a[t+1][r]!=-123)
                    {
                        gotoxy(t,r);
                        printf("  ");
                        t++;
                        gotoxy(t,r);
                        printf("◆");
                    }
                    if (a1>=76&&a1<=105&&a[t-1][r]!=-95&&a[t-1][r]!=-123)
                    {
                        gotoxy(t,r);
                        printf("  ");
                        t--;
                        gotoxy(t,r);
                        printf("◆");
                    }

                    if (js1>=1&&js1<=25&&a[a3][a4+2]!=-95&&a[a3][a4+2]!=-123)
                    {
                        gotoxy(a3,a4);
                        printf("  ");
                        a4+=2;
                        gotoxy(a3,a4);
                        printf("◆");
                    }
                    if (js1>=26&&js1<=50&&a[a3][a4-2]!=-95&&a[a3][a4-2]!=-123)
                    {
                        gotoxy(a3,a4);
                        printf("  ");
                        a4-=2;
                        gotoxy(a3,a4);
                        printf("◆");
                    }
                    if (js1>=51&&js1<=75&&a[a3+1][a4]!=-95&&a[a3+1][a4]!=-123)
                    {
                        gotoxy(a3,a4);
                        printf("  ");
                        a3++;
                        gotoxy(a3,a4);
                        printf("◆");
                    }
                    if (js1>=76&&js1<=105&&a[a3-1][a4]!=-95&&a[a3-1][a4]!=-123)
                    {
                        gotoxy(a3,a4);
                        printf("  ");
                        a3--;
                        gotoxy(a3,a4);
                        printf("◆");
                    }

                    if (js2>=1&&js2<=25&&a[a5][a6+2]!=-95&&a[a5][a6+2]!=-123)
                    {
                        gotoxy(a5,a6);
                        printf("  ");
                        a6+=2;
                        gotoxy(a5,a6);
                        printf("◆");
                    }
                    if (js2>=26&&js2<=50&&a[a5][a6-2]!=-95&&a[a5][a6-2]!=-123)
                    {
                        gotoxy(a5,a6);
                        printf("  ");
                        a6-=2;
                        gotoxy(a5,a6);
                        printf("◆");
                    }
                    if (js2>=51&&js2<=75&&a[a5+1][a6]!=-95&&a[a5+1][a6]!=-123)
                    {
                        gotoxy(a5,a6);
                        printf("  ");
                        a5++;
                        gotoxy(a5,a6);
                        printf("◆");
                    }
                    if (js2>=76&&js2<=105&&a[a5-1][a6]!=-95&&a[a5-1][a6]!=-123)
                    {
                        gotoxy(a5,a6);
                        printf("  ");
                        a5--;
                        gotoxy(a5,a6);
                        printf("◆");
                    }

                    if((t==x&&y==r)||(x==a3&&y==a4)||(x==a5&&y==a6))
                    {
                        gotoxy(t,r);
                        printf("  ");
                        gotoxy(a3,a4);
                        printf("  ");
                        gotoxy(a5,a6);
                        printf("  ");
                        gotoxy(7,32);
                        printf("◎");
                        gotoxy(10,10);
                        printf("★");
                        book=1;
                        flag3=0;//钥匙掉落
                        break;
                    }
                    s+=200;
                }
            }
            else
            {
                HideCursor();
                ch=getch();
                getpd(ch);
                status();
            }
        }
    }
}
int main()
{
    HideCursor();
    printf("                                     亲爱的勇者,你总算醒了。 (按下enter键继续)");
    system("color B");
    while(1)
    {
        char ss;
        ss=getchar();
        if (ss=='\n')
            break;
    }
    printf("                                            什么,你问现在什么个情况?");
    while(1)
    {
        char ss;
        ss=getchar();
        if (ss=='\n')
            break;
    }
    printf("                         你忘了么,你被怪物偷袭了,这之后他们把昏迷的你带到了这座迷宫并关了起来");
    while(1)
    {
        char ss;
        ss=getchar();
        if (ss=='\n')
            break;
    }
    printf("                              好在有我跟了进来并找到了牢房钥匙的位置,所以趁现在快离开这里吧");
    while(1)
    {
        char ss;
        ss=getchar();
        if (ss=='\n')
            break;
    }
    printf("                         但可惜的是你的武器被他们带走了,因此你只能想办法避开怪物,不被它们发现");
    while(1)
    {
        char ss;
        ss=getchar();
        if (ss=='\n')
            break;
    }
    printf("                      你问我是谁?这并不重要,你就把我当作一个乐于助人但未交课程设计作业的大学生吧");
    while(1)
    {
        char ss;
        ss=getchar();
        if (ss=='\n')
            break;
    }
    printf("                                            好了,话不多说,快开始吧");
    while(1)
    {
        char ss;
        ss=getchar();
        if (ss=='\n')
            break;
    }
    system("CLS");//清屏
    for (z=1; z<=3; z++)
    {
        if (z==1)
        {
//            mciSendString("open bgm1.mp3 alias bgm1", NULL, 0, NULL);//打开音乐
//            mciSendString("play bgm1 repeat", NULL, 0, NULL);//循环播放
            x=1,y=1,p=5,q=9;
            for(i=0; i<10; i++)
            {
                printf("%s",c[i]);
                printf("\n");
            }
            printf("当前步数: %d\n状态: \n",cot);
            system("color B");
            x=1,y=2;
            while(c[x][y]!=-123||!flag1)//只有在到达出口的坐标并且有钥匙的情况下退出循环
            {
                HideCursor();
                ch=getch();
                getpd(ch);
            }
            system("CLS");//清屏
            printf("         恭喜你!勇者,你成功逃出了第一层迷宫\n");
            printf("             请按下enter键以前往下一层\n");
            printf("(注意!下一层开始会出现你无法击败的强大怪物,请注意躲避)");
            while(1)
            {
                char ss;
                ss=getchar();
                if (ss=='\n')
                    break;
            }
            system("CLS");//清屏
        }

        if (z==2)
        {
            cot=0;
            srand(time(0));
            x=4,y=14,p=5,q=57,book=0;
            for (i=0; i<=12; i++)
            {
                printf("%s",b[i]);
                printf("\n");
            }
            printf("当前步数: %d\n状态: \n",cot);
            system("color B");
            while (1)
            {
                a1=rand()%10+3;
                a2=rand()%47+3;
                if(!(a2%2))//一定要让光标列数在偶数位
                {
                    if (b[a1][a2]!=-95)//在可走的道路上随机生成形状为“◆”的怪物
                    {
                        gotoxy(a1,a2);
                        printf("◆");
                        time(a1,a2);
                        break;
                    }
                }
            }
            if (book==1)
            {
                system("CLS");//清屏
                z=1;
                printf(" 很遗憾,勇者,你被怪物抓住了\n");
                printf(" (请按下enter键重新挑战)\n");
            }
            else
            {
                system("CLS");//清屏
                printf("真不愧是天选之子,恭喜你!勇者,你可以前往最终试炼了\n");
                printf("         (请按下enter键以前往下一层)\n");
            }
            while(1)
            {
                char ss;
                ss=getchar();
                if (ss=='\n')
                    break;
            }
            system("CLS");//清屏
        }
        if (z==3)
        {
            cot=0;
            x=7,y=32,p=8,q=118,book=0;
            for(i=0; i<=18; i++)
            {
                printf("%s",a[i]);
                if(i!=18)
                    printf("\n");
            }
            printf("当前步数: %d\n状态: \n",cot);
            while (1)
            {
                a1=rand()%17+1;
                a2=rand()%117+1;
                a3=rand()%17+1;
                a4=rand()%117+1;
                a5=rand()%17+1;
                a6=rand()%117+1;
                if(!(a2%2)&&!(a4%2)&&!(a6%2))
                {
                    if (a[a1][a2]!=-95&&a[a3][a4]!=-95&&a[a5][a6]!=-95)
                    {
                        gotoxy(a1,a2);
                        printf("◆");
                        gotoxy(a3,a4);
                        printf("◆");
                        gotoxy(a5,a6);
                        printf("◆");
                        time(a1,a2);
                        break;
                    }
                }
            }
            if (book==1)
            {
                system("CLS");//清屏
                z=2;
                printf(" 很遗憾,勇者,你被怪物抓住了\n");
                printf(" (请按下enter键重新挑战)\n");
                while(1)
                {
                    char ss;
                    ss=getchar();
                    if (ss=='\n')
                        break;
                }
                system("CLS");//清屏
            }
            else
            {
                system("CLS");//清屏
                printf("太强了,恭喜你!勇者,你成功逃出了迷宫\n");
                printf("当然我也没有闲着,我替你找回了你的武器:\n");
                system("color 2");
                printf("        *   \n");
                printf("       ***  \n");
                printf("       ***  \n");
                printf("       ***  \n");
                printf("       ***       圣遗物:湖女剑\n");
                printf("       ***  \n");
                printf("     *******\n");
                printf("       ***  \n");
                printf("       ***  \n");
                system("color 6");
                printf("那么,请你在以后继续用它惩奸除恶,做最强的勇者吧");
                Sleep(10000);
            }
        }
    }
    return 0;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值