C 實戰小專案貪吃蛇網遊化框架搭建2

2021-08-02 07:39:46 字數 1885 閱讀 4305

上篇記錄了main函式、game類和food類的設計,本片繼續記錄snake類的設計。

同樣從game類中對snake類的需求出發,snake類用乙個deque儲存一系列點,每次迴圈需要根據其方向完成點的更新、方向更新、食物是否與蛇身重合等等一些列功能:

#pragma once

#include #include "point.h"

#include class snake

,, }, char c = 'd') :body(li), direction(c) ;

void paintbody(handle);

bool hititself()

bool overlap(const point &p)//判斷重新整理的食物是否與蛇身重合

bool senddata(int &sock);

bool recvdata(int &sock);

void painthead(handle hand)

void tailclear(handle hand)

const point& head()

bool changedirection(char &k);

void update();

void reset();

bool press(char &k)

private:

dequebody;

char direction;

size_t bodysize;

};inline

bool snake::changedirection(char &k)

return false;

}inline

void snake::update()

}

蛇身繪製方面,因為整個程式中food的繪製顏色及符號與蛇身一致,因此在吃上食物後不需進行任何操作,而未吃上食物則只需在頭部多繪製乙個點並抹掉尾部的點即可。因為需要在game中判定是否撞牆,因此定義乙個返回頭部資料的介面;reset完成資料的重置。

###五、point類的設計

point類基本上就是乙個pair加上了幾個介面,需要能夠完成point的繪製及清除、資料的返回即可:

#pragma once

#include #include using namespace std;

class point

void paint(handle hand)

void clear(handle hand)

int& xx()

const int& xx() const

int& yy()

const int &yy() const

bool operator==(const point& point) const

private:

int x;

int y;

};

###六、公用資料和函式

static handle hout = getstdhandle(std_output_handle);

static bool chekans(const int &sock)

buff[n] = 0;

return (strcmp("lwb", buff) ? false : true);

}static void setoutputposition(int x, int y, handle hand)

static int n;

chekanks用於check伺服器在成功接受資料後返回的訊息,setoutputposition則用於設定游標位置,這個函式在程式中使用很多,主要是對setconsolecursorposition進行了封裝。n則用於一些函式的返回值檢測。

C語言小專案之貪吃蛇

設計思路 1 首先需要定義乙個確定大小的範圍,即乙個矩形範圍。需要定義兩個巨集height width分別代表長和寬。2 蛇身設計需要定義乙個一定大小的陣列,由於矩形範圍是height width 所以可以定義陣列大小為 height width即可。3 蛇所吃的食物的設計需要乙個在矩形範圍內隨便出...

前端練手小專案 貪吃蛇

雖然不難 但是可以說 從頭到尾都是自己想的!開心 下面說一下js方面的詳細思路以及遇到的問題,獨立寫下來還是收穫比較大 這裡我的規則就是簡化的版本,也就是隨機出現食物,每次蛇吃到長度就加一。這個專案還比較簡單,因此事件需要繫結的就三個 1 按鍵按鈕 給document全域性繫結,這裡採用keyup而...

C語言 貪吃蛇遊戲專案

蛇的初始化實際就是二維陣列的初始化,該二維陣列儲存兩個值,裡面包含該蛇身體的座標資訊,他出現的初始位置是模擬座標的中間位置。蛇的移動是通過改變二維陣列座標來實現的,例如當蛇向右前進乙個單位,則將尾每乙個身體位置的座標更改,同時改變舌頭 蛇身以及蛇尾的方向。這樣整體來看蛇就前進了乙個單位。當蛇吃了正常...