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

正文內(nèi)容

五子棋設(shè)計與實現(xiàn)畢業(yè)設(shè)計-在線瀏覽

2024-07-28 03:47本頁面
  

【正文】 用起來也不錯;NetBeans現(xiàn)在也是越做越好了,介紹這兩個IDE主要是開源的,當然還有其它工具如JBuilder、IntelliJ、JCreator。 Java的特點:Java技術(shù)取得今天這樣這樣的成就,依賴于這門技術(shù)的先進性,Java技術(shù)具有下列優(yōu)點:1. 簡單、健壯:許多高級語言都要由程序員進行指針運算和存儲器管理。Java不需要程序員進行指針運算和存儲器管理,簡化了設(shè)計,減少了出錯的可能性。與面向過程的語言相比,面向?qū)ο蟮恼Z言更能反映人類對世界的認識和處理模式,具有良好的代碼重用性。3. 分布式:目前在所有軟件產(chǎn)品中,僅供單個計算機使用的單機版軟件所占得比例越來越小。Java擁有一個網(wǎng)絡(luò)協(xié)議對象庫(TCP/IP,HTTP,F(xiàn)TP等),可以像訪問當?shù)匚募粯釉L問Internet上的對象。另一方面,有些Java運行環(huán)境采用JustInTime(JIT)編譯器將字節(jié)代碼編譯成機器碼直接運行,這種運行環(huán)境對于重復(fù)執(zhí)行的服務(wù)器端軟件特別有效,可以達到C語言的速度??梢苑烙诳凸簟ava軟件是真正跨平臺可移植的。8. 動態(tài)性:Java允許下載代碼模塊,因此,當程序運行時也能動態(tài)升級。 JAVA 編程環(huán)境一、環(huán)境變量:(1) Java(TM) SE Development Kits,即JDK (2)設(shè)置環(huán)境變量 右擊 我的電腦屬性高級環(huán)境變量 Path:系統(tǒng)在任何路徑下都可以識別Java命令需要設(shè)置的變量 Path:C:\Progran Files\java\\bin classpath:為java加載類(包括class,lib)的路徑,只有類在classpath中, Java命令才能識別 classpath:Progran Files\java\\lib\ Progran Files\java\\lib\ JAVA_HOME:java的安裝路徑 JAVA_HOME:下載地址為 ; (2) Fat Jar:打包插件,可以方便的完成各種打包任務(wù),可以包含外部的包等。支持jsp編寫,包括語法著色和語法檢查; (5) MyEclipse:J2EE開發(fā)插件,支持jsp,EJB,數(shù)據(jù)庫操作。 2 需求分析 任務(wù)概述 一、目標:建立五子棋服務(wù)器程序,游戲主機的應(yīng)用程序,主要提供客戶進行游戲的服務(wù)器;建立五子棋客戶端程序,安裝于客戶端的應(yīng)用程序,主要提供客戶游戲、聊天的應(yīng)用程序。 二、運行環(huán)境:Windows 98/2000/XP/2003操作系統(tǒng)下,建立游戲服務(wù)器后,根據(jù)提示安裝客戶端程序即可。 2. 數(shù)據(jù)字典:本程序采用非數(shù)據(jù)庫策略,游戲時,只把部分數(shù)據(jù)保存于內(nèi)存中。棋盤正中為“天元”,周圍4點位“星位”。因棋盤的大小一般來講對下棋的影響不大,現(xiàn)就將其劃成19*19的圍棋盤大小。但是為了尊重和處于禮貌,執(zhí)白方通常將盤面的第二棋布在自己河界的一側(cè)。以后如此輪流落子,直到某一方首先在棋盤的直線、橫線、或斜線上形成連續(xù)5子或5子以上(五子棋中只有白方可以5子以上獲勝),則該方就算獲勝。客戶端可以連接服務(wù)器、創(chuàng)建游戲、加入游戲等。另外游戲要有較高的可靠性,即控制好客戶端線程向服務(wù)器端發(fā)送信息的同步性。這塊內(nèi)容界面做出來了,但有點問題,有待提高。這些控制的組建應(yīng)該放在一起,一開始考慮把他們放在一個面板里面,處理這些信息只要對這一個面板進行操作就可以了,但是如果這樣的話可以想象,當你計算棋子所字范圍的時候還要考慮到信息面板所占的空間,還有那些控制面板的空間,而且放在一起時也不好擺放,他們的背景顏色等一些屬性都是一樣的,那樣給人的感覺也不大美觀。從面向?qū)γ娴慕嵌葋砜?,這也不符合,都放在一起,那些東西都在一個雷里面,他們還可以劃分成其他的類,而這里用的是JAVA對該游戲進行開發(fā),所以每一個類都要單一,所以面板分成三個部分:一個是棋盤類,也是主要的類,一個是消息面板的類,還有一個就是控制面板的類。而且對它們進行操作也不影響其他組件。我們就像,肯定是每次當點擊鼠標的時候就在點擊鼠標的地方畫一個棋子,所以我們還得定義一個棋子的類來對我們點擊鼠標時把棋子繪制出來。我們就可以先定義好這些類了。cheskWin方法進行輸贏的判定,判斷的方法很直接——先判斷棋子顏色,再逐個方向去判斷,在每個方向進行判定時又分為正方向和負方向,對每一方向的判斷都很類似,如以下代碼片段用于判斷黑子豎直方向的連子個數(shù): ////////////////////////////// // 以下兩個大的循環(huán)判斷豎直方向棋子連接總數(shù) ////////////////////////////// // 向下的方向連子個數(shù) for (step = 1。 step++) { // 下層循環(huán)判斷豎直向下第step個位置是否有白子 for (chessCompare = 0。 chessCompare++) { // 如果有黑子 if (((a + step) * 20 == chessBlack_x[chessCompare]) amp。 ((b * 20) == chessBlack_y[chessCompare])) { chessLink = chessLink + 1。 } } } if (chessLink == (chessLinkTest + 1))// 豎直向下還有黑色棋子 chessLinkTest++。 } //向上的連子個數(shù) for (step = 1。 step++) { //下層循環(huán)判斷豎直向上第step個位置是否有黑子 for (chessCompare = 0。 chessCompare++) { //如果有黑子(其實這里可以break出來) if (((a step) * 20 == chessBlack_x[chessCompare]) amp。 (b * 20 == chessBlack_y[chessCompare])) { chessLink++。 } } } //如果下個位置還有黑色棋子(可以換用標志符判斷) if (chessLink == (chessLinkTest + 1)) chessLinkTest++。 } 程序總體設(shè)計程序使用Socket 技術(shù)[8]以及java 多線程機制結(jié)合在進行客戶與服務(wù)端之間信息的交互,但一個真正實用程序必須針對具體應(yīng)用定制一套協(xié)議用于用戶程序之間進行交互,而該協(xié)議的定制往往是編寫程序的關(guān)鍵也是核心內(nèi)容,該協(xié)議的完善決定程序是否能夠正常運行。 一、服務(wù)端接受的信息:(1)客戶端連接信息,一個客戶包含兩個Socket 連接, 一個為chatSocket,另一個為chessSocket;(2)客戶端創(chuàng)建游戲信息;(3)客戶端加入游戲信息; (4)下棋信息;(5)放棄游戲信息;(6)公聊和私聊信息;(7)用戶列表信息。 三、客戶端接受的信息:(1)用戶列表信息;(2)游戲加入拒絕信息;(3)對手信息;(4)勝利信息;(5)創(chuàng)建成功信息;(6)錯誤信息;(7)聊天信息。ServerClientClient客戶端服務(wù)器客戶端圖31服務(wù)器新來客5新來客6新來客3新來客4新來客1新來客2聊天,玩游戲圖324 詳細設(shè)計 客戶端程序?qū)崿F(xiàn)客戶端(Client)除了實現(xiàn)網(wǎng)絡(luò)通信以外,還要實現(xiàn)游戲的一些基本功能,如規(guī)則制定、整個界面的布局、動畫的實現(xiàn)等。 控制面板 用戶面板 游戲面板 聊天信息面板 聊天面板 圖41 客戶端界面客戶端實現(xiàn)的難點主要在于棋盤面板類和客戶端主類,棋盤面板類實現(xiàn)了棋盤的繪制、鼠標事件的監(jiān)聽、落子的處理、勝負的判斷等;客戶端主類統(tǒng)籌全局,用于對連接、創(chuàng)建游戲等事件進行處理,同時實現(xiàn)與服務(wù)器的聊天、命令通信等。connectServer的源代碼如下: public boolean connectServer(String serverIP, int serverPort) throws Exception { try { // (in chessClientconnectServer)。 //由socket得到輸入輸出流. in = new DataInputStream(())。 //創(chuàng)建線程 clientThread clientthread = new clientThread(this)。 isOnChat = true。 } catch (IOException ex) {//連接不成功 (chessClient:connectServer:無法連接,建議重新啟動程序 \n)。 } 其中的chessthread是chessThread類的對象,內(nèi)部保存有對chessPad的引用,負責(zé)監(jiān)聽端口,隨時接收服務(wù)器端發(fā)來的消息,并調(diào)用chessPad的相應(yīng)方法進行處理。棋盤繪制很簡單,只需在相應(yīng)位置上繪制相應(yīng)數(shù)量的橫線和縱線,最后加上棋盤的5個基準點即可。 i = 380。 } (40, 400, 400, 400)。 j = 380。 } (400, 40, 400, 400)。 (337, 97, 6, 6)。 (337, 337, 6, 6)。}(3)放置棋子放置棋子就是在Panel上的適當位置添加黑色或白色棋子,需要注意的是,每次落子后還要進行記錄落子位置和顏色、勝負判定、向服務(wù)器發(fā)送落子消息、修改相應(yīng)狀態(tài)信息等操作。 chessPoint_white chesspoint_white = new chessPoint_white(this)。amp。 // 判斷是否獲勝 isWin = checkWin(chessPoint_a, chessPoint_b, color)。 (chesspoint_black)。 // 在狀態(tài)文本框顯示行棋信息 (黑(第 + chessBlackCount + 步) + chessPoint_a + + chessPoint_b + ,請白棋下子)。 } else { // 如果獲勝,直接調(diào)用chessVictory完成后續(xù)工作 (/ + chessPeerName + /chess + chessPoint_a + + chessPoint_b + + color)。 (chessPoint_a * 20 7, chessPoint_b * 20 7, 16, 16)。 isMouseEnabled = false。amp。 isWin = checkWin(chessPoint_a, chessPoint_b, color)。 (chesspoint_white)。 (白(第 + chessWhiteCount + 步) + chessPoint_a + + chessPoint_b + ,請黑棋下子)。 } else { (/ + chessPeerName + /chess + chessPoint_a + + chessPoint_b +
點擊復(fù)制文檔內(nèi)容
研究報告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1