這篇文章主要為大家展示了C#如何實(shí)現(xiàn)貪吃蛇游戲,內(nèi)容簡(jiǎn)而易懂,希望大家可以學(xué)習(xí)一下,學(xué)習(xí)完之后肯定會(huì)有收獲的,下面讓小編帶大家一起來(lái)看看吧。
創(chuàng)新互聯(lián)公司專注于企業(yè)網(wǎng)絡(luò)營(yíng)銷推廣、網(wǎng)站重做改版、銅鼓網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、成都h5網(wǎng)站建設(shè)、成都商城網(wǎng)站開(kāi)發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為銅鼓等各大城市提供網(wǎng)站開(kāi)發(fā)制作服務(wù)。貪吃蛇分析
游戲規(guī)則:
1、蛇起始長(zhǎng)度5,每吃一個(gè)食物增加1,大15過(guò)關(guān)
2、蛇用藍(lán)色表示,食物用綠色,障礙物用黑色
3、當(dāng)蛇碰到自己、墻壁、障礙物則游戲失敗
4、方向鍵控制蛇的移動(dòng)方向,蛇不可反方向移動(dòng),如正在向上移動(dòng),不能馬上向下,只能向左、右、上運(yùn)動(dòng)
5、每過(guò)關(guān)一次速度提升一次
大概思路:
1、地圖用網(wǎng)格的形式表示,蛇由方格組成,保存在list中
2、1中提到了方格,方格保存的內(nèi)容有,顏色,坐標(biāo),是否可以通過(guò),是否是食物
3、向前移動(dòng)一次,將前面方格添加進(jìn)蛇列表中,將列表最后一個(gè)移除,若為前方格子為食物,則不移除最后一個(gè)
4、使用while死循環(huán)來(lái)做整個(gè)移動(dòng)
5、空格鍵為加速鍵,通過(guò)修改while循環(huán)sleep時(shí)間來(lái)實(shí)現(xiàn)加速
包括了3個(gè)類一個(gè)主窗體,分別是Node(用來(lái)表示方格)、Map(用來(lái)表示地圖)、Serpent(用來(lái)表示蛇),另外一個(gè)主窗體。下面依次把代碼貼上,基本上每個(gè)方法都有注釋
代碼1:
using System; using System.Collections.Generic; using System.Text; using System.Drawing; namespace EngorgeSerpent { ////// 節(jié)點(diǎn) /// class Node { #region 字段 private int x; private int y; private int width = 10; private bool isFood = false; private bool isPass = true;//是否可通過(guò) private Color bgColor = Color.FromArgb(224, 224, 224); private Color foodColor = Color.Green; private Color hinderColor = Color.Black; private Color thisColor; private Color serpentColor = Color.Chocolate; #endregion ////// 設(shè)置食物參數(shù) /// /// public void SetFood(bool _isFood) { IsFood = _isFood; if (_isFood) { ThisColor = FoodColor; } else { ThisColor = BgColor; } } ////// 設(shè)置障礙物參數(shù) /// /// 是否為障礙物 public void SetHinder(bool _isHinder) { IsPass =! _isHinder; if (_isHinder) { ThisColor = HinderColor; } else { ThisColor = BgColor; } } ////// 設(shè)置蛇顏色 /// /// public void SetSerpent(bool _isSerpent) { IsPass = !_isSerpent; if (_isSerpent) { ThisColor = SerpentColor; } else { ThisColor = BgColor; } } #region 構(gòu)造函數(shù) public Node() { thisColor = bgColor; } ////// 有參構(gòu)造方法 /// /// 相對(duì)x坐標(biāo) /// 相對(duì)y坐標(biāo) /// 邊長(zhǎng) /// 是否是食物 /// 是否可通過(guò) public Node(int _x, int _y, int _width, bool _isFood, bool _isPass) { thisColor = bgColor; X = _x; Y = _y; Width = _width; IsFood = _isFood; IsPass = _isPass; } ////// 有參構(gòu)造方法 /// /// 相對(duì)x坐標(biāo) /// 相對(duì)y坐標(biāo) /// 邊長(zhǎng) public Node(int _x, int _y, int _width) { X = _x; Y = _y; Width = _width; } ////// 有參構(gòu)造方法 /// /// 相對(duì)x坐標(biāo) /// 相對(duì)y坐標(biāo) public Node(int _x, int _y) { X = _x; Y = _y; } #endregion #region 屬性 ////// 蛇顏色 /// public Color SerpentColor { get { return serpentColor; } } ////// 背景色 /// public Color BgColor { get { return bgColor; } } ////// 食物顏色 /// public Color FoodColor { get { return foodColor; } } ////// 障礙物顏色 /// public Color HinderColor { get { return hinderColor; } } ////// 當(dāng)前顏色 /// public Color ThisColor { get { return thisColor; } set { thisColor = value; } } ////// 獲取或設(shè)置相對(duì)橫坐標(biāo) /// public int X { get { return x; } set { x = value; } } ////// 獲取或設(shè)置相對(duì)縱坐標(biāo) /// public int Y { get { return y; } set { y = value; } } ////// 獲取或設(shè)置節(jié)點(diǎn)邊長(zhǎng) /// public int Width { get { return width; } set { width = value; } } ////// 獲取或設(shè)置是否為食物 /// public bool IsFood { get { return isFood; } set { isFood = value; } } ////// 獲取或設(shè)置是否可以通過(guò) /// public bool IsPass { get { return isPass; } set { isPass = value; } } #endregion } }
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站www.cdcxhl.com,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。