class map
; enum;
char map[row][col]; //地圖
map();
void drawmap(); //繪製地圖
bool isvaildpoint(int x, int y);
};
1.
利用列舉來定義常量,在類外部可以通過作用域解析來獲取列舉常量,便於所有類的交流.
2.通過二維陣列儲存地圖,在構造的時候讀取並繪製地圖,
3.定義乙個外部介面,用於判斷點是否在地圖上.
class snack;
class dessert
//獲得積分
void makenewdessert(const snack &snack);
};
1.使用前向宣告,讓編譯器知道snack類的存在
2. makenewdessert
更新甜點.
class dessert;
class map;
class point
};class snack
bool isbody(int x, int y)const; //是否是蛇身的一部分
//移動蛇身
int movebody(map &map, dessert &d);
//操作符入佇列
void inmoves(move d);
int getv();
};
1.使用佇列快取操作.
2.蛇要移動的時候,先從操作佇列中讀取操作,如果為空,預設移動的方向為當前的方向.
參考**:
int snack::movebody(map &map, dessert &d) }
if(!flag) //沒有操作時自動行走
move = this->dirction;
this->dirction = move; //更新運動方向
switch(move)
if(!map.isvaildpoint(p.x, p.y) || this->isbody(p.x, p.y))
p.draw('#'); //畫新蛇頭
head.draw('*'); //更新舊蛇頭
if(d.x == p.x && d.y == p.y)
tail.draw(' '); //去掉舊蛇尾
for(int i = 0; i < len - 1; i++)
body[len - 1] = p;
return 2;
}void snack::inmoves(move d)
class gameplayer
; int getv();
void movehandle();
void updatemark();
int getmark();
};
1.
把遊戲邏輯的處理交給遊戲類
2.
presshandle();
處理按鍵輸入和執行
3.
getpress();
是內部方法,應該隱藏起來
4.
movehandle();
處理蛇身移動
#include #include #include #include "gameplayer.h"
#include #include #include using namespace std;
int main()
game.movehandle();
} cin.get();
return 0;
}
C 貪吃蛇二
小菜學習winform 一 貪吃蛇 說到oo可能一說一大堆,這裡面小菜只是簡單的把貪吃蛇抽象出來,先來說蛇,具有的屬性和行為,屬性比如蛇的長度 蛇的寬度 蛇的行動方向等 行為比如是否吃到食物 是否撞牆等,那我們可以抽象乙個蛇的類,這樣實現 1 using system 2using system.c...
C語言貪吃蛇
include include include include include include define screen width 40 遊戲螢幕寬度 define screen length 15 遊戲螢幕長度 define start x 16 螢幕起始x座標 define start y ...
C語言 貪吃蛇
include include include define framewidght 22 define frameheight 22 short generaterandnumber short a,short b void posconsolecursor short x,short y voi...