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

正文內(nèi)容

網(wǎng)絡(luò)對(duì)弈課程設(shè)計(jì)說(shuō)明書(shū)-文庫(kù)吧資料

2025-06-12 12:28本頁(yè)面
  

【正文】 catch (IOException es) { ()。 !((String) clientNameHash .get(clientSocket))) { // 找到要發(fā)送信息的用戶(hù)時(shí) synchronized (clientDataHash) { // 建立輸出流 桂林電子科技大學(xué)課程設(shè)計(jì)說(shuō)明書(shū)用紙 第 19 頁(yè) 共 55 頁(yè) DataOutputStream peerOutData = (DataOutputStream) clientDataHash .get(userClient)。 if (((String) (userClient)) amp。 ()。 } catch (IOException es) { ()。) { DataOutputStream outputData = (DataOutputStream) ()。 } } // 發(fā)送公開(kāi)信息 public void sendPublicMsg(String publicMsg) 桂林電子科技大學(xué)課程設(shè)計(jì)說(shuō)明書(shū)用紙 第 18 頁(yè) 共 55 頁(yè) { synchronized (clientDataHash) { for (Enumeration enu = ()。 sendPublicMsg(msgReceived)。 } } } else { msgReceived = (clientSocket) + + msgReceived。 if (lastLocation == 1) { Feedback(無(wú)效命令 )。 synchronized (chessPeerHash) {// 刪除退出游戲的用戶(hù) ((String) getHashKey(chessPeerHash, chessClientName))。 synchronized (chessPeerHash) { // 刪除退出游戲的用戶(hù) (chessClientName)。amp。 } } else if ((/giveup )) { // 收到的信息為放棄游戲時(shí) String chessClientName = (8)。 msgReceived = ((lastLocation + 1))。 lastLocation = ( , 0)。 桂林電子科技大學(xué)課程設(shè)計(jì)說(shuō)明書(shū)用紙 第 16 頁(yè) 共 55 頁(yè) } catch (Exception ez) { ()。 } else { // 若游戲未創(chuàng)建則拒絕加入游戲 sendGamePeerMsg(gamePaticipantName, /reject)。 // 發(fā)送信息給游戲加入者 sendGamePeerMsg(gamePaticipantName, (/peer + [inchess] + gameCreatorName))。 } synchronized (chessPeerHash) { // 增加或修改游戲創(chuàng)建者與游戲加入者的名稱(chēng)的對(duì)應(yīng) (gameCreatorName, gamePaticipantName)。amp。 gamePaticipantName = playerNames[1]。 // 取得游戲者命 } nameIndex++。amp。 while (()) { userToken = (String) ( )。 String[] playerNames = { 0, 0 }。 String gameCreatorName。 } else if ((/joingame )) { // 收到的信息為加入游戲時(shí) StringTokenizer userTokens = new StringTokenizer(msgReceived, )。 sendGamePeerMsg(gameCreaterName, /OK)。 } synchronized (chessPeerHash) { // 將主機(jī)設(shè)置為等待狀態(tài) (gameCreaterName, wait)。 } else if ((/creatgame [inchess])) { // 收到的信息為創(chuàng)建游戲 String gameCreaterName = (20)。 String peerName。 = server。 = clientNameHash。 public FIRServerThread(Socket clientSocket, Hashtable clientDataHash, Hashtable clientNameHash, Hashtable chessPeerHash, ServerMsgPanel server) { = clientSocket。 // 保存游戲創(chuàng)建者和游戲加入者對(duì)應(yīng)的 Hash ServerMsgPanel serverMsgPanel。 // 保存客戶(hù)端端口與輸出流對(duì)應(yīng)的 Hash Hashtable clientNameHash。 類(lèi): public class FIRServerThread extends Thread { Socket clientSocket。服務(wù)器為所有客戶(hù)端都分配了一個(gè)該類(lèi)線程實(shí)例,單獨(dú)為特定客戶(hù)端進(jìn)行服務(wù)。 } } 桂林電子科技大學(xué)課程設(shè)計(jì)說(shuō)明書(shū)用紙 第 13 頁(yè) 共 55 頁(yè) 服務(wù)器線程的設(shè)計(jì)開(kāi)發(fā) 服務(wù)器線程是服務(wù)器啟動(dòng)后創(chuàng)建并啟動(dòng)的第一個(gè)線程,該線程主要用于接收客戶(hù)端的連接,并未每個(gè)連接分配一個(gè)服務(wù)器代理線程。 } } if (() == closeServerButton) { // 關(guān)閉服務(wù)器 (0)。 } if (() == serverStatusButton) { // 顯示服務(wù)器信息 try { (服務(wù)器信息 : + () + : + () + \n)。 } } catch (IOException ex) 桂林電子科技大學(xué)課程設(shè)計(jì)說(shuō)明書(shū)用紙 第 12 頁(yè) 共 55 頁(yè) { ()。 // 創(chuàng)建并運(yùn)行服務(wù)器端線程 FIRServerThread thread = new FIRServerThread(clientSocket, clientDataHash, clientNameHash, chessPeerHash, serverMsgPanel)。 // 將客戶(hù)端套接口和輸出流綁定 (clientSocket, outputData)。 ( 已 連 接 用 戶(hù) : + clientSocket + \n)。 (服務(wù)器啟動(dòng)于 : + () + : //djr + () + \n)。 // 連接到主機(jī)的客戶(hù)數(shù)量 = serverMsgPanel。 } } // 用指定端口和面板創(chuàng)建服務(wù)器 桂林電子科技大學(xué)課程設(shè)計(jì)說(shuō)明書(shū)用紙 第 11 頁(yè) 共 55 頁(yè) public void createServer(int port, ServerMsgPanel serverMsgPanel) throws IOException { Socket clientSocket。 try { createServer(4331, serverMsgPanel)。 setResizable(false)。 setVisible(true)。 } })。 add(buttonPanel, )。 (this)。 (75, 25)。 (serverStatusButton)。 (this)。 桂林電子科技大學(xué)課程設(shè)計(jì)說(shuō)明書(shū)用紙 第 10 頁(yè) 共 55 頁(yè) (60, 25)。 setBackground()。 //將客戶(hù)端套接口和客戶(hù)名綁定 Hashtable chessPeerHash = new Hashtable(50)。 Hashtable clientDataHash = new Hashtable(50)。 ServerMsgPanel serverMsgPanel = new ServerMsgPanel()。 JButton closeServerButton = new JButton(關(guān)閉服務(wù)器 )。其中包括創(chuàng)建服務(wù)器端用到的控件以及聲明用到的對(duì)象引用,完成對(duì)控件的初始化:設(shè)置窗體的標(biāo)題,圖標(biāo),大小以及可見(jiàn)性,將各個(gè)控件添加到各面板的相應(yīng)位置 類(lèi): // 服務(wù)器界面類(lèi) public class FIRServer extends Frame implements ActionListener { JButton clearMsgButton = new JButton(清空列表 )。 規(guī)則的 設(shè) 包括取得指定棋子的位置,判斷當(dāng)前棋子是否取得勝利,當(dāng)前棋子各個(gè)方向 的 判斷 ,當(dāng)前所要下的棋子是否越界 。 棋子的設(shè)計(jì)包括黑棋以及白旗的設(shè)計(jì),其中有大小,顏色,所屬棋盤(pán)的設(shè)計(jì)。 其具體功能模塊如圖所示: 客戶(hù)端 客戶(hù)端界面 客戶(hù)端線程 創(chuàng)建游戲 加入游戲 連接到游戲 連接到服務(wù)器 向服務(wù)器發(fā)送信息 放棄游戲 退出游戲 接收服務(wù)器信息 桂林電子科技大學(xué)課程設(shè)計(jì)說(shuō)明書(shū)用紙 第 8 頁(yè) 共 55 頁(yè) 棋 類(lèi) 設(shè)計(jì) 五子棋類(lèi)的設(shè)計(jì)主要分為棋 盤(pán),棋子,五子棋動(dòng)作線程 ,規(guī)則四部分。 客戶(hù)端界面的設(shè)計(jì)主要包括客戶(hù)端界面大小,背景顏色,主要按鈕:創(chuàng)建游戲,加入游戲,連接到服務(wù)器,放棄游戲,退出游戲的設(shè)計(jì)以及它們對(duì)應(yīng)事件的處理。 服務(wù)器主機(jī)面板的設(shè)計(jì)主要包括客戶(hù)端信息板的設(shè)計(jì),包括板的大小,背景顏色。 服務(wù)器主界面的設(shè)計(jì)主要包括界面大小, 界面背景, 界面上的按鈕 ,比如 清空列表,服務(wù)器狀態(tài),關(guān)閉服務(wù)器的設(shè)計(jì),以及啟動(dòng)對(duì)客戶(hù)端的監(jiān)聽(tīng),啟動(dòng)服務(wù)器線程。 客戶(hù)端的功能主要是連接服務(wù)器端,創(chuàng)建游戲用戶(hù),創(chuàng)建游戲,加入游戲, 選擇玩家挑戰(zhàn),向服務(wù)器發(fā)送信息,接收服務(wù)器端發(fā)送來(lái)的信息。 系統(tǒng)運(yùn)行環(huán)境: MyEclipse 3 總體設(shè)計(jì) 系統(tǒng)結(jié)構(gòu)設(shè)計(jì) 該游戲主要分為服務(wù)器端與客戶(hù)端兩部分 。 ( 2) 五子棋的規(guī)則雖然嚴(yán)密,但是通過(guò)各種情況分析,然后將每個(gè)情況分析設(shè)計(jì)出來(lái)。 i) 本文所論述的 聯(lián)機(jī)五子棋 系統(tǒng)就是 依照 這 種 方式進(jìn)行的 。即執(zhí)白方變?yōu)閳?zhí)黑方。若白方繼續(xù)應(yīng)子,則黑方禁手不成立。因黑方已形成五連,故禁手失效,黑方勝。 e) 對(duì)局中拔子,中途退場(chǎng)均判為負(fù)。長(zhǎng)連禁手是指黑方形成六個(gè)或六個(gè)以上的連續(xù)棋子。黑方只能 “四三 ”勝。 c) 黑棋禁手判負(fù),白棋無(wú)禁手。此后,執(zhí)黑方 在以天元為中心的 25 個(gè)交叉點(diǎn)的范圍內(nèi)布盤(pán)面的第三著棋。 ? 比賽規(guī)則 : a) 黑先白后,從天元開(kāi)始落子。 其中五子棋游戲的規(guī)則如下: ? 棋盤(pán),棋子 : a) 棋盤(pán)為十五路,正中一點(diǎn)為 “天元 ”,周?chē)狞c(diǎn)為小星。 ( 5) 如果對(duì)方正在與其他玩家對(duì)弈,則應(yīng)給出相應(yīng)提示。 ( 3) 可以從在線用戶(hù)列表中選擇玩家進(jìn)行挑戰(zhàn)。 桂林電子科技大學(xué)課程設(shè)計(jì)說(shuō)明書(shū)用紙 第 3 頁(yè) 共 55 頁(yè) ( 2) 可以顯 示當(dāng)前所有用戶(hù) 。服務(wù)器是用于監(jiān)控客戶(hù)端的連接情況,沒(méi)用必要做得繁雜,用戶(hù)只需要直觀的狀態(tài)顯示,所以我們的服務(wù)器不需要設(shè)計(jì)太多按鈕,只需要有顯示服務(wù)器狀態(tài),關(guān)閉服務(wù)器,清空列表的按鈕,方便用戶(hù)操作。 不允許客戶(hù)端同名即是不允許客戶(hù)端的端口
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1