c winform貪吃蛇小遊戲

2021-09-29 06:27:09 字數 3559 閱讀 7432

關於貪吃蛇需要用的物件:   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...