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

正文內容

基于java的五子棋游戲的設計—計算機畢業(yè)設計(編輯修改稿)

2025-01-04 10:23 本頁面
 

【文章內容簡介】 v a 編 譯 器 : j a v a c編譯生成Java應用程序Java小應用程序 圖 10 Java程序的開發(fā)過程 源文件:使用一個文本編輯器,如 Edit 或記事本來編寫源文件。不可使用Word 編輯器,因為它含有不可見字符。將編好的源文件保存起來,源文件的擴展名必須是 Java。 編譯器:源文件要經過編譯器( )的編譯生成可擴展名為 .Class的字節(jié)碼文件。字節(jié)碼文件是由與平臺無關的二進制碼組成的,執(zhí)行時由解釋器解釋成本地機器碼。 運行 Java 程序: Java 程序分為兩大類 —— Java 應用程序( Application)和 Java 小應用程序( Applet)。 Java 應用程序必須通過 Java 解釋器( )來解釋執(zhí)行其字節(jié)碼文件; Java 小應用程序可通過支持 Java 標準的瀏覽器來解釋執(zhí)行。 Java 開發(fā)環(huán)境 使用 Jcreator 開發(fā)環(huán)境必須安裝 JDK,我安裝的 版本是 ,在環(huán)境變量里新建名為 Path 的變量名,變量值為 D:\軟件 \JAVA\bin(根據(jù) JDK 的安第 10 頁 共 23 頁 裝目錄而定)。在命令提示窗口輸入 Java version 如果能正確顯示版本號,則表示環(huán)境配置成功。如圖 11 所示。 圖 11 環(huán)境變量 Jcreator 的安裝很簡單,這里不在詳細敘述,把路徑配置好就可以了。如圖 12。 圖 12 Jcreator IDE 4 課題詳細研究方法 程序結構說明 既然是 Java Application,要實現(xiàn)網絡對戰(zhàn),故采用 C/S 模式編寫,程序包含 7 個 獨 立 的 類 文 件- 、 、 、 、 、 。 第 11 頁 共 23 頁 其中 主要負責棋盤的初始化,鼠標事件的處理,以及判斷勝負條件。 定義了面板上的其他元素,包括玩家列表,標題欄等。也包括了事件處理和人工智能。 則負責 網絡對戰(zhàn)的處理。其他的類都是又這 3個主類延伸出去的。在具體實現(xiàn)的時候再介紹其作用。見圖13。 初 始 化主 循 環(huán) 控 制 模 塊盤 面 分 析 填 寫 棋型 表輪 到 電 腦電 腦 下 子玩 家 下 子輪 到 玩 家勝 負 判 斷否 則開 始勝 利 棋盤及棋子的類 棋盤 棋盤如圖 1,具體代碼如下: String line = a b c d e f g h i j k l m n o。 char [] rowNum1 = {39。139。,39。239。,39。339。,39。439。,39。539。,39。639。,39。739。,39。839。,39。939。}。 char [] rowNum2={39。139。,39。039。,39。139。,39。139。,39。139。,39。239。,39。139。,39。339。,39。139。,39。439。,39。139。,39。539。}。 這部分為棋盤的邊界標識符,是必須要有的。用字符數(shù)組存儲,最后確定位圖 13 五子棋程序流程圖 第 12 頁 共 23 頁 置放上去即可。 棋盤的繪制: private static int xp。 // 棋子 X 坐標 private static int yp。 // 棋子 Y 坐標 public void paint(Graphics gc){ (gc)。 //()。 //()。 ()。 //(new Color(255, 255, 240))。 //畫橫向標識符 (line,25,15)。 // 畫豎向標識符 for(int i=0。i9。i++){ (rowNum1,i,1,10,35+i*30)。 } for(int i=9,j=0。i15。i++,j+=2){ (rowNum2,j,2,10,35+i*30)。 } // 畫棋盤 for (int i = 0。 i 15。 i++) { (30, 30 + i * 30, 450, 30 + i * 30)。 //行 (30 + i * 30, 30, 30 + i * 30, 450)。 //列 } (25, 25, 455, 25)。 (25, 25, 25, 455)。 (25, 455, 455, 455)。 (455, 25, 455, 455)。 //面板初始化 for(int i=0。i15。i++){ for (int j = 0。 j 15。 j++) { xp=16+i*30。 yp=16+j*30。 第 13 頁 共 23 頁 if (board[i][j] == 1){ ()。 (xp,yp,28,28)。 //(black, 16 + i * 30, 16 + j * 30, this)。 } if (board[i][j] == 2){ ()。 (xp,yp,28,28)。 //(white, 16 + i * 30, 16 + j * 30, this)。 } } } } 棋子 確定下子的坐標( xp,yp)畫特定大小的橢圓,這里的坐標指棋子相對棋盤的絕對坐標。 private static int xp。 // 棋子 X 坐標 private static int yp。 // 棋子 Y 坐標 if(col==1) ()。 else ()。 (xp,yp,10,28,28)。 勝負判斷條件 要判斷四個方向,橫向、豎向、以及 2個斜向。思想還是比較簡單,相同顏色連成五子即勝利,網上有些網友評論說完整的判斷勝負條件包括連五和活四,我覺得完全沒必要,活四還要檢查兩邊的棋子,雖然運算量不大,但五子棋的標準就是連五即勝,一步之差,我們既要遵守規(guī)則,也要簡化代碼實現(xiàn)盡完整的功能。 我們要事先建立一個盤面數(shù)組 board[ ][ ],即棋型表,數(shù)組的每一個元素對應棋 盤上的一個交叉點,用‘ 0’表示空位,‘ 1’表示黑棋,‘ 2’表示白棋。由于代碼太多,下面給出了一般狀況的判斷勝負函數(shù) ,及以坐標( x,y)為中心的9X9 矩形,只能在棋盤的內部,如果超過棋盤,就要另外考慮。下面的代碼就是一般情況,整個矩形在棋盤內部的時候的判斷勝負條件,如圖 14。 第 14 頁 共 23 頁 圖 14 獲勝 勝負判斷條件以下給出了 X 方向的代碼: protected boolean judge(int x,int y,int clr){ int i=0,j=0,count=0。 // x 方向 for(i=0,count=0。xi=0amp。amp。i5。i++){ if (clr==board[xi][y]){ count++。 } else{ break。 } // (( +x+ , +y+ )+count = +count)。 if(count==5) return true。 } for(i=1。x+i15amp。amp。i5。i++){ if(clr==board[x+i][y]){ count++。 }else{ break。 第 15 頁 共 23 頁 } if(count==5) return true。 } return false。 } 為保證公平,先下子的就有禁手。但是我們一般沒有這個規(guī)則限制,都是輪流先下子。理論上是這樣的。但很多專家表明,先下子有很大的幾率獲勝,即使有禁手,先下子的一方還是有很大的優(yōu)勢,我覺得對于我們一般玩家而言,這些規(guī)定可以不考慮。 判斷勝負的不管是單機還是玩家相互游戲,都必須開服務端,因為判斷勝負是放在里面的。 如果有一方獲勝,彈出提示框,如果確認則清空棋盤繼續(xù)新游戲。 public void getVictory(Message msg){ (null, You Win The Game, Congratulations, )。 //繼續(xù)新游戲 (Player2)。 newGame()。 } 需要注意的一點是落下的棋子如果離任何一方的邊界小于 4,則以邊界為限制判斷是否有一方獲勝,這樣的話也要考慮多種方向,但原理還是和基本情況是一樣的。 網絡對戰(zhàn) 這部分也屬于網絡套接字編程的經典應用,根據(jù)服務器地址連接特定端口。 網絡部分很簡單,但是我也做出了自己的特色,就是事件處理 ,做工可根據(jù)具體情況修改,雖然沒有多少實用價值,但是也盡量使程序留有擴展性。下面給出了 Message 的代碼。 /** * 消息列表 * type = 1 // 請求連接 , msg = 連接者名字 * type = 2 // 放棋子 * type = 3 // 請求和其他人游戲 第 16 頁 共 23 頁 * type = 4 // 拒絕游戲請求 * type = 5 // 同意請求 * type = 6 // 發(fā)送勝利消息 * type = 7 // 斷開連接請求 * type = 8 // 保存游戲,但是不放在磁盤上,在下一局開始時將會丟失 * type = 9 // 添加新的玩家到所有客戶端的玩家列表 * type = 10// 響應信息 type ==1 * type = 11// 和玩家游戲 ,msg 保存玩家的名字 ,創(chuàng)建游戲的玩家設置游戲 * type = 12//信息設置 * type = 13// 設置玩家顏色 * type = 14// msg= 接受請求的一方設置 * type = 15// 服務端更新信息 * type = 16// 發(fā)送控制或錯誤信息 * type = 17// 游戲失敗 * type = 18// 服務端套接字關閉 * type = 19// 玩家結束游戲及更新 * tyep = 20// 電腦獲勝 / 玩家獲勝 */ SOCKET 監(jiān)聽端口,如果有玩家則更新玩家列表, 如果雙擊除自己以外的玩家,則可以開始游戲,發(fā)送游戲請求,如果同意則返回棋子顏色并開始游戲,同時清空玩家列表。每一下子,把坐標傳給服務端,并在 2端顯示出來,并且判斷勝負。如果,有一方獲勝,則提示消息通知雙方,確定則繼續(xù)開始新游戲。 服務端開啟服務監(jiān)聽線程和客戶端,如圖 15,如果有玩家知道服務器 IP地址,即可選擇在線玩家進行聯(lián)網游戲,如圖 16。 圖 23 服務端監(jiān)聽 圖 15 服務端監(jiān)聽 第 17 頁 共 23 頁 雙擊除自己以外的一個玩家,發(fā)出游戲請求,同時要確定自己棋子的顏色,用 MSG 發(fā)回服務端 。如果被拒絕,則返回原來的狀態(tài)。 if(==1){ ss = new String(white)。
點擊復制文檔內容
公司管理相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1