cpp學習(四)貪食蛇—繪製靜態圖形

首先,我們先來理一下大致思路。
首先,要有地圖,再有蛇,還要有食物
那我們就先畫一張地圖出來吧!
畫地圖的過程中,光標在不斷移動,包括只有貪食蛇的移動,也都是光標移動後的打印與擦除,因此,我們先定義一個設置屏幕光標的函數setPos(),

void SetPos(int nX, int nY) //設置光標的位置
{
    COORD cPos;     
    /*  可以將光標至於COORD上,按F12查看COORD的定義,是一個座標結構體, 
    函數也可以,將光標置於一個函數名上,F12即可轉到定義
    轉到定義後,按ctrl+減號,即可退回原位置。 */
    HANDLE hOutPut;     //句柄變量,在此不做講解,屬於Windows裏的知識
    cPos.X = nX;
    cPos.Y = nY;
    hOutPut = GetStdHandle(STD_OUTPUT_HANDLE);      //以下兩個都是Windows的系統函數,用來設置光標的位置
    SetConsoleCursorPosition(hOutPut, cPos);        //在此,我們將構建好的座標傳入,即可設置光標位置
    //對於Windows系統函數不必深究,如果想要學習Windows開發可以瞭解一下
}

通過不斷改變光標位置,在合適的位置打印即可繪製出想要的地圖。
在此我們畫一張40*40的地圖

void DrawMap()//創建地圖
{
    int i;
    for (i = 0; i < 80; i += 2)//打印上下邊框
    {
        Pos(i, 0);
        printf("■");
        Pos(i, 40);
        printf("■");
    }
    for (i = 1; i < 40; i++)//打印左右邊框
    {
        Pos(0, i);
        printf("■");
        Pos(80, i);
        printf("■");
    }
}

現在先來運行一下程序:

運行後結果:
cpp學習(四)貪食蛇—繪製靜態圖形

簡易的地圖已經畫好了

現在我們再來畫蛇,
首先,蛇身是一個不定長的線性數據結構,在此我們採用鏈表的方式來存儲,
typedef struct _SNACK {
int x;
int y;
struct _SNACK* next;
}SNACK;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章