這篇文章主要為大家展示了C#如何實現貪吃蛇游戲,內容簡而易懂,希望大家可以學習一下,學習完之后肯定會有收獲的,下面讓小編帶大家一起來看看吧。
貪吃蛇分析
游戲規則:
1、蛇起始長度5,每吃一個食物增加1,大15過關
2、蛇用藍色表示,食物用綠色,障礙物用黑色
3、當蛇碰到自己、墻壁、障礙物則游戲失敗
4、方向鍵控制蛇的移動方向,蛇不可反方向移動,如正在向上移動,不能馬上向下,只能向左、右、上運動
5、每過關一次速度提升一次
大概思路:
1、地圖用網格的形式表示,蛇由方格組成,保存在list中
2、1中提到了方格,方格保存的內容有,顏色,坐標,是否可以通過,是否是食物
3、向前移動一次,將前面方格添加進蛇列表中,將列表最后一個移除,若為前方格子為食物,則不移除最后一個
4、使用while死循環來做整個移動
5、空格鍵為加速鍵,通過修改while循環sleep時間來實現加速
包括了3個類一個主窗體,分別是Node(用來表示方格)、Map(用來表示地圖)、Serpent(用來表示蛇),另外一個主窗體。下面依次把代碼貼上,基本上每個方法都有注釋
代碼1:
using System; using System.Collections.Generic; using System.Text; using System.Drawing; namespace EngorgeSerpent { /// <summary> /// 節點 /// </summary> class Node { #region 字段 private int x; private int y; private int width = 10; private bool isFood = false; private bool isPass = true;//是否可通過 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 /// <summary> /// 設置食物參數 /// </summary> /// <param name="_isFood"></param> public void SetFood(bool _isFood) { IsFood = _isFood; if (_isFood) { ThisColor = FoodColor; } else { ThisColor = BgColor; } } /// <summary> /// 設置障礙物參數 /// </summary> /// <param name="_isHinder">是否為障礙物</param> public void SetHinder(bool _isHinder) { IsPass =! _isHinder; if (_isHinder) { ThisColor = HinderColor; } else { ThisColor = BgColor; } } /// <summary> /// 設置蛇顏色 /// </summary> /// <param name="_isSerpent"></param> public void SetSerpent(bool _isSerpent) { IsPass = !_isSerpent; if (_isSerpent) { ThisColor = SerpentColor; } else { ThisColor = BgColor; } } #region 構造函數 public Node() { thisColor = bgColor; } /// <summary> /// 有參構造方法 /// </summary> /// <param name="_x">相對x坐標</param> /// <param name="_y">相對y坐標</param> /// <param name="_width">邊長</param> /// <param name="_isFood">是否是食物</param> /// <param name="_isPass">是否可通過</param> public Node(int _x, int _y, int _width, bool _isFood, bool _isPass) { thisColor = bgColor; X = _x; Y = _y; Width = _width; IsFood = _isFood; IsPass = _isPass; } /// <summary> /// 有參構造方法 /// </summary> /// <param name="_x">相對x坐標</param> /// <param name="_y">相對y坐標</param> /// <param name="_width">邊長</param> public Node(int _x, int _y, int _width) { X = _x; Y = _y; Width = _width; } /// <summary> /// 有參構造方法 /// </summary> /// <param name="_x">相對x坐標</param> /// <param name="_y">相對y坐標</param> public Node(int _x, int _y) { X = _x; Y = _y; } #endregion #region 屬性 /// <summary> /// 蛇顏色 /// </summary> public Color SerpentColor { get { return serpentColor; } } /// <summary> /// 背景色 /// </summary> public Color BgColor { get { return bgColor; } } /// <summary> /// 食物顏色 /// </summary> public Color FoodColor { get { return foodColor; } } /// <summary> /// 障礙物顏色 /// </summary> public Color HinderColor { get { return hinderColor; } } /// <summary> /// 當前顏色 /// </summary> public Color ThisColor { get { return thisColor; } set { thisColor = value; } } /// <summary> /// 獲取或設置相對橫坐標 /// </summary> public int X { get { return x; } set { x = value; } } /// <summary> /// 獲取或設置相對縱坐標 /// </summary> public int Y { get { return y; } set { y = value; } } /// <summary> /// 獲取或設置節點邊長 /// </summary> public int Width { get { return width; } set { width = value; } } /// <summary> /// 獲取或設置是否為食物 /// </summary> public bool IsFood { get { return isFood; } set { isFood = value; } } /// <summary> /// 獲取或設置是否可以通過 /// </summary> public bool IsPass { get { return isPass; } set { isPass = value; } } #endregion } }
另外有需要云服務器可以了解下創新互聯建站vcdvsql.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
網頁標題:C#如何實現貪吃蛇游戲-創新互聯
分享URL:http://vcdvsql.cn/article44/cccihe.html
成都網站建設公司_創新互聯,為您提供建站公司、定制網站、域名注冊、標簽優化、網站內鏈、微信公眾號
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯