關於貪吃蛇需要用的物件: 1.蛇 (snake)2.食物(food) 3. 記錄蛇身的位置(snake_body[x,y]) 4 .食物位置food[x,y]
簡單業務: 1.蛇身移動
2.隨機食物
3.蛇頭與食物重疊
4.窗體檢測上下左右方向,控制蛇身體移動方向
好了,廢話不多說,開始:在頁面拖入panle1,兩個lable和button按鈕,頁面有點醜 ,關於頁面位置的調整在load實事件中調整,
首先定義成員變數,score 得分,每吃掉一次食物+1、 _key_name 初始蛇的移動方向(鍵盤)、_snake_body是蛇身陣列、_random產生隨機數定義食物位置
#region 定義成員變數
///
/// 得分
///
private int score = 0;
///
/// 鍵盤狀態,初始為 start
///
string _key_name = "start";
///
/// 蛇身陣列
///
label _snake_body = new label[3000];
///
/// 隨機數生成food
///
random _random = new random();
///
/// 記錄位置
///
int snake_boby_content_x = 0, snake_boby_content_y = 0;
#endregion
好了 ,接下來,初始化捨身和食物 在窗體的初始化事件form1_load中新增長度為5個label的蛇身
乙個label的初始大小為10*10,並設定其的一些屬性。
其中timer_tick為蛇的移動事件,既每隔一次timer.tick執行一次timer_tick
form1_keydown為對鍵盤的監控,_point 指定panel的位置,snake_food()生成食物
bitmap _bitmap = new bitmap(resource.zyd);
intptr h = _bitmap.gethicon();
this.icon = system.drawing.icon.fromhandle(h);
this.text="snake張益達";
this.width = 1000;
this.height = 850;
panel1.borderstyle = borderstyle.fixedsingle;
panel1.width = 800;
panel1.height = 840;
point _point = new point
;point _point1 = new point
;label1.location = _point;
txtscore.location = _point1;
//初始化蛇 5個label 乙個label x =y=10
for (int i=0;i<8;i++) ;
this.backcolor = color.white;
//加入蛇體型
_snake_body[i] = snake_body_content;
panel1.controls.add(snake_body_content);
}//每隔一段時間發生右移動
timer1.tick += new eventhandler(timer_tick);
timer1.interval = 1000;
//檢測事件監控
snake_food();
}接下來就是蛇體移動事件 ,在timer中執行
public void timer_tick(object sender,eventargs e)
if (_key_name == "right") //鍵盤狀態 向右
if (_key_name == "up") //鍵盤狀態向上
if (_key_name == "left")
if (_key_name == "down")
//穿牆設定
if (x > 800)
if (y > 850)
if (x < 0)
if (y < 0)
///
/// 鍵盤相應事件
///
///
///
private void formzyd_keydown(object sender, keyeventargs e)
if (_key_name == "left")
if (_key_name == "up")
if (_key_name == "down")
//每按一次,判斷是否與食物重合
eat_time();
}//移動
public void snakemove(int x,int y)
if (i == 1)
else
}}此處關於keydown檢測不了方向鍵問題解決方法如下:
protected override bool processdialogkey(keys keydata)
;panel1.controls.add(food);
}eat_time方法判別是否和蛇頭相遇,如果相遇,呼叫snake_eat方法蛇長加一,且改變食物位置
snake_eat遍歷到蛇尾部,生成乙個label位置設為蛇尾。
吃掉一次食物加分,並且
///
/// 判斷是否吃到實物
///
public void eat_time()
if (_label.tag.tostring() == "0".tostring())//snake
if (x1 == x2 && y1 == y2) ,,,");
//吃掉食物
snake_eat();
score++;
txtscore.text=$"共分";
//將食物移位 更換座標
foreach (label lb in this.panel1.controls)}}
}}///
/// 吃掉食物
///
public void snake_eat() ;
_snake_body[i] = snake_boby_content;
snake_boby_content.backcolor = color.black;
this.controls.add(snake_boby_content);
開始按鈕:
private void btnstart_click(object sender, eventargs e)
暫停按鈕:
private void btnsuspend_click(object sender, eventargs e)
貪吃蛇小遊戲
1 doctype html 2 html 3 head 4 title snake title 5head 6 body style text align center margih 100px background color aaaaaa 7 canvas id canv width 400 ...
C 貪吃蛇小遊戲
自學了幾天c 嘗試寫了乙個貪吃蛇小遊戲,比較詳細地做了注釋,實現 1 貪吃蛇基本功能 2 長按加速 3 計分板 xaml 及介面 namespace 貪吃蛇 新食物生成 public void newfoodgenerate 計時器每乙個計時週期內的時間處理程式 void timer tick ob...
貪吃蛇小遊戲實現
index.html style.css mapindex.js tools.js 自呼叫函式傳入window的目的,是讓變數可以被壓縮 防止undefined重新命名,也可以被壓縮 function window,undefined 暴露tools給window window.tools tool...