亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

基于C語(yǔ)言實(shí)現(xiàn)迷宮游戲的示例代碼

 更新時(shí)間:2022年05月27日 11:07:25   作者:學(xué)編程的鬧鐘  
這篇文章主要介紹了基于C語(yǔ)言如何實(shí)現(xiàn)簡(jiǎn)單的迷宮游戲,對(duì)于學(xué)習(xí)游戲開發(fā)的朋友相信有一定的借鑒價(jià)值,需要的朋友可以參考下

C語(yǔ)言迷宮游戲

這篇文章是給學(xué)完并學(xué)懂了C語(yǔ)言的分支(選擇和循環(huán))結(jié)構(gòu)和二維數(shù)組的朋友看的。

要做一個(gè)游戲或者程序先要想好有那些要求,以下是我認(rèn)為一個(gè)迷宮必帶的要求: 

  • 迷宮要先打印出來(lái)(要設(shè)置墻、空氣、小球的起點(diǎn)),是墻就不能,是空氣就可以走。
  • 每次輸入'w'、'a'、's'、'd'為上、左、下、右,并每次輸入后,不用按回車或任意鍵繼續(xù)就能輸出,每次走一步(按鍵盤的鍵走)后,先清屏再輸出現(xiàn)在迷宮以及小球現(xiàn)在在哪里。
  • 要有起點(diǎn)和終點(diǎn)的X、Y軸,如果小球與終點(diǎn)的位置相同了,就提示勝利并退出游戲。 

定義地圖

首先我們要打印出地圖,因?yàn)榈貓D有長(zhǎng)和寬的長(zhǎng)度,所以我們要用二維數(shù)組來(lái)定義一個(gè)地圖,代碼如下:

    char map[50][50]={
                    "######",//申請(qǐng)50*50的二維字符串當(dāng)迷宮地圖,但這里是6*6的地圖
                    "#O #  ",//'#'是墻(不可以走的地方)
                    "# ## #",//'O'是起點(diǎn)(可控制)
                    "#  # #",//' '是空氣(可以走的地方)
                    "##   #",
                    "######",//橫豎都是012345,012345(數(shù)組下標(biāo)從0開始)
                    };

打印地圖方法一

定義完二維數(shù)組,就要把它打印出來(lái),代碼如下:

int i,j;
for(i=0;i<6;i++)//i循環(huán)用來(lái)控制打印地圖的行數(shù)
{
    for(j=0;j<6;j++)//j循環(huán)用來(lái)控制打印地圖的列數(shù)
    {
        printf("%c",map[i][j]);//打印每次i和j的行數(shù)和列數(shù)
    }
    printf("\n");//一行打印完畢需要換行
}

打印地圖方法二

上面這段代碼是通過(guò)雙重循環(huán)打印出地圖的每行每列。

如果學(xué)過(guò)puts函數(shù)來(lái)輸出字符數(shù)組的朋友可以這樣寫,代碼如下:

int i;
for(i=0;i<6;i++)//從0到5,共進(jìn)行了6次循環(huán),依次輸出迷宮的第0至5行
    puts(map[i]);//表示輸出每一行的字符串

是不是簡(jiǎn)單了許多,不懂puts函數(shù)的朋友也沒關(guān)系,你用第一種方法就行,對(duì)于puts函數(shù)你只需要知道:

  • 使用 puts() 顯示字符串時(shí),系統(tǒng)會(huì)自動(dòng)在其后添加一個(gè)換行符。
  • 只有遇到 '\0' 也就是字符串結(jié)束標(biāo)志符才會(huì)停止。

定義起點(diǎn)和終點(diǎn)位置

然后再定義起點(diǎn)和終點(diǎn)的X、Y軸位置(當(dāng)然上面定義二維數(shù)組時(shí)已經(jīng)看得出來(lái)了),代碼如下:

?int x,y,p,q;//x,y為小球(起點(diǎn)"O")初始位置豎橫軸 
            //p,q為空白(終點(diǎn)" ")結(jié)束位置豎橫軸
x=1;y=1;//x為豎軸初始位置為1,y為初始橫軸位置為1
p=1;q=5;//p為豎軸結(jié)束位置為1,q為結(jié)束橫軸位置為5

總結(jié)以上代碼

目前為止,我們做了定義地圖、打印地圖、定義起點(diǎn)終點(diǎn)的X、Y軸,目前全部代碼如下:

#include<stdio.h>//printf("");的頭文件
#include<stdlib.h>//system("");的頭文件
#include<Windows.h>//Sleep();的頭文件
int m1ain(void)
{
    char map[50][50]={
                        "######",//申請(qǐng)50*50的二維字符串當(dāng)迷宮地圖,但這里是6*6的地圖
                        "#O #  ",//'#'是墻(不可以走的地方)
                        "# ## #",//'O'是起點(diǎn)(可控制)
                        "#  # #",//' '是空氣(可以走的地方)
                        "##   #",
                        "######",//橫豎都是012345,012345(數(shù)組下標(biāo)從0開始)
                        };
    int i,x,y,p,q;//x,y為小球(起點(diǎn)"O")初始位置豎橫軸 
                  //p,q為空白(終點(diǎn)" ")結(jié)束位置豎橫軸
    int ch;//申請(qǐng)需要輸入的字符(名稱是ch),當(dāng)移動(dòng)(w,a,s,d)
    x=1;y=1;p=1;q=5;//x為豎軸初始位置為1,y為初始橫軸位置為1
                    //p為豎軸結(jié)束位置為1,q為結(jié)束橫軸位置為5
    for(i=0;i<6;i++)//從0到5,共進(jìn)行了6次循環(huán),依次輸出迷宮的第0至5行
        puts(map[i]);//表示輸出每一行的字符串
    Sleep(5000);//上面代碼全部執(zhí)行完畢后過(guò)五秒自動(dòng)關(guān)閉程序
    return 0;
}

現(xiàn)在我們就要想辦法控制小球了,這里利用鍵盤上的'w''s''a''d'四個(gè)鍵來(lái)控制這個(gè)小球進(jìn)行上、下、左、右移動(dòng),當(dāng)然你如果喜歡,也可以用別的按鍵。

第一步:先來(lái)控制小球向下移動(dòng),也就是當(dāng)你按下's'鍵時(shí),小球向下移動(dòng)一步。

那么如何獲得's'這個(gè)按鍵呢,換句話說(shuō):當(dāng)你按下's'鍵時(shí),我們的程序怎樣知道你按的是's'鍵呢?

實(shí)現(xiàn)讀取按鍵

很簡(jiǎn)單,因?yàn)槟惆聪?#39;s'鍵時(shí),本質(zhì)上是輸入了1個(gè)字符's',我們只需要讀取這個(gè)字符's'就可以了,讀取一個(gè)字符有4種方法:

char ch;
scanf("%c",&ch);//讀取一個(gè)字符,輸入后等待用戶按"Enter"鍵結(jié)束(帶回顯)
ch=getchar;//讀取一個(gè)字符,輸入后等待用戶按"Enter"鍵結(jié)束(帶回顯)
ch=getche;//讀取一個(gè)字符,輸入后立即獲取字符,不用按"Enter"鍵結(jié)束(帶回顯)
ch=getch;//讀取一個(gè)字符,輸入后立即獲取字符,不用按"Enter"鍵結(jié)束(不帶回顯)

而我們并不想顯示輸入的字符,并且希望輸入的字符可以立即被程序獲得,而不用在敲擊一個(gè)字符后再敲擊一個(gè)"Enter"鍵。

因此我們選用最后一個(gè)語(yǔ)句ch=getch();。

實(shí)現(xiàn)小球下向下移動(dòng)一步

接下來(lái),我們要把在鍵盤上敲擊的字符存儲(chǔ)在字符變量ch中,再接下來(lái)實(shí)現(xiàn)當(dāng)敲擊's'時(shí)。讓小球向下移動(dòng)一步,代碼如下:

?if(ch=='s')//判斷你是否輸入(按)'s'這個(gè)字符
{
    if(map[x+1][y]!='#')//確認(rèn)輸入(按)的是's'時(shí),就執(zhí)行[x+1][y](往下走,x為豎軸,+1為往下,y不變),提前是還要判斷往下走是否為'#'(墻)
    {                       
        map[x][y]=' ';//確認(rèn)往下走不是墻時(shí),把當(dāng)前的'O'輸出成' '
        x++;//為向下走
        map[x][y]='O';//確認(rèn)往下走不是墻時(shí),把下一步的' '輸出成'O'
    }
}

在上面代碼中,我們通過(guò)if語(yǔ)句來(lái)判斷敲擊的字符是否是字符's',如果是字符's',我們就讓小球向下移動(dòng)一步,但在小球向下移動(dòng)之前,需要首先判斷下面一步是否能移動(dòng),只有下一步不是墻'#'時(shí)小球才能移動(dòng)。

也就是說(shuō)當(dāng)if(map[x+1][y]!='#')條件成立時(shí),就表示下一步不是墻,小球可以移動(dòng)。

可能有些朋友會(huì)問(wèn):為什么[x+1][y]就表示向下走一部的格子呢?

其實(shí)很簡(jiǎn)單:向下移動(dòng)時(shí),小球當(dāng)然還在當(dāng)前這個(gè)列,不過(guò)不在這一行,而是在下一行,因此向下移動(dòng)是y不變,x加1。

如果是向右邊移動(dòng),很顯然還是在同一行,所以x不變,但是小球已經(jīng)不在剛才那一豎列了,而在右邊的一個(gè)豎列,因此y需要加1。

總結(jié)小球移動(dòng)規(guī)律

  • 向下移動(dòng)是y不變,x加1。
  • 向上移動(dòng)是y不變,x減1。
  • 向左移動(dòng)是x不變,y減1。
  • 向右移動(dòng)是x不變,y加1。

接下來(lái)我們來(lái)講解下面這3句話的意思:

map[x][y]=' ';//確認(rèn)往下走不是墻時(shí),把當(dāng)前的'O'輸出成' '
x++;//為向下走
map[x][y]='O';//確認(rèn)往下走不是墻時(shí),把下一步的' '輸出成'O'

讓小球向下移動(dòng),就是讓小球原本位置上的'O'變成空格,而讓下一個(gè)空格變成'O'。

第一句:map[x][y]=' ';(注意此處兩個(gè)單引號(hào)之間中間有一個(gè)空格)就是讓小球的當(dāng)前位置變?yōu)榭崭瘢?/p>

第二句:x++;這句話非常重要,它表示更改小球的位置,因?yàn)樾∏蛳蛳逻\(yùn)動(dòng)只需要x++就可以了,y不變。

第三句:a[x][y]='O';語(yǔ)句就是將小球新位置上的內(nèi)容替換為小球'O'。

請(qǐng)注意上面一個(gè)代碼,可不能寫成:

map[x][y]=' ';           
map[x+1][y]='O';

至于為什么,大家自己去想想吧!

實(shí)現(xiàn)重新打印地圖

因?yàn)樾∏虻奈恢糜辛俗兓虼诉€需要將新迷宮的狀態(tài)重新打印一次,在打印之前記得要將之前的屏幕清屏,代碼如下:

int i;
system("cls");//每次移動(dòng)了小球就清屏一次
for(i=0;i<6;i++)//清屏了再次循環(huán)輸出新的地圖
    puts(map[i]);//清屏了再次輸出新的地圖

總結(jié)以上代碼

?#include<stdio.h>//printf("");的頭文件
#include<stdlib.h>//system("");的頭文件
#include<Windows.h>//Sleep();的頭文件
#include<conio.h>//getch();的頭文件
int main(void)
{
    char map[50][50]={
                        "######",//申請(qǐng)50*50的二維字符串當(dāng)迷宮地圖,但這里是6*6的地圖
                        "#O #  ",//'#'是墻(不可以走的地方)
                        "# ## #",//'O'是起點(diǎn)(可控制)
                        "#  # #",//' '是空氣(可以走的地方)
                        "##   #",
                        "######",//橫豎都是012345,012345(數(shù)組下標(biāo)從0開始)
                        };
    int i,x,y,p,q;//x,y為小球(起點(diǎn)"O")初始位置豎橫軸 
                  //p,q為空白(終點(diǎn)" ")結(jié)束位置豎橫軸
    int ch;//申請(qǐng)需要輸入的字符(名稱是ch),當(dāng)移動(dòng)(w,a,s,d)
    x=1;y=1;p=1;q=5;//x為豎軸初始位置為1,y為初始橫軸位置為1
                    //p為豎軸結(jié)束位置為1,q為結(jié)束橫軸位置為5
    for(i=0;i<6;i++)//從0到5,共進(jìn)行了6次循環(huán),依次輸出迷宮的第0至5行
        puts(map[i]);//表示輸出每一行的字符串
    ch=getch();//這語(yǔ)句表示給ch變量輸入的字符可以立即被程序獲取(不用按任意鍵繼續(xù)),也不會(huì)回顯
    if (ch=='s')//判斷你是否輸入(按)'s'這個(gè)字符
    {
        if (map[x+1][y]!='#')//確認(rèn)輸入(按)的是's'時(shí),就執(zhí)行[x+1][y](往下走,x為豎軸,+1為往下,y不變),提前是還要判斷往下走是否為'#'(墻)
        {                       
            map[x][y]=' ';//確認(rèn)往下走不是墻時(shí),把當(dāng)前的'O'輸出成' '
            x++;//為向下走
            map[x][y]='O';//確認(rèn)往下走不是墻時(shí),把下一步的' '輸出成'O'
        }
    }
    system("cls");//每次移動(dòng)了小球就清屏一次
    for(i=0;i<6;i++)//清屏了再次循環(huán)輸出新的地圖
       puts(map[i]);//清屏了再次輸出新的地圖
    Sleep(5000);//上面代碼全部執(zhí)行完畢后過(guò)五秒自動(dòng)關(guān)閉程序
    return 0;
}

運(yùn)行一下,然后按一下's'鍵,是不是已經(jīng)可以看到小球向下移動(dòng)了一步了呢?

但是你只能移動(dòng)一步,如何實(shí)現(xiàn)連續(xù)移動(dòng)呢?

實(shí)現(xiàn)連續(xù)移動(dòng)

很簡(jiǎn)單,實(shí)現(xiàn)連續(xù)移動(dòng)我們可以通過(guò)while循環(huán)來(lái)解決問(wèn)題:

#include<stdio.h>//printf("");的頭文件
#include<stdlib.h>//system("");的頭文件
#include<Windows.h>//Sleep();的頭文件
#include<conio.h>//getch();的頭文件
int m1ain(void)
{
    char map[50][50]={
                        "######",//申請(qǐng)50*50的二維字符串當(dāng)迷宮地圖,但這里是6*6的地圖
                        "#O #  ",//'#'是墻(不可以走的地方)
                        "# ## #",//'O'是起點(diǎn)(可控制)
                        "#  # #",//' '是空氣(可以走的地方)
                        "##   #",
                        "######",//橫豎都是012345,012345(數(shù)組下標(biāo)從0開始)
                        };
    int i,x,y,p,q;//x,y為小球(起點(diǎn)"O")初始位置豎橫軸 
                  //p,q為空白(終點(diǎn)" ")結(jié)束位置豎橫軸
    int ch;//申請(qǐng)需要輸入的字符(名稱是ch),當(dāng)移動(dòng)(w,a,s,d)
    x=1;y=1;p=1;q=5;//x為豎軸初始位置為1,y為初始橫軸位置為1
                    //p為豎軸結(jié)束位置為1,q為結(jié)束橫軸位置為5
    for(i=0;i<6;i++)//從0到5,共進(jìn)行了6次循環(huán),依次輸出迷宮的第0至5行
        puts(map[i]);//表示輸出每一行的字符串
    while(1)//暫時(shí)無(wú)限循環(huán)
    {
        ch=getch();//這語(yǔ)句表示給ch變量輸入的字符可以立即被程序獲取(不用按任意鍵繼續(xù)),也不會(huì)回顯
        if(ch=='s')//判斷你是否輸入(按)'s'這個(gè)字符
        {
            if(map[x+1][y]!='#')//確認(rèn)輸入(按)的是's'時(shí),就執(zhí)行[x+1][y](往下走,x為豎軸,+1為往下,y不變),提前是還要判斷往下走是否為'#'(墻)
            {                       
                map[x][y]=' ';//確認(rèn)往下走不是墻時(shí),把當(dāng)前的'O'輸出成' '
                x++;//為向下走
                map[x][y]='O';//確認(rèn)往下走不是墻時(shí),把下一步的' '輸出成'O'
            }
        }
        system("cls");//每次移動(dòng)了小球就清屏一次
        for(i=0;i<6;i++)//清屏了再次循環(huán)輸出新的地圖
           puts(map[i]);//清屏了再次輸出新的地圖
    }
    Sleep(5000);//上面代碼全部執(zhí)行完畢后過(guò)五秒自動(dòng)關(guān)閉程序
    return 0;
}

暫時(shí)先使用while(1)無(wú)限循環(huán)來(lái)解決這個(gè)問(wèn)題,好了,運(yùn)行一下吧。

此時(shí)小球是不是可以連續(xù)移動(dòng)了?

當(dāng)然,目前小球還只能朝一個(gè)方向運(yùn)動(dòng),接下來(lái)我們來(lái)實(shí)現(xiàn)小球向其它3個(gè)方向的運(yùn)動(dòng)。

實(shí)現(xiàn)小球下向上下左右移動(dòng)

向其它3個(gè)方向移動(dòng)其實(shí)和"向下移動(dòng)"是差不多的,只要注意是x在變化還是y在變化,是加1還是減1就可以了。無(wú)限移動(dòng)4個(gè)方向代碼如下:

#include<stdio.h>//printf("");的頭文件
#include<stdlib.h>//system("");的頭文件
#include<Windows.h>//Sleep();的頭文件
#include<conio.h>//getch();的頭文件
int m1ain(void)
{
    char map[50][50]={
                        "######",//申請(qǐng)50*50的二維字符串當(dāng)迷宮地圖,但這里是6*6的地圖
                        "#O #  ",//'#'是墻(不可以走的地方)
                        "# ## #",//'O'是起點(diǎn)(可控制)
                        "#  # #",//' '是空氣(可以走的地方)
                        "##   #",
                        "######",//橫豎都是012345,012345(數(shù)組下標(biāo)從0開始)
                        };
    int i,x,y,p,q;//x,y為小球(起點(diǎn)"O")初始位置豎橫軸 
                  //p,q為空白(終點(diǎn)" ")結(jié)束位置豎橫軸
    int ch;//申請(qǐng)需要輸入的字符(名稱是ch),當(dāng)移動(dòng)(w,a,s,d)
    x=1;y=1;p=1;q=5;//x為豎軸初始位置為1,y為初始橫軸位置為1
                    //p為豎軸結(jié)束位置為1,q為結(jié)束橫軸位置為5
    for (i=0;i<6;i++)//從0到5,共進(jìn)行了6次循環(huán),依次輸出迷宮的第0至5行
        puts(map[i]);//表示輸出每一行的字符串
    while(1)//暫時(shí)無(wú)限循環(huán)
    {
        ch=getch();//這語(yǔ)句表示給ch變量輸入的字符可以立即被程序獲取(不用按任意鍵繼續(xù)),也不會(huì)回顯
        if(ch=='s')//判斷你是否輸入(按)'s'這個(gè)字符
        {
            if(map[x+1][y]!='#')//確認(rèn)輸入(按)的是's'時(shí),就執(zhí)行[x+1][y](往下走,x為豎軸,+1為往下,y不變),提前是還要判斷往下走是否為'#'(墻)
            {                       
                map[x][y]=' ';//確認(rèn)往下走不是墻時(shí),把當(dāng)前的'O'輸出成' '
                x++;//為向下走
                map[x][y]='O';//確認(rèn)往下走不是墻時(shí),把下一步的' '輸出成'O'
            }
        }
        if(ch=='w')//判斷你是否輸入(按)'w'這個(gè)字符
        {
            if(map[x-1][y]!='#')//確認(rèn)輸入(按)的是'w'時(shí),就執(zhí)行[x-1][y](往上走,x為豎軸,-1為往上,y不變),提前是還要判斷往下走是否為'#'(墻)
            {                       
                map[x][y]=' ';//確認(rèn)往上走不是墻時(shí),把當(dāng)前的'O'輸出成' '
                x--;//為向上走
                map[x][y]='O';//確認(rèn)往上走不是墻時(shí),把下一步的' '輸出成'O'
            }
        }
        if(ch=='a')//判斷你是否輸入(按)'a'這個(gè)字符
        {
            if(map[x][y-1]!='#')//確認(rèn)輸入(按)的是'a'時(shí),就執(zhí)行[x][y-1](往左走,y為橫軸,-1為往左,x不變),提前是還要判斷往下走是否為'#'(墻)
            {                       
                map[x][y]=' ';//確認(rèn)往左走不是墻時(shí),把當(dāng)前的'O'輸出成' '
                y--;//為向左走
                map[x][y]='O';//確認(rèn)往左走不是墻時(shí),把下一步的' '輸出成'O'
            }
        }
        if(ch=='d')//判斷你是否輸入(按)'d'這個(gè)字符
        {
            if(map[x][y+1]!='#')//確認(rèn)輸入(按)的是'd'時(shí),就執(zhí)行[x][y-1](往右走,y為橫軸,+1為往右,x不變),提前是還要判斷往下走是否為'#'(墻)
            {                       
                map[x][y]=' ';//確認(rèn)往右走不是墻時(shí),把當(dāng)前的'O'輸出成' '
                y++;//為向右走
                map[x][y]='O';//確認(rèn)往右走不是墻時(shí),把下一步的' '輸出成'O'
            }
        }
        system("cls");//每次移動(dòng)了小球就清屏一次
        for(i=0;i<6;i++)//清屏了再次循環(huán)輸出新的地圖
           puts(map[i]);//清屏了再次輸出新的地圖
    }
    Sleep(5000);//上面代碼全部執(zhí)行完畢后過(guò)五秒自動(dòng)關(guān)閉程序
    return 0;
}

好了,你是不是已經(jīng)成功走出了迷宮?

可是貌似程序并沒有讓你很驚喜,因?yàn)闆]有判定你已經(jīng)成功走出迷宮。

最后我們來(lái)寫一個(gè)"獲勝"的檢測(cè)部分,其實(shí)只需要將我們之前寫的while(1)改為while(x!=p||y!=q)就可以了。

實(shí)現(xiàn)小球走到終點(diǎn)就勝利

還記得嗎,之前我們用p和q分別存儲(chǔ)了迷宮出口的坐標(biāo)位置,當(dāng)然了,在最后我們需要打印"你獲勝了"。完整代碼如下:

#include<stdio.h>//printf("");的頭文件
#include<stdlib.h>//system("");的頭文件
#include<Windows.h>//Sleep();的頭文件
#include<conio.h>//getch();的頭文件
int m1ain(void)
{
    printf("歡迎來(lái)到迷宮小游戲\n");//介紹這個(gè)迷宮游戲
    printf("操作方式:\nw為往上走\(yùn)ns為往下走\(yùn)na為往左走\(yùn)nd為往右走\(yùn)n");//介紹操作方式
    char map[50][50]={
                        "######",//申請(qǐng)50*50的二維字符串當(dāng)迷宮地圖,但這里是6*6的地圖
                        "#O #  ",//'#'是墻(不可以走的地方)
                        "# ## #",//'O'是起點(diǎn)(可控制)
                        "#  # #",//' '是空氣(可以走的地方)
                        "##   #",
                        "######",//橫豎都是012345,012345(數(shù)組下標(biāo)從0開始)
                        };
    int i,x,y,p,q;//x,y為小球(起點(diǎn)"O")初始位置豎橫軸 
                  //p,q為空白(終點(diǎn)" ")結(jié)束位置豎橫軸
    int ch;//申請(qǐng)需要輸入的字符(名稱是ch),當(dāng)移動(dòng)(w,a,s,d)
    x=1;y=1;p=1;q=5;//x為豎軸初始位置為1,y為初始橫軸位置為1
                    //p為豎軸結(jié)束位置為1,q為結(jié)束橫軸位置為5
    for(i=0;i<6;i++)//從0到5,共進(jìn)行了6次循環(huán),依次輸出迷宮的第0至5行
        puts(map[i]);//表示輸出每一行的字符串
     while (x!=p||y!=q)//只要x的值不等p或y的值不等q就無(wú)限循環(huán)   
    {
        ch=getch();//這語(yǔ)句表示給ch變量輸入的字符可以立即被程序獲取(不用按任意鍵繼續(xù)),也不會(huì)回顯
        if(ch=='s')//判斷你是否輸入(按)'s'這個(gè)字符
        {
            if(map[x+1][y]!='#')//確認(rèn)輸入(按)的是's'時(shí),就執(zhí)行[x+1][y](往下走,x為豎軸,+1為往下,y不變),提前是還要判斷往下走是否為'#'(墻)
            {                       
                map[x][y]=' ';//確認(rèn)往下走不是墻時(shí),把當(dāng)前的'O'輸出成' '
                x++;//為向下走
                map[x][y]='O';//確認(rèn)往下走不是墻時(shí),把下一步的' '輸出成'O'
            }
        }
        if(ch=='w')//判斷你是否輸入(按)'w'這個(gè)字符
        {
            if(map[x-1][y]!='#')//確認(rèn)輸入(按)的是'w'時(shí),就執(zhí)行[x-1][y](往上走,x為豎軸,-1為往上,y不變),提前是還要判斷往下走是否為'#'(墻)
            {                       
                map[x][y]=' ';//確認(rèn)往上走不是墻時(shí),把當(dāng)前的'O'輸出成' '
                x--;//為向上走
                map[x][y]='O';//確認(rèn)往上走不是墻時(shí),把下一步的' '輸出成'O'
            }
        }
        if(ch=='a')//判斷你是否輸入(按)'a'這個(gè)字符
        {
            if(map[x][y-1]!='#')//確認(rèn)輸入(按)的是'a'時(shí),就執(zhí)行[x][y-1](往左走,y為橫軸,-1為往左,x不變),提前是還要判斷往下走是否為'#'(墻)
            {                       
                map[x][y]=' ';//確認(rèn)往左走不是墻時(shí),把當(dāng)前的'O'輸出成' '
                y--;//為向左走
                map[x][y]='O';//確認(rèn)往左走不是墻時(shí),把下一步的' '輸出成'O'
            }
        }
        if(ch=='d')//判斷你是否輸入(按)'d'這個(gè)字符
        {
            if(map[x][y+1]!='#')//確認(rèn)輸入(按)的是'd'時(shí),就執(zhí)行[x][y-1](往右走,y為橫軸,+1為往右,x不變),提前是還要判斷往下走是否為'#'(墻)
            {                       
                map[x][y]=' ';//確認(rèn)往右走不是墻時(shí),把當(dāng)前的'O'輸出成' '
                y++;//為向右走
                map[x][y]='O';//確認(rèn)往右走不是墻時(shí),把下一步的' '輸出成'O'
            }
        }
        system("cls");//每次移動(dòng)了小球就清屏一次
        for(i=0;i<6;i++)//清屏了再次循環(huán)輸出新的地圖
           puts(map[i]);//清屏了再次輸出新的地圖
    }
    system("cls");//最后通關(guān)后清屏
    printf("恭喜你贏了!\n");//最后通關(guān)后提示輸出語(yǔ)句
    Sleep(5000);//上面代碼全部執(zhí)行完畢后過(guò)五秒自動(dòng)關(guān)閉程序
    return 0;
}

以上就是基于C語(yǔ)言實(shí)現(xiàn)迷宮游戲的示例代碼的詳細(xì)內(nèi)容,更多關(guān)于C語(yǔ)言迷宮游戲的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C++中調(diào)用復(fù)制(拷貝)函數(shù)的三種情況總結(jié)

    C++中調(diào)用復(fù)制(拷貝)函數(shù)的三種情況總結(jié)

    這篇文章主要介紹了C++中調(diào)用復(fù)制(拷貝)函數(shù)的三種情況總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • 如何使用C語(yǔ)言實(shí)現(xiàn)細(xì)菌的繁殖與擴(kuò)散

    如何使用C語(yǔ)言實(shí)現(xiàn)細(xì)菌的繁殖與擴(kuò)散

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)細(xì)菌的繁殖與擴(kuò)散,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • 如何理解C++ 臨時(shí)變量的常量性

    如何理解C++ 臨時(shí)變量的常量性

    這篇文章主要介紹了如何理解C++ 臨時(shí)變量的常量性,幫助大家更好的理解和學(xué)習(xí)c++ 變量,感興趣的朋友可以了解下
    2020-08-08
  • 推箱子游戲C語(yǔ)言實(shí)現(xiàn)代碼

    推箱子游戲C語(yǔ)言實(shí)現(xiàn)代碼

    這篇文章主要為大家詳細(xì)介紹了推箱子游戲C語(yǔ)言實(shí)現(xiàn)代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)易文本編譯器

    C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)易文本編譯器

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)易文本編譯器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • C語(yǔ)言實(shí)現(xiàn)輸入ascii碼,輸出對(duì)應(yīng)的字符方式

    C語(yǔ)言實(shí)現(xiàn)輸入ascii碼,輸出對(duì)應(yīng)的字符方式

    這篇文章主要介紹了C語(yǔ)言實(shí)現(xiàn)輸入ascii碼,輸出對(duì)應(yīng)的字符方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • QString的常用方法(小結(jié))

    QString的常用方法(小結(jié))

    這篇文章主要介紹了QString的常用方法(小結(jié)),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • C語(yǔ)言深度解剖篇之關(guān)鍵字以及補(bǔ)充內(nèi)容

    C語(yǔ)言深度解剖篇之關(guān)鍵字以及補(bǔ)充內(nèi)容

    C語(yǔ)言的關(guān)鍵字共有32個(gè),根據(jù)關(guān)鍵字的作用,可分其為數(shù)據(jù)類型關(guān)鍵字、控制語(yǔ)句關(guān)鍵字、存儲(chǔ)類型關(guān)鍵字和其它關(guān)鍵字四類,這篇文章主要給大家介紹了關(guān)于C語(yǔ)言深度解剖篇之關(guān)鍵字以及補(bǔ)充內(nèi)容的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • 基于C語(yǔ)言實(shí)現(xiàn)五子棋游戲

    基于C語(yǔ)言實(shí)現(xiàn)五子棋游戲

    這篇文章主要為大家詳細(xì)介紹了基于C語(yǔ)言實(shí)現(xiàn)五子棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • 淺析C語(yǔ)言調(diào)試器GDB和LLDB的使用方法

    淺析C語(yǔ)言調(diào)試器GDB和LLDB的使用方法

    這篇文章主要介紹了C語(yǔ)言調(diào)試器GDB和LLDB的使用方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-12-12

最新評(píng)論