亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

兵棋系列2----兵棋游戲中地圖滑動和委托消息

2019-11-17 02:44:30
字體:
來源:轉載
供稿:網友

兵棋系列2----兵棋游戲中地圖滑動和委托消息

  前幾天寫了一個六邊形陣列的算法,今天周末比較閑,下午沒事就做了做兵棋的地圖操作,一點一點的做吧,總會做好,畢竟我也經常玩各種棋,對做一個這類型的小游戲非常感興趣。

首先來解釋下,下面要出現代碼的操作。如上圖,當鼠標指針移動到地圖的四個邊時,地圖會自動左右上下滑動(地圖比這個from要大很多,不這么做地圖顯示不完整了,不要跟我說用滾動條,那個給人感覺不好,這也是兵棋里不會缺少的操作吧),同時下面的消息框會記錄鼠標的位置,這個消息框前期為我開發時顯示一些測試信息用的,后期應該會把它改成一個功能區(部隊參數、將領參數、環境參數、消息顯示等等吧)

  下面把源代碼放出來,懂得大大們可以指點下怎么做。


  C#開發中,控件和控件之間的消息傳遞有多種方式,我一般選擇委托,畢竟靈活方便。以下是兩種傳遞消息的模式,我選擇了第一個,放棄了第二個;其實個人覺得第二個方法更優秀,它作為一個繼承基類,可以很安全的把消息傳遞給它的上層類;第一種采用靜態,優勢是靈活方便,弊端是一個委托幾乎只在一個功能上使用。

選擇的傳遞消息模式

  1 using System;  2 using System.Collections.Generic;  3 using System.Linq;  4 using System.Text;  5   6 namespace UI  7 {  8     public enum MsgType  9     { 10         /// <summary> 11         /// 常規消息顯示(黑色) 12         /// </summary> 13         Show, 14         /// <summary> 15         /// 提示信息(綠色) 16         /// </summary> 17         Info, 18         /// <summary> 19         /// 狀態欄顯示 20         /// </summary> 21         State, 22         /// <summary> 23         /// 錯誤消息,可識別,可控類型(藍色) 24         /// </summary> 25         Error, 26         /// <summary> 27         /// 警告消息,程序異常,不可處理(紅色) 28         /// </summary> 29         Warn, 30         /// <summary> 31         /// 他人發送消息的顏色 32         /// </summary> 33         OtherMessage, 34         /// <summary> 35         /// 本人發送消息的顏色 36         /// </summary> 37         OwnerMessage 38     } 39  40     class MsgEventArgs 41     { 42         PRivate string _message; 43  44         public string Message 45         { 46             get { return _message; } 47             set { _message = value; } 48         } 49  50         private MsgType _type; 51  52         public MsgType Type 53         { 54             get { return _type; } 55             set { _type = value; } 56         } 57  58         public MsgEventArgs(string msg) 59         { 60             this._message = msg; 61  62             this._type = MsgType.Show; 63         } 64         public MsgEventArgs(string msg, MsgType type) 65         { 66             this._message = msg; 67             this._type = type; 68         } 69     } 70  71     class MsgEvnet 72     { 73         public delegate void MsgEvent(object sender, MsgEventArgs msg); 74         public static event MsgEvent msgEvent; 75  76         public static void SendMsg(string msg) 77         { 78             if (MsgEvnet.msgEvent != null) 79             { 80                 MsgEvnet.msgEvent(null, new MsgEventArgs(msg)); 81             } 82         } 83  84         public static void SendMsg(string msg, MsgType type) 85         { 86             if (MsgEvnet.msgEvent != null) 87             { 88                 MsgEvnet.msgEvent(null, new MsgEventArgs(msg, type)); 89             } 90         } 91  92         public static void SendMsg(object sender, string msg) 93         { 94             if (MsgEvnet.msgEvent != null) 95             { 96                 MsgEvnet.msgEvent(sender, new MsgEventArgs(msg)); 97             } 98         } 99 100         public static void SendMsg(object sender, string msg, MsgType type)101         {102             if (MsgEvnet.msgEvent != null)103             {104                 MsgEvnet.msgEvent(sender, new MsgEventArgs(msg, type));105             }106         }107     }108 }
消息委托類

放棄的傳遞消息模式

 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5  6 namespace UI 7 { 8     public enum MsgType 9     {10         /// <summary>11         /// 常規消息顯示(黑色)12         /// </summary>13         Show,14         /// <summary>15         /// 提示信息(綠色)16         /// </summary>17         Info,18         /// <summary>19         /// 狀態欄顯示20         /// </summary>21         State,22         /// <summary>23         /// 錯誤消息,可識別,可控類型(藍色)24         /// </summary>25         Error,26         /// <summary>27         /// 警告消息,程序異常,不可處理(紅色)28         /// </summary>29         Warn,30         /// <summary>31         /// 他人發送消息的顏色32         /// </summary>33         OtherMessage,34         /// <summary>35         /// 本人發送消息的顏色36         /// </summary>37         OwnerMessage38     }39 40     public class MsgEventArgs : EventArgs41     {42         public string Message;43         public MsgType Type;44 45         public MsgEventArgs(string msg)46         {47             this.Message = msg;48 49             this.Type = MsgType.Show;50         }51         public MsgEventArgs(string msg, MsgType type)52         {53             this.Message = msg;54             this.Type = type;55         }56     }57 58     public class MsgEvent59     {60         public event EventHandler<MsgEventArgs> msgEvent;61 62         public void SendMsg(string msg)63         {64             if (this.msgEvent != null)65             {66                 this.msgEvent(this, new MsgEventArgs(msg));67             }68         }69 70         public void SendMsg(string msg, MsgType type)71         {72             if (this.msgEvent != null)73             {74                 this.msgEvent(this, new MsgEventArgs(msg, type));75             }76         }77     }78 }
放棄的消息傳遞模式


  下面這段代碼之前放出來過(http://www.49028c.com/preacher/p/4105810.html),做了幾點修改,計算的方式:根據每個正六邊形的中心點,計算出下三邊的相對位置然后繪制下三邊。以下算法中,把之前的基類Control改為了Label,主要方便控件透明,Control為基類是不支持控件透明。

六邊形陣列繪制算法

  1 using System;  2 using System.Drawing.Drawing2D;  3 using System.Drawing;  4 using System.Windows.Forms;  5 using System.Collections.Generic;  6   7 namespace UI.Controls  8 {  9     public class SixSidesControl : Label 10     { 11         double G3 = Math.Sin(60 * Math.PI / 180);//二分之根號三 12         private int m_sideLength = 20; 13  14         public int SideLength 15         { 16             get { return m_sideLength; } 17             set 18             { 19                 m_sideLength = value; 20                 Invalidate(); 21             } 22         } 23  24  25         private float m_lineThickness = 1; 26  27         public float LineThickness 28         { 29             get { return m_lineThickness; } 30             set 31             { 32                 m_lineThickness = value; 33                 Invalidate(); 34             } 35         } 36  37  38         private Color m_lineColor = Color.Black; 39  40         public Color LineColor 41         { 42             get { return m_lineColor; } 43             set 44             { 45                 m_lineColor = value; 46                 Invalidate(); 47             } 48         } 49  50         public SixSidesControl() 51         { 52             SetStyle(ControlStyles.UserPaint, true); 53             SetStyle(
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品网址在线| 一本一本久久a久久精品综合小说| 国产精品国产福利国产秒拍| 美女福利视频一区| 成人黄在线观看| 亚洲精品影视在线观看| 日韩精品一区二区视频| 国产精品久久久久久av| 欧美激情极品视频| 国产热re99久久6国产精品| 久久久久久久网站| 欧美日韩精品在线视频| 91国内揄拍国内精品对白| 久久精品国亚洲| 成人性教育视频在线观看| 欧美诱惑福利视频| 久久久av亚洲男天堂| 日本久久久a级免费| 国产不卡在线观看| 日韩美女在线播放| 中日韩午夜理伦电影免费| 自拍偷拍亚洲精品| 伊人激情综合网| 欧美性猛交99久久久久99按摩| 久久91亚洲精品中文字幕| 亚洲第一黄色网| 日韩av影视综合网| 欧美xxxx14xxxxx性爽| 亚洲一级免费视频| 精品国产一区二区三区久久狼5月| 日本成人激情视频| 日韩一区二区精品视频| 国产精品亚洲一区二区三区| 中文字幕日韩av| 国产一区香蕉久久| 91视频免费在线| 日韩免费在线播放| 国产福利精品av综合导导航| 国产精品入口夜色视频大尺度| 日韩欧美aaa| 久久精品国产亚洲一区二区| 91精品国产乱码久久久久久久久| 亚洲男人天堂网站| 在线一区二区日韩| 久久福利视频导航| 国产亚洲激情视频在线| 国产精品视频网站| 亚洲人成在线免费观看| 欧美人成在线视频| 在线日韩av观看| 国产精品一区二区在线| 91精品国产91久久久久久久久| 久久精品福利视频| 国产精品第一页在线| 亚洲专区国产精品| 亚洲欧洲国产精品| **欧美日韩vr在线| 日韩精品在线免费观看| 亚洲精品国产综合区久久久久久久| 色综合天天狠天天透天天伊人| 欧美做受高潮电影o| 亚洲一区二区三区乱码aⅴ蜜桃女| 91亚洲精品在线| 亚洲成人黄色网址| 国产99久久精品一区二区 夜夜躁日日躁| 国产69精品久久久久99| 亚洲国产成人在线播放| 亚洲精品理论电影| 国产成人涩涩涩视频在线观看| 国产精品一区二区三区在线播放| 91在线观看欧美日韩| 91免费观看网站| 久久精品国产91精品亚洲| 国外成人性视频| 日韩在线观看你懂的| 色综合久久久久久中文网| 国产裸体写真av一区二区| 中文在线资源观看视频网站免费不卡| 国产精品久久综合av爱欲tv| 日韩电影中文字幕在线观看| 欲色天天网综合久久| 日韩在线视频一区| 一区二区国产精品视频| www亚洲精品| 欧美日韩在线另类| 国产日韩欧美日韩| 日韩有码片在线观看| 亚洲色图综合久久| 97国产在线观看| 正在播放国产一区| 欧美成人亚洲成人日韩成人| 日韩欧美中文免费| 久久久久中文字幕2018| 国产精品av在线播放| 狠狠色狠色综合曰曰| 日韩中文字幕不卡视频| 欧美中文字幕在线观看| 国产脚交av在线一区二区| 国产视频精品自拍| 亚洲视频在线观看视频| 中文字幕亚洲一区二区三区| 美女av一区二区| 欧美一区二区三区四区在线| 日本精品免费观看| 国产欧美在线观看| 精品国产依人香蕉在线精品| 久久99热精品这里久久精品| 日韩在线不卡视频| 久久久久五月天| 色偷偷偷亚洲综合网另类| 91国产视频在线| 日韩精品极品在线观看播放免费视频| 亚洲尤物视频网| 91情侣偷在线精品国产| 亚洲高清av在线| 亚洲国产精品高清久久久| 亚洲男人天堂视频| 欧美黑人巨大精品一区二区| 91国产美女在线观看| 国产精品久久久久久久电影| 欧美日韩亚洲一区二| 国产精品一区二区三区免费视频| 91欧美精品成人综合在线观看| 亚洲第一视频网站| 成人97在线观看视频| 精品国产自在精品国产浪潮| 久久不射电影网| 色综合老司机第九色激情| 97在线视频观看| 日韩小视频在线观看| 成人国产在线视频| 精品国产依人香蕉在线精品| 久久久久久亚洲精品中文字幕| 久久久久久久久久亚洲| 精品国产福利在线| 欧美在线中文字幕| 亚洲丁香久久久| 97在线视频免费观看| 亚洲成人免费网站| 欧美性猛交xxxx免费看漫画| 国内外成人免费激情在线视频| 欧美性开放视频| 欧美在线一区二区三区四| 精品久久中文字幕| 国产91亚洲精品| 亚洲va久久久噜噜噜久久天堂| 欧洲中文字幕国产精品| 国产精品一区二区久久久久| 亚洲欧美精品一区| 欧美日韩一区二区在线播放| 欧美日韩免费在线| 国产美女主播一区| 日韩综合视频在线观看| 正在播放欧美视频| 国产精品尤物福利片在线观看| 欧美激情在线观看| 亚洲欧洲xxxx| 国产精品99一区| 国产成人精品日本亚洲专区61| 精品香蕉在线观看视频一| 久久国产天堂福利天堂| 66m—66摸成人免费视频| 欧美日本国产在线| 91久久嫩草影院一区二区|