c語言貪吃蛇詳解1.畫出地圖


c語言貪吃蛇詳解-1.畫出地圖

前幾天的實驗室培訓課后作業我布置了貪吃蛇,今天有時間就來寫一下題解。我將分幾步來教大家寫一個貪吃蛇小游戲。由於大家c語言未學完,這個教程只涉及數組和函數等知識點。

 

首先我們使用宏定義來定義兩個常數,地圖的高(H)和地圖的寬(W)

#define H 20
#define W 20

這樣寫的好處是以后改變地圖的大小就不用更改寫好的代碼了,只要修改下宏定義。節省了時間又避免改出bug

接下來,我們定義一個二維數組,這個二維數組的每一個值剛好對應了平面的每一個點,這樣就可以方便地自定義地圖了。可以設置障礙物什么的了。然后我們用數組a[H][W]來存儲地圖情況,如果a[i][j]==0,就說明第i+1行,第j+1列是空的,如果a[i][j]==1,就說明這個點是障礙物。 
然后我們使用下面的代碼來把地圖數組的邊框做出來,就是讓數組邊緣等於1。(int全局變量默認為0)。

 1 void init()
 2 {
 3     int i,j;
 4     for(i=0; i<H; i++)
 5     {
 6         a[i][0]=1;          //讓第一列為1
 7         a[i][W-1]=1;        //讓最后一列為1
 8     }
 9     for(j=0; j<W; j++)
10     {
11         a[0][j]=1;          //讓第一行為1
12         a[H-1][j]=1;        //讓最后一行為1
13     }
14 }
展開代碼

這個只是最簡單的地圖,如果你有其他想法可以自由發揮,畫出自己的地圖。

地圖畫好了,剩下的就是畫出地圖了。我們把畫地圖的過程也寫為一個函數,這樣能使代碼結構更清晰,更容易找出bug。畫地圖就簡單了,就是遍歷整個數組,然后值為0的地方輸出空格,值為1的地方輸出一個符號,符號按自己喜好,我這里使用了#。

然后我們發現長寬不合適,我們可以修改剛開始的H和W的值。

按自己喜好調整,比如這樣

#define H 23
#define W 75

然后看看是不是比剛才好看了。知道宏定義的好處了吧。

好了,到這里為止,我們已經學會了畫地圖。

這只是最簡單的地圖,通過修改地圖數組,我們就能做出很多不一樣的地圖。

下面附上第一步的完整代碼。

#include <stdio.h>
#include <stdlib.h>
#define H 23
#define W 75

int a[H][W];        //地圖數組

void init()         //程序開始時的初始化操作
{
    int i,j;
    for(i=0; i<H; i++)
    {
        a[i][0]=1;          //讓第一列為1
        a[i][W-1]=1;        //讓最后一列為1
    }
    for(j=0; j<W; j++)
    {
        a[0][j]=1;      //讓第一行為1
        a[H-1][j]=1;    //讓最后一行為1
    }
}

void drawMap()      //畫地圖
{
    int i,j;
    for(i=0;i<H;i++)
    {
        for(j=0;j<W;j++)            //兩重for循環遍歷數組
        {
            if(a[i][j]==0)          //為0輸出空格
                printf(" ");
            else                    //為1輸出#
                printf("#");
        }
        printf("\n");               //別忘了換行
    }
}

int main()
{
    init();
    drawMap();
    return 0;
}

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM