freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于c的網(wǎng)絡軍棋設計畢業(yè)設計(編輯修改稿)

2025-07-21 15:33 本頁面
 

【文章內(nèi)容簡介】 { Q = new int[25]。 Q[0] = 29。 //軍旗29 Q[1] = 30。 Q[2] = 30。 Q[3] = 30。//地雷30 Q[4] = 31。 Q[5] = 31。//炸彈31 Q[6] = 32。 Q[7] = 32。 Q[8] = 32。//工兵32 Q[9] = 33。 Q[10] = 33。 Q[11] = 33。//排長33 Q[12] = 34。 Q[13] = 34。 Q[14] = 34。//連長34 Q[15] = 35。 Q[16] = 35。//營長35 Q[17] = 36。 Q[18] = 36。//團長36 Q[19] = 37。 Q[20] = 37。//旅長37 Q[21] = 38。 Q[22] = 38。//師長38 Q[23] = 39。//軍長39 Q[24] = 40。//司令40 }即0為軍旗,1~3為地雷,4,5為炸彈,6~8為工兵,9~11為排長,12~14為連長,15,16為營長,17,18為團長,19,20為旅長,21,22為師長,23為軍長,24為司令。在Q數(shù)組中Q[24]=40而不直接寫為“司令”,所以為顯示圖片方便,這里Q[24]=40。25~49代表綠方棋子。綠方只要減去25(每方25個棋子)即可利用Q數(shù)組得知綠方棋子的含義,如27代表的是綠方地雷。對于軍棋游戲來說,規(guī)則非常簡單,就是按照先后順序在棋盤上走棋吃子,直到一方最先將對方的“軍旗”挖掉為勝。但在走棋過程中,需要考慮以下情況:(1) 是否為非棋子區(qū)。(2) 目標處是否是自己的棋子。(3) 判斷目標是否是行營,如果是則需判斷是否有子,如果沒有可以如象棋中的“士”一樣斜線走棋。(4) 判斷起始位置是否是鐵道線,如果是則考慮彎道、直道、棋盤正中間的33“田字”,否則只能移動一步。(5) “軍旗”棋子、地雷棋子不能走動。(6) 在“大本營”中的棋子不能移動。 可以看出走棋規(guī)則比較復雜。在設計時Go_Juge(int old_x,int old_y,int x,int y)判斷走棋的位置是否適當。 private bool Go_Juge(int old_x, int old_y, int x, int y)//判斷走棋的位置是否適當 { = () + old_x:old_y + () + : + Map[old_x, old_y].ToString()。 = () + x:y + () + Map[x, y].ToString()。 //是否是棋子區(qū)域 if ((x = 6 amp。amp。 y = 1 amp。amp。 y = 6) || (x = 12 amp。amp。 y = 1 amp。amp。 y = 6) || (x = 6 amp。amp。 y = 12 amp。amp。 y = 17) || (x = 12 amp。amp。 y = 12 amp。amp。 y = 17) || y 17) return false。 //目標位置是自己方的棋子 //Why***********if(IsmyChess(x,y)) return false。 //到行營,行營是否有子 if (Is_Home(x, y) amp。amp。 Map[x, y] != 101) return false。 //如“士”斜線從行營中出來********** if (Is_Home(old_x, old_y) amp。amp。 Map[x, y] == 101 amp。amp。 (x old_x) * (y old_y) == 1) return true。 //如“士”斜線走入行營************ if (Is_Home(x, y) amp。amp。 Map[x, y] == 101 amp。amp。 (x old_x) * (y old_y) == 1) return true。 //移動一步 if ((x old_x) == 1 amp。amp。 y == old_y || (y old_y) == 1 amp。amp。 x == old_x) return true。 //鐵道線 if (T_Juge(old_x, old_y, x, y)) return true。 //if(T_Juge(old_y,old_x,y,x)) return true。 return false。 }本程序中go_chess(int old_x,int old_y,int x,int y,int idx)完成走棋吃子功能,其中判斷以下幾種情況:(1) 雙方均為工兵到司令的棋子,則按大小比較決定保留那方棋子。(2) 其中一方是炸彈(31),則同時去掉。(3) 其中一方是地雷(30),對方為工兵,則留兵,否則留雷。(4) 其中一方是軍旗(29),則可以判斷輸贏。 注意:在發(fā)送走棋數(shù)據(jù)的時候我們?nèi)匀恍枰言兕嵉梗ò炎约旱钠灞P顛倒),即(x,y)坐標以(18x,18y)坐標發(fā)給對方。注意布陣是采用兩次單擊不同棋子來決定對調(diào)的,所以(old_x,old_y)是第一次單擊的棋子坐標,(x1,y1)是第二次單擊的棋子坐標。判斷布局棋子的位置是否適當是使用Layout_Judge(int old_x,int old_y,int x1,int y1)實現(xiàn)以下情況判斷:(1) 第一排不允許放置炸彈,由于布陣都在南方,因此第一排即(y1=12)。(2) 自己的軍旗只能放在大本營,由于布陣都在南方,因此大本營即x1==8amp。amp。y1==17||x1==10amp。amp。y1==17。(3) 后兩排不允許放置地雷,由于布陣都在南方,因此后兩排即y1==16||y1==17。 具體實現(xiàn)如下: //炸彈控件編號4,5,第一排(y1=12)不允許放置炸彈 if (Q[Map[old_x, old_y] % 25] == 31 amp。amp。 y1 == 12) return false。 if (Q[Map[x1, y1] % 25] == 31 amp。amp。 old_y == 12) return false。//第一排(y1=12)不允許放置炸彈31 if (Q[Map[old_x, old_y] % 25] == 29 amp。amp。 !(x1 == 8 amp。amp。 y1 == 17 || x1 == 10 amp。amp。 y1 == 17)) return false。//自己的軍旗29,只能放置在大本營 if (Q[Map[x1, y1] % 25] == 29 amp。amp。 !(old_x == 8 amp。amp。 old_y == 17 || old_x == 10 amp。amp。 old_y == 17)) return false。//自己的軍旗29,只能放置在大本營 if (Q[Map[x1, y1] % 25] == 30 amp。amp。 !(old_y == 16 || old_y == 17)) return false。//第1,2,3,4排不允許放置地雷30, if (Q[Map[old_x, old_y] % 25] == 30 amp。amp。 !(y1 == 16 || y1 == 17)) return false。//第1,2,3,4排不允許放置地雷, return true。//其余情況均可以 5軟件詳細設計新建一個Windows應用程序,項目命名為“軍旗”。在Visual 【解決方案資源管理器】窗口中。 控件屬性設計控件對象屬性屬性值Form窗體FrmchessTextButton控件button1Text保存布陣button2Text讀取布陣button3Text開始對戰(zhàn)button4Text聯(lián)機button5Text重新開始button6Text結(jié)束退出TextBox控件txt_portText3003txt_remoteportText3004txt_IPTextPictureBox控件qi_panToolStripStatusLabelToolStripStatusLabel1TextLabel控件Label3Text本地端口Label4Text對方端口Label5Text對方IPLabel1Text空,用于顯示起始棋盤坐標Label2Text空,用于顯示目標棋盤坐標 ,添加命名空間:using 。using 。using 。using 。添加以下字段: public partial class Form1 : Form { //在類class Form1中聲明私有的數(shù)據(jù)成員變量 private PictureBox[] Qizi_Pic。 private int Pic_Width。 private int[] Q。 private int[,] Map。 private bool can_go = false。 //能否走棋 bool _isDragging = false。 bool Layout_Flag = true。//布陣標志 bool first = true。//布陣時第一次單擊標志 int mouse_x, mouse_y。 int old_x, old_y。 //棋盤坐標 int old_Left, old_Top。//棋子原始位置(像素) int tempx, tempy。//布陣時第一次單擊坐標 bool IsMyTurn = false。 enum PlayerColor { Red, Black, Green, Glue }。 PlayerColor player = 。 string path。// bin路徑 int r。//兵站間隔距離 //網(wǎng)絡通信部分 private bool ReadFlag = true。 //設定偵聽標示位,通過它來設定是否偵聽端口號 private Thread th。//定義一個線程,在線程接收信息 private IPEndPoint remote。 private bool Reset_flag = false。//重新開始標記 private bool th_flag = false。 //定義一個遠程結(jié)點,用以獲取遠程計算機IP地址和發(fā)送的信息 private UdpClient udpclient。//創(chuàng)建一個UDP網(wǎng)絡服務窗體加載時,初始化棋盤數(shù)組每個元素Map[i,j]為101,表示(i,j)處沒放置棋子。加載每人的25個棋子Qizi_Pic[i]及相應的圖片,但Visible=false讓其不可見?!氨4娌季帧薄ⅰ白x取布局”、“開始對戰(zhàn)”、“重新開始”4個按鈕設為不用。private void Form1_Load(object sender, e) { Pic_Width = 。 //棋盤大小 r = (Pic_Width) / 17。 Map = new int[18, 18]。 for (int i = 1。 i 18。 i++) for (int j = 1。 j 18。 j++) Map[i, j] = 101。 //101表示(i,j)處沒放置棋子 qi_index()。 //棋子編號并設置對應棋子含義 begin_pos(2)。 //加載不可見棋子
點擊復制文檔內(nèi)容
環(huán)評公示相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1