




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Java語(yǔ)言程序設(shè)計(jì)的課程設(shè)計(jì)項(xiàng)目利用Java實(shí)現(xiàn)人機(jī)五子棋游戲項(xiàng)目完整實(shí)現(xiàn)實(shí)例(第1部分)項(xiàng) 目 預(yù) 演1、新建一個(gè)Java項(xiàng)目,名稱為BackGammonGame五子棋是一種兩人對(duì)弈的純策略型棋類游戲,是起源于中國(guó)古代的傳統(tǒng)黑白棋種之一。容易上手,老少皆宜,而且趣味橫生,引人入勝;不僅能增強(qiáng)思維能力,提高智力,而且富含哲理,有助于修身養(yǎng)性。2、切換到Navigator視圖3、拷貝程序和圖像文件4、執(zhí)行啟動(dòng)程序5、最后出現(xiàn)下面的程序啟動(dòng)畫面6、主程序窗口開始游戲時(shí)游戲界面是沒(méi)有棋子ide,也就是棋盤的初始化狀態(tài)。傳統(tǒng)五子棋的棋具與圍棋相同,棋子分為黑白兩色,棋盤為1515,棋子放置于棋盤線交
2、叉點(diǎn)上。兩人對(duì)局,各執(zhí)一色,輪流下一子,先將橫、豎或斜線的5個(gè)或5個(gè)以上同色棋子連成不間斷的一排者為勝。如何判斷輸贏:當(dāng)某方下一子后,計(jì)算與當(dāng)前棋子相鄰的四個(gè)方向( 、/、|和)的同色棋子的各數(shù),大于四則分出勝負(fù),否則繼續(xù)下子過(guò)程。項(xiàng) 目 中 的 各 個(gè) 模 塊說(shuō)明1、人機(jī)五子棋游戲啟動(dòng)程序類BackGammonGameApp(1)類名稱為BackGammonGameAppackgammongame(2)程序的主要流程系統(tǒng)初始化主循環(huán)控制模塊玩家下子盤面分析填寫棋型表電腦下子勝負(fù)判斷(3)主控制程序BackGammonGameApp代碼實(shí)例package com.px1987.backgamm
3、ongame;import javax.swing.SwingUtilities;e;import com.px1987.backgammongame.splashframe.SplashImageJWindow;import com.px1987.backgammongame.util.BackGammonGameUtils;public class BackGammonGameApp public BackGammonGameApp() public static void main(String args)SplashImageJWindow oneSplashImageJWindow=
4、new SplashImageJWindow();BackGammonGameUtils.systemInitAndLoadResource(oneSplashImageJWindow);oneSplashImageJWindow.dispose();/系統(tǒng)后臺(tái)初始化完畢,則關(guān)閉快閃屏窗口并釋放該窗體的資源oneSplashImageJWindow=null;SwingUtilities.invokeLater(new Runnable() /下面的代碼實(shí)現(xiàn)實(shí)時(shí)刷新Swing界面public void run() BackGammonGameMainFrame backGammonGameMa
5、inFrame=new BackGammonGameMainFrame();backGammonGameMainFrame.setVisible(true););2、人機(jī)五子棋游戲全局工具類BackGammonGameUtils(1)類名稱為BackGammonGameUtils,包名稱為工具類的主要作用?類中的方法有聲明要求?(2)systemInitAndLoadResource()方法實(shí)現(xiàn)系統(tǒng)初始化后臺(tái)加載主線程是在程序啟動(dòng)時(shí)自動(dòng)創(chuàng)建的,但它可以由一個(gè)Thread對(duì)象控制。但必須調(diào)用方法currentThread()獲得它的一個(gè)引用,currentThread()是Thread類的公有的
6、靜態(tài)成員。一旦獲得主線程對(duì)象的引用,就可以像控制其他線程那樣控制主線程。SystemInitThread oneSystemInitThread=new SystemInitThread();oneSystemInitThread.start();emInitOk)try Thread.currentThread().sleep(AllBackGammonGameAppConstant.systenMainThreadQuerySleepTime);catch(Exception oneException)oneException.printStackTrace();JOptionPane.s
7、howMessageDialog(null,出現(xiàn)了異常錯(cuò)誤,錯(cuò)誤信息為: +oneException.getMessage(),運(yùn)行環(huán)境錯(cuò)誤,JOptionPane.INFORMATION_MESSAGE);System.exit(0); 上面的SystemInitThread類是后臺(tái)初始化加載的線程類,實(shí)現(xiàn)系統(tǒng)在啟動(dòng)時(shí)的初始化加載,但要采用后臺(tái)線程實(shí)現(xiàn),主進(jìn)程顯示快閃屏窗口。(3)calculateChessBoardColAndRowNumber ()方法實(shí)現(xiàn)動(dòng)態(tài)計(jì)算棋盤的縱橫格子數(shù)public static void calculateChessBoardColAndRowNumber(
8、)Dimension videoScreenSize=Toolkit.getDefaultToolkit().getScreenSize(); int gridColNumber=(videoScreenSize.width-(AllBackGammonGameAppConstant.leftToolBarWidth+AllBackGammonGameAppConstant.advertisementBarImageWidth)/BackGammonGameThemeVO.getPerChessGridWidth();gridColNumber=gridColNumber-2;sGridWid
9、th();gridRowNumber=gridRowNumber-2;BackGammonGameVO.getBackGammonGameVO().setGridColNumber(gridColNumber);BackGammonGameVO.getBackGammonGameVO().setGridRowNumber(gridRowNumber);由于棋盤的縱橫格子數(shù)是工具顯示器屏幕的大小動(dòng)態(tài)計(jì)算出的,因此棋盤的大小是可以調(diào)整的(在菜單中提供有動(dòng)態(tài)調(diào)整的功能菜單項(xiàng)目)。(4)BackGammonGameUtils完整代碼實(shí)例package com.px1987.backgammongame
10、.util;import java.awt.Dimension;import java.awt.Toolkit;import javax.swing.JOptionPane;import com.px1987.backgammongame.mainframe.thread.SystemInitThread;ongame.pobject.BackGammonGameThemeVO;import com.px1987.backgammongame.pobject.BackGammonGameVO;import com.px1987.backgammongame.splashframe.Splash
11、ImageJWindow;public class BackGammonGameUtils public static boolean systemInitOk=false;SuppressWarnings(static-access)public static void systemInitAndLoadResource(SplashImageJWindow oneSplashImageJWindow)SystemInitThread oneSystemInitThread=new SystemInitThread(oneSplashImageJWindow);oneSystemInitTh
12、read.start();temInitOk)try Thread.currentThread().sleep(AllBackGammonGameAppConstant.systenMainThreadQuerySleepTime);catch(Exception oneException)oneException.printStackTrace();JOptionPane.showMessageDialog(null,出現(xiàn)了異常錯(cuò)誤,錯(cuò)誤信息為: +oneException.getMessage(),運(yùn)行環(huán)境錯(cuò)誤,JOptionPane.INFORMATION_MESSAGE);System
13、.exit(0); public static void calculateChessBoardColAndRowNumber()Dimension videoScreenSize=Toolkit.getDefaultToolkit().getScreenSize(); int gridColNumber=(videoScreenSize.width-(AllBackGammonGameAppConstant.leftToolBarWidth+AllBackGammonGameAppConstant.advertisementBarImageWidth)/BackGammonGameTheme
14、VO.getPerChessGridWidth();gridColNumber=gridColNumber-2;int gridRowNumber=(videoScreenSize.height-(AllBackGammonGameAppConstant.topMenuAndToolBarHeight+AllBackGammonGameAppConstant.downStatusBarHeight)/BackGammonGameThemeVO.getPerChessGridWidth();gridRowNumber=gridRowNumber-2;BackGammonGameVO.getBac
15、kGammonGameVO().setGridColNumber(gridColNumber);BackGammonGameVO.getBackGammonGameVO().setGridRowNumber(gridRowNumber);3、人機(jī)五子棋游戲啟動(dòng)快閃屏SplashImageJWindow窗口類(1)類名稱為SplashImageJWindow,包名稱為(2)快閃屏窗口的實(shí)現(xiàn)強(qiáng)烈不推薦使用Toolkit.getDefaultToolkit().getImage(imgPath)加載圖片,利用這個(gè)方法加載圖片會(huì)出現(xiàn)很多問(wèn)題,因?yàn)檫@個(gè)方法是懶加載,并沒(méi)有把圖片真正加載到內(nèi)存中。當(dāng)在隨后
16、的代碼中如果獲得圖像的寬和高時(shí)會(huì)返回-1;Image imgSplash=Toolkit.getDefaultToolkit().getImage(BackGammonGameApp.class.getResource(/images/splashImage.jpg);int nImageWidth=imgSplash.getWidth(null);/獲得圖像的寬和高int nImageHeight=imgSplash.getHeight(null);而是采用下面的代碼:Image imgSplash = ImageIO.read(BackGammonGameApp.class.getReso
17、urce(/images/splashImage.jpg);詳細(xì)的功能實(shí)現(xiàn)過(guò)程請(qǐng)見BackGammonGameApp類中的createSplashWindow()方法。本項(xiàng)目的快閃屏窗口的執(zhí)行效果如下:(3)ToolKit 作為 AWT 工具箱,提供了 GUI 最底層的 Java 訪問(wèn)例如從系統(tǒng)獲取圖像、獲取屏幕分辨率,獲取屏幕色彩模型、全屏的時(shí)候獲得屏幕大小等。但因?yàn)樗浅橄箢?,所以不能直接用new 實(shí)例化,而只能用getDefaultToolkit返回Toolkit類的對(duì)象。(4)SplashImageJWindow完整的代碼實(shí)例package com.px1987.backgammong
18、ame.splashframe;import java.awt.BorderLayout;import java.awt.Dimension;import java.awt.Image;import java.awt.Toolkit;import java.io.IOException;import javax.imageio.ImageIO;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JWindow;import com.px1987.backgammongame.BackGammon
19、GameApp;import com.px1987.backgammongame.pobject.BackGammonGameThemeVO;public class SplashImageJWindow extends JWindow private static final long serialVersionUID = 1L;JLabel initProcessInfoLabel=null;public JLabel getInitProcessInfoLabel() return initProcessInfoLabel;public void setInitProcessInfoLa
20、bel(JLabel initProcessInfoLabel) this.initProcessInfoLabel = initProcessInfoLabel;public SplashImageJWindow() createSplashWindow();public void createSplashWindow() Image imgSplash=null;try imgSplash = ImageIO.read(BackGammonGameApp.class.getResource(/images/splashImage.jpg); catch (IOException oneException) oneException.printStackTrace();JOptionPane.showMessageDialog(null,出現(xiàn)了異常錯(cuò)誤,錯(cuò)誤信息為: +oneException.getMessage(),運(yùn)行環(huán)境錯(cuò)誤,JOptionPane.INFORMATION_MESSAGE);System.
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 打字翻譯面試題及答案
- 和諧家庭面試題及答案
- 電氣電焊考試題及答案
- 河南期貨面試題及答案
- 創(chuàng)意制作考試題及答案
- 健康消費(fèi)面試題及答案
- 高智商考試題及答案
- 基層服務(wù)面試題及答案
- 定向考試面試題及答案
- 人的管理課件圖片
- (2.6.1)-1-5使蜂鳴器鳴叫
- GB/T 4648-1996滾動(dòng)軸承圓錐滾子軸承凸緣外圈外形尺寸
- GB/T 34440-2017硬質(zhì)聚氯乙烯地板
- 員工調(diào)令模板
- 不典型平滑肌瘤MR表現(xiàn)
- 糖尿病病歷模板共享
- 《杜鵑圓舞曲》集體備課教案
- 刑事辯護(hù)技巧與經(jīng)驗(yàn)演示文稿
- 會(huì)計(jì)專業(yè)工作簡(jiǎn)歷表(中級(jí))
- 金融科技課件(完整版)
- 利用與非門或異或門構(gòu)成全加器
評(píng)論
0/150
提交評(píng)論