開發環境:
microsoft visual studio .net 2003
開發語言:
c#
開發者:
red_angelx
程式介面如圖一所示圖一
主介面左邊是遊戲區域,由乙個
picturebox
和lable
組成,picturebox
用來繪製遊戲介面,
label
用來顯示遊戲是否執行。
右邊是狀態區域,由若干
label
組成,用來表示遊戲中的狀態引數。
遊戲主體分為
3個主要模組:蛇身基本單元,蛇身結構位置,蛇身的移動控制。這
3個單元各用乙個
class
來描述基本單元用乙個矩形(
rectangle
)來描述,詳細構造如下
private
rectangle m_rect;
/**/
/************建構函式,傳入頂點座標和塊寬度***************
*/
public
snakesegment(point location,
intwidth)
...
//屬性
public
rectangle rectangle
...}
public
point location
...set
...}
public
size size
...}
1.2
蛇身結構位置模組 snake.cs
蛇身由若干基本單元組成,這些單元存放在乙個queue結構中,queue處於命名空間
system.collections
之下,表示物件的先進先出集合。snake類裡面主要包含add(新增新物件),clear(清除物件),slither(蛇身移動), pointonsnake(判斷某點是否在蛇身內部)幾個方法。
//向蛇身新增乙個新節點
public
void
add(point newlocation)
...else
if(m_segs.count
==maxsnakelength)
...//
新增到m_segs尾部
m_segs.enqueue(newhead);}
//
用新增乙個新蛇頭刪除蛇尾的方法來移動蛇身
public
void
slither(point newlocation)
...
//判斷某點是否在蛇身內部
public
bool
pointonsnake(point pt)
...}
return
false;}
移動控制模組定義了蛇頭的座標,移動的方向等資訊,並且判斷下一步移動的點的座標。
首先定義了三個全域性變數
private
point m_location;
//蛇頭的座標
private
intm_increment;
//每次移動增加的象素
private
snakedirection m_direction;
//移動的方向
其中的
snakedirection
的定義為
internal
enum
snakedirection
...
移動座標判斷函式
move
的**如下
該函式還有乙個不帶引數的過載,
internal
void move(),
內部呼叫move(snakedirection.none)來實現。
主窗體實現遊戲的核心是設定乙個
timer
來實現遊戲的更新和介面的重繪,其中通過窗體接受鍵盤的按鍵來設定蛇身的移動方向,通過
picturebox
的paint
事件來更新遊戲的畫面,通過
timer
事件來移動蛇身和判斷是否吃到食物是否遊戲結束等邏輯處理。也可以通過改變
timer
的時間來改變蛇身移動的
下圖是遊戲進行中截圖
這個作品只是個小遊戲,用來熟悉
gdi繪圖和一些相關構造,主要用於休閒娛樂。
貪吃蛇遊戲
貪吃蛇遊戲 結構化程式設計 c語言程式設計 重要的的是結構化的程式設計思想 include include include include include include define field width 300 就做20個格仔的 define field height 300 define f...
貪吃蛇遊戲
include include include include include 使用當前時間做種子 enum dir 列舉型別enum dir 圍牆 class fencef 定義物件 畫框框 void fence initfence 顯示框框 void fence outputf int snak...
貪吃蛇遊戲
閒暇之餘,學習前輩經驗,再利用執行緒和窗體自己做了個貪吃蛇小遊戲。遊戲帶有加速功能,能顯示遊戲分數。借鑑的朋友們後期還可以在此基礎上增加其他功能。下面給大家顯示遊戲 以及詳細註解 一 bean類 蛇和食物的構造基礎,author deng public class node public node ...