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

正文內容

五子棋設計與實現畢業(yè)設計-預覽頁

2025-06-25 03:47 上一頁面

下一頁面
 

【正文】 r、IntelliJ、JCreator。Java不需要程序員進行指針運算和存儲器管理,簡化了設計,減少了出錯的可能性。3. 分布式:目前在所有軟件產品中,僅供單個計算機使用的單機版軟件所占得比例越來越小。另一方面,有些Java運行環(huán)境采用JustInTime(JIT)編譯器將字節(jié)代碼編譯成機器碼直接運行,這種運行環(huán)境對于重復執(zhí)行的服務器端軟件特別有效,可以達到C語言的速度。Java軟件是真正跨平臺可移植的。 JAVA 編程環(huán)境一、環(huán)境變量:(1) Java(TM) SE Development Kits,即JDK (2)設置環(huán)境變量 右擊 我的電腦屬性高級環(huán)境變量 Path:系統(tǒng)在任何路徑下都可以識別Java命令需要設置的變量 Path: Java命令才能識別 classpath:下載地址為 ; (2) Fat Jar:打包插件,可以方便的完成各種打包任務,可以包含外部的包等。 2 需求分析 任務概述 一、目標:建立五子棋服務器程序,游戲主機的應用程序,主要提供客戶進行游戲的服務器;建立五子棋客戶端程序,安裝于客戶端的應用程序,主要提供客戶游戲、聊天的應用程序。 2. 數據字典:本程序采用非數據庫策略,游戲時,只把部分數據保存于內存中。因棋盤的大小一般來講對下棋的影響不大,現就將其劃成19*19的圍棋盤大小。以后如此輪流落子,直到某一方首先在棋盤的直線、橫線、或斜線上形成連續(xù)5子或5子以上(五子棋中只有白方可以5子以上獲勝),則該方就算獲勝。另外游戲要有較高的可靠性,即控制好客戶端線程向服務器端發(fā)送信息的同步性。這些控制的組建應該放在一起,一開始考慮把他們放在一個面板里面,處理這些信息只要對這一個面板進行操作就可以了,但是如果這樣的話可以想象,當你計算棋子所字范圍的時候還要考慮到信息面板所占的空間,還有那些控制面板的空間,而且放在一起時也不好擺放,他們的背景顏色等一些屬性都是一樣的,那樣給人的感覺也不大美觀。而且對它們進行操作也不影響其他組件。我們就可以先定義好這些類了。 step++) { // 下層循環(huán)判斷豎直向下第step個位置是否有白子 for (chessCompare = 0。 ((b * 20) == chessBlack_y[chessCompare])) { chessLink = chessLink + 1。 } //向上的連子個數 for (step = 1。 chessCompare++) { //如果有黑子(其實這里可以break出來) if (((a step) * 20 == chessBlack_x[chessCompare]) amp。 } } } //如果下個位置還有黑色棋子(可以換用標志符判斷) if (chessLink == (chessLinkTest + 1)) chessLinkTest++。 一、服務端接受的信息:(1)客戶端連接信息,一個客戶包含兩個Socket 連接, 一個為chatSocket,另一個為chessSocket;(2)客戶端創(chuàng)建游戲信息;(3)客戶端加入游戲信息; (4)下棋信息;(5)放棄游戲信息;(6)公聊和私聊信息;(7)用戶列表信息。ServerClientClient客戶端服務器客戶端圖31服務器新來客5新來客6新來客3新來客4新來客1新來客2聊天,玩游戲圖324 詳細設計 客戶端程序實現客戶端(Client)除了實現網絡通信以外,還要實現游戲的一些基本功能,如規(guī)則制定、整個界面的布局、動畫的實現等。connectServer的源代碼如下: public boolean connectServer(String serverIP, int serverPort) throws Exception { try { // (in chessClientconnectServer)。 //創(chuàng)建線程 clientThread clientthread = new clientThread(this)。 } catch (IOException ex) {//連接不成功 (chessClient:connectServer:無法連接,建議重新啟動程序 \n)。棋盤繪制很簡單,只需在相應位置上繪制相應數量的橫線和縱線,最后加上棋盤的5個基準點即可。 } (40, 400, 400, 400)。 } (400, 40, 400, 400)。 (337, 337, 6, 6)。 chessPoint_white chesspoint_white = new chessPoint_white(this)。 // 判斷是否獲勝 isWin = checkWin(chessPoint_a, chessPoint_b, color)。 // 在狀態(tài)文本框顯示行棋信息 (黑(第 + chessBlackCount + 步) + chessPoint_a + + chessPoint_b + ,請白棋下子)。 (chessPoint_a * 20 7, chessPoint_b * 20 7, 16, 16)。amp。 (chesspoint_white)。 } else { (/ + chessPeerName + /chess + chessPoint_a + + chessPoint_b + + color)。 isMouseEnabled = false。落子后都會調用checkWin方法,從而判斷該子落下后有沒有造成5顆同色的棋子連成一線。3. 加入游戲:如果已有其他玩家建立了游戲,則可以直接連接到該游戲。不同消息開頭的含義分別如下。/peer: 表示連接游戲成功,客戶端收到該消息后記下對手的名字,然后進入游戲狀態(tài)。/chess:表示棋子消息,信息中包含棋子的位置、顏色等。下面就對各個事件的響應進行描述。 try { if (connectServer(host, port)) { //連接成功 ()。 (連接成功,請創(chuàng)建游戲或加入游戲)。建立游戲的代碼片段如下://////////////////////////////////////////////////////////// // 如果點擊的是“建立游戲”按鈕,設定用戶狀態(tài)、按鈕狀態(tài),然后與服務器通訊。 isServer = true。 (/creatgame + [inchess] + chessClientName)。 (false)。 } } catch (Exception ec) { isGameConnected = false。 (true)。 } }(3) 加入游戲 如果玩家單擊“加入游戲”按鈕時即可執(zhí)行加入游戲操作:首先檢查加入目標是否合法有效,然后向服務器發(fā)送消息加入游戲。 if (() == ) { // 得到選擇的用戶 String selectedUser = ()。 if (!isGameConnected) { if ((, )) { isGameConnected = true。 (false)。 else { isOnChess = true。 (true)。 isOnChess = false。 (false)。 if (() == ) { // 如果棋局正在進行,判定退出游戲的一方輸 if (isOnChess) { (/giveup + chessClientName)。 (false)。 (false)。因為有了上述5個面板類后實現游戲的客戶端主類chessClient也就非常簡單了,它繼承于Frame,實現了ActionListener和KeyListener接口。同chessThread一樣,因為Socket讀取、發(fā)送消息時可能會阻塞,所以還需要一個clientThread作為客戶端線程來實時接收發(fā)送消息。以/reject開頭:拒絕加入游戲。以/error開頭:傳輸出錯,退出游戲重新加入。 ()。 if (userNumber 0 amp。 } userNumber++。 = (10)。 //更新按鈕狀態(tài) (false)。 } (true)。 (請黑棋下子)。 ()。 } else if ((/error)) { (傳輸錯誤:請退出程序,重新加入 \n)。其主要包含三部分:連接數量的狀態(tài)欄、當前用戶信息列表和控制面板。(1)處理連接請求 在服務器端主類chessServer中,makeMessageServer()方法負責處理來自客戶端的連接請求,服務器在接收客戶方的請求后立即初始化一個serverThread線程對象來處理服務器與客戶之間的交互,住程序則返回繼續(xù)監(jiān)聽端口,等待下一個客戶的連接請求。創(chuàng)建一個數字哈希表的代碼如下:Hashtable numbers=new Hashtable()。檢索一個數字的代碼如下:Integer n=(Integer) (two)。有新的客戶端連接請求時,調用一下代碼: (clientSocket,outData)。 (clientSocket)。當對戰(zhàn)玩家有一方放棄游戲或者退出游戲時,調用以下代碼:(chessClientName)。 chessServer類的makeMessageServer代碼具體實現如下:public void makeMessageServer(int port, MessageServerPanel server) throws IOException { Socket clientSocket。 (服務器開始于: + ().getLocalHost() + : + () + \n)。 //在這里填充這兩個Hashtable,在對應線程里用到。 ServerThread thread = new ServerThread(clientSocket, clientDataHash, clientNameHash, chessPeerHash, server)。根據消息的類型重新封裝再發(fā)回給客戶端,由客戶端進行處理。 if ((/)) { // 如果消息以“/list”開頭,則將其回饋到客戶端以更新用戶列表 if ((/li
點擊復制文檔內容
研究報告相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1