久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3283|回復: 0
打印 上一主題 下一主題
收起左側

Java GUI界面的動物換位游戲設計思路分享

[復制鏈接]
跳轉到指定樓層
樓主
ID:838760 發表于 2020-11-5 13:48 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
程序分為不同的級別,左右各有動物,中間石頭沒有動物,將左右動物交換,不可后退。用鼠標單擊一個動物,如果該動物前方的石頭上沒有動物,該動物就跳躍到該石頭上,如果該動物前方的石頭上有動物,但隔位上的石頭沒有動物,該動物就越過自己前面的動物躍到石頭上,其他情形時,該動物不能跳躍。不能持續玩的可以點自動演示,將自動完成游戲,可以幫助游戲者更好的了解系統的主體功能,通過做鞏固所學Java語言基本知識,增進Java語言編輯基本功,掌握JDK、等開發工具的運用,拓寬常用類庫的應用。使我們通過該教學環節與手段,把所學及相關知識加以融會貫通,全面掌握Java語言的編程思想及面向對象程序設計的方法,為今后從事實際工作打下堅實的基礎。

1.1設計目的
1.2設計要求和設計指標
1.3開發技術
1.3.1 Java語言簡介
1.3.2 Java語言的開發工具包JDK
1.3.3 Eclipse開發環境
2 設計內容
2.1總體設計
2.1.1 ChangeAnimalWindow.java(主類)
2.1.2 Animal.java
2.1.3 Point.java
2.1.4 Stone.java
2.1.5 HandleMouse.java
2.1.6 AutoMoveAnimal.java
2.1.7 Customdlg.java
2.1.8 People.java
2.1.9 Record.java
2.1.10 ShowRecordDialog.java
2.2詳細設計
2.2.1 ChangeAnimalWindow類(主類)
2.2.2 Animal類
2.2.3 Point類
2.2.4 Stone類
2.2.5 HandleMouse類
2.2.6 AutoMoveAnimal類
2.2.7 ShowRecordDialog類
2.2.8 People類
2.2.9 Record類
2.2.10 Customdlg類
2.3 程序測試
2.3.1 主程序調試
2.3.2 組件調試
2.3.3 菜單調試

訓練掌握、加深理解并鞏固《Java 2 實用教程》中所學到的基本概念、編程思路;
綜合運用Java程序設計的編程方法,能夠利用這些程序設計方法來解決工程和科研中常見的實際問題;
培養分析問題、解決問題的能力,進一步提高進行大型程序設計的能力。
1.2.   設計要求
設計GUI界面的動物換位游戲,游戲的結果是讓左右兩組動物交換位置。具體要求如下:
(1)程序分為4個級別,用戶可以通過界面上提供的菜單選擇“初級”、“中級”、“高級”、“自定義”這4個級別。對于“初級”級別,在水平排列的7塊石頭上的左右各有3個類型相同的動物,中間的石頭上沒有動物;對于“中級”級別,在水平排列的9塊石頭上的左右各有4個類型相同的動物,中間的石頭上沒有動物;對于“高級”級別,在水平排列的11塊石頭上的左右各有5個類型相同的動物,中間的石頭上沒有動物;對于“自定義”級別,用戶可以輸入自己想設置的一個動物數量(輸入的數必須是偶數),在水平排列的N塊石頭上的左右各有(N-1)/2個類型相同的動物,中間的石頭上沒有動物。
(2)用鼠標單擊一個的動物,如果該動物前方的石頭上沒有動物,該動物就跳躍到該石頭上,如果該動物前方的石頭上有動物,但隔位上的石頭沒有動物,該動物就越過自己前面的動物躍到石頭上,其他情形時,該動物不能跳躍(跳躍時不能超過2塊石頭)。
(3)左面的動物只能向右方跳躍,右面的動物只能向左方跳躍。
(4)用戶可以通過單擊界面上提供的按鈕,讓程序自動完成動物換位。
(5)可以隨時單擊界面上提供的按鈕,重新開始當前的級別。
(6)用戶可以通過菜單選項,可以選擇左、右動物的圖像。
(7)該游戲提供了游戲成績記錄,用戶可以單擊界面上的菜單選項查看英雄榜和檢測是否超時,看看自己水平怎么樣。
(8)該程序也提供了游戲規則,不知道游戲規則的可以在菜單中查看幫助。
(9)在進行游戲時具有音效的效果。
1.3. 開發技術
1.3.1 Java語言簡介
Java是一種簡單易用的編程語言,它采用了一種虛擬機作為中間層來屏蔽平臺差異,能夠實現跨平臺運行。Java支持面向對象編程,有封裝、繼承、多態的特性,它還支持多線程,實現多個程序流程同時執行,完成不同任務。
1.3.2 Java語言的開發工具包JDK
JDK(Java Development Kit)是Java語言的開發工具包,工具包里除了包含Java語言編譯器、調試器以及演示程序以外,一般還會包含Java運行環境(Java Runtime Environment,JRE)。JRE是某一平臺運行Java程序的軟件環境,包括虛擬機(JVM)和核心類庫等。
1.3.3 Eclipse開發環境
Eclipse是一個開放源代碼的、基于Java的可擴展開發平臺,是目前非常流行的跨平臺的自由集成開發環境(IDE)。最初主要用于Java語言開發,但是目前也有人通過插件使其作為其他編程語言(如C++、PHP)的開發工具。Eclipse本身也只是一個框架平臺,但是眾多插件的支持使得Eclipse擁有其他功能相對固定的IDE軟件很難具有的靈活性。許多軟件開發商以Eclipse為框架開發自己的IDE。
Eclipse本身核心非常小,其設計思想是“一切皆為插件”。其他功能都是基于插件的形式與Eclipse無縫結合,協同工作,如Eclipse的圖形API、多國語言包等。在Eclipse啟動后,要真正用到某個插件時,該插件才會被動態載入內存,不再被使用的插件會在適當的時候被清除內存,所以不必擔心某些不常用的插件消耗內存。插件機制使得Eclipse具有了無限擴展的可能。

2.   設計內容
2.1.   總體設計
在設計動物換位時,需要編寫10個Java源文件:ChangeAnimalWindow.java、Point.java、Animal.java、Stone.java、HandleMouse.java、AutoMoveAnimal.java、People.java、Record.java、ShowRecordDialog.java和Customdlg.java。
動物換位除了需要編寫上述10個Java源文件所給出的類外,還需要Java系統提供的一些重要的類,如:JmenuItem、File和Jbutton類等。動物換位所用到的一些重要的類以及之間組合關系如圖2-1所示。
以下是10個Java源文件的總體設計。

ChangeAnimalWindow類負責創建動物換位的主窗口,該類含有main方法,程序從該類開始執行。ChangeAnimalWindow類的成員變量中有七種重要類型的對象:Animal、Point、Stone、HandleMouse、Customdlg、ShowRecordDialog和AutoMoveAnimal對象。

2.1.2 Animal.java

Animal類是JPanel的一個子類,創建的對象是ChangeAnimalWindow類的重要成員之一,用來表示“動物”。

2.1.3 Point.java

Point類負責創建確定位置的對象,使用Point對象,可以確定Animal以及Stone對象在窗體中的位置。

2.1.4 Stone.java

Stone類是JButton的一個子類,創建的對象表示“石頭”。

2.1.5 HandleMouse.java

HandleMouse類所創建的對象負責處理鼠標事件。

2.1.6 AutoMoveAnimal.java

AutoMoveAnimal類所創建的對象使用算法完成動物的自動換位。

2.1.7 Customdlg.java

Customdlg類所創建的對象用來設置“自定義”級別的動物數量。

2.1.8 People.java

People對象封裝用戶的名字和成績,以便ShowRecordDialog對象可以按成績的高低排序用戶。

2.1.9 Record.java

Record類是javax.swing包中JDialog對話框的子類,當用戶成功完成相應級別的游戲時,Record創建的對象負責保存用戶的名字和成績到相應的級別文件中。

2.1.10 ShowRecordDialog.java

ShowRecordDialog類是javax.swing包中JDialog對話框的子類,當用戶單擊查看相應的級別排行榜時,ShowRecordDialog創建的對象負責顯示用戶的成績。

2.2.   詳細設計2.2.1 ChangeAnimalWindow類(主類)

1)效果圖

ChangeAnimalWindow創建的窗口效果如圖2-2-1所示:

圖2-2-1  ChangeAnimalWindow創建的窗口

ChangeAnimalWindow類是javax.swing包中的JFrame的一個子類,并實現了ActionListener接口,標明該類的主要成員變量和方法的UML圖如圖2-2-2所示。

以下是UML圖中有關數據和方法的詳細說明。

2)成員變量
amoutOfAnimal是int型數據,默認值是6。amoutOfAnimal的值用來確定ChangeAnimalWindow窗體中“動物”的數目,即Animal對象的數目。
distance是int型數據,默認值是80。distance的值用來確定Point對象之間的距離,進而可以確定Animal之間,Stone之間的距離以及Animal和Stone對象外觀的大小。
animal是Animal型數組,其長度為amoutOfAnimal。
point是Point型數組,其長度為amoutOfAnimal+1。
stone是Stone型數組,其長度為amoutOfAnimal+1。
handleMouse是HandleMouse類創建的鼠標事件監視器,用來監視animal數組中Animal對象觸發的鼠標事件。
autoMoveAnimal是AutoMoveAnimal類創建的對話框。通過該對話框可以實現程序自動將左右動物交換位置。
bar是JMenuBar創建的菜單條,用來添加菜單。bar被放置在窗口的頂部。
menuGrade是JMenu創建的菜單,其名字為“選擇級別”。menuImage也是JMenu創建的菜單,其名字為“選擇動物圖像(JPG,GIF)”。menuHelp也是JMenu創建的菜單,其名字為“幫助”。menuHero也是JMenu創建的菜單,其名字為“英雄榜”。menuGrade、menuImage、menuHero和menuHelp被添加到菜單條bar中。
oneGradeItem、twoGradeItem、threeGradeItem和custom是JMenuItem創建的菜單項,它們的名字依次為“初級”、“中級”、“高級”和“自定義”,這四個菜單項被添加到菜單項menuGrade中。leftImage、rightImage和defaultImage也是JMenuItem創建的菜單項,其名字依次為“左面動物的圖像”、“右面動物的圖像”和“左右面動物的默認圖像”,這三個菜單項被添加到菜單項menuImage中。oneGradeResult、twoGradeResult、threeGradeResult、customGradeResult和limitTime也是JMenuItem創建的菜單項,其名字依次為“初級英雄榜”、“中級英雄榜”、“高級英雄榜”、“自定義英雄榜”、“我超時了嗎”,這五個菜單項被添加到菜單項menuHero中。helpcontent和aboutUs是JMenuItem創建的菜單項,它們的名字依次為“游戲規則”、和“關于我們”,這兩個菜單項被添加到菜單項menuHelp中。oneGradeItem、twoGradeItem、threeGradeItem和custom以及leftImage、rightImage和defaultImage等菜單項都將當前窗口注冊為自己的ActionEvent事件監視器。
renew、quit和autoButton是JButton創建的按鈕對象,名字依次為“重新開始”、“撤銷”和“自動演示”。renew、quit和autoButton都將當前窗口注冊為自己的ActionEvent事件監視器。
3)方法
ChangeAnimalWindow()是構造方法,負責完成窗口的初始化。
init()方法負責完成Animal、Stone和Point對象的創建。
setAmoutOfAnimal(int)方法負責設置動物的個數,即amountOfAnimal的值。
removeAnimalAndStone()方法負責從窗體中移掉動物和石頭,即移掉Animal對象和Stone對象。
needDoing()方法負責執行一些經常需要重復執行的代碼。
actionPerformed(ActionEvent)方法是ChangeAnimalWindow類實現的ActionListener接口中的方法。ChangeAnimalWindow創建的窗口是oneGradeItem、twoGradeItem、threeGradeItem、custom、leftImage、rightImage、defaultImage等菜單項和renew、quit、autoButton按鈕的ActionEvent事件監視器。當用戶選中某個菜單項或單擊按鈕時,窗口將執行actionPerformed(ActionEvent)方法進行相應的操作。如果用戶選中oneGradeItem、twoGradeItem、threeGradeItem和custom四個菜單項的某一項時,actionPerformed(ActionEvent)方法所執行的操作就是改變amountOfAnimal的值,并執行needDoing()方法,完成必要的初始化。如果用戶選中leftImage和rightImage菜單項的某一個時,actionPerformed(ActionEvent)方法所執行的操作就是改變leftImageFile和rightImageFile的引用。當用戶單擊renew按鈕時,actionPerformed(ActionEvent)方法所進行的操作是保持當前的amountOfAnimal的值,并執行needDoing()方法,完成必要的初始化,當用戶單擊quit按鈕時,actionPerformed(ActionEvent)方法所進行的操作是撤銷當前“動物”的前一次跳躍。當用戶單擊autoButton按鈕時,actionPerformed(ActionEvent)方法所進行的操作是彈出autoMoveAnimal對話框,用戶可以通過該對話框讓程序顯示動物換位過程。
main(String)方法是程序運行的入口方法。
2.2.2 Animal類
自定義Animal類繼承javax.swing.JPanel,其對象是數組animal的單元中的對象。Animal型數組animal是ChangeAnimalWindow窗口的重要成員之一。標明Animal類的主要成員變量和方法以及和ChangeAnimalWindow類之間組合關系的UML圖,如圖2-2-3所示。



成員變量
point是Point型對象,用來確定Animal對象在窗口中的位置。
isLeft是boolean型數據,用來確定Animal對象是否為“左”。
tool是Toolkit對象,用來獲得Image對象。
leftImage和rightImage是File類型的對象,用來確定Animal對象上繪制的圖像文件。
方法
Animal()是構造方法,負責完成Animal對象的初始化。
Animal對象調用setLeftImage(File)方法可以設置leftImage文件對象。
Animal對象調用setRightImage(File)方法可以設置rightImage文件對象。
Animal對象調用setIsLeft(boolean)設置自己是否為“左”的動物,即設置isLeft屬性的值。
Animal對象調用getIsLeft()方法判斷自己是否為“左”的動物,即返回isLeft屬性的值。
Animal對象調用setAtPoint(Point)方法設置自己所在的“點”,即設置屬性point的對象引用。
Animal對象調用getAtPoint()返回自己所在的“點”,即返回point對象的引用。
Animal對象調用paintComponent(Graphics)方法繪制圖像,即繪制tool對象根據leftImage或rightImage文件所創建的Image對象。
2.2.3 Point類
Point創建的對象含有兩個重要int型數據,分別用來表示窗體坐標系中的x軸坐標和y軸坐標值,窗體坐標系的原點是窗體的左上角,向右是x軸的正向,向下是y軸的正向。Point類創建的對象是數組point的單元中的對象。Point型數組point是ChangeAnimalWindow窗口的重要成員之一,其單元中的Point對象用來確定Animal對象和Stone對象在窗體中的位置。標明Point類的主要成員變量和方法以及和ChangeAnimalWindow類之間的組合關系的UML圖,如圖2-2-4所示。


成員變量
x和y是Point對象中的兩個int型數據,分別用來表示窗體坐標系中的x軸和y軸坐標值。
haveAnimal是boolean數據,如果有Animal對象在該Point對象上時,該數據為true;否則為false。
animal是Animal類聲明的對象,用來存放一個Animal對象的引用,標明該Animal對象在當前Point對象上。
2)方法
Point(int x,int y)是構造方法,用來創建Point對象。
Point對象調用isHaveAnimal()方法可以返回一個boolean數據,如果當前Point對象上有Animal對象,isHaveDisc()方法返回true;否則返回false。
Point對象調用setIsHaveAnimal(boolean boo)方法可以根據參數boo的值設置當前Point對象上是否有Animal對象。
Point對象getX()和getY()方法可以返回其中的x軸坐標和y軸坐標。
Point對象調用equals(TowerPoint p)方法可以判斷當前Point對象是否和參數p指定的Point對象相同。
Point對象調用setThisAnimal(Animal animal)方法,指定參數animal在當前Point對象上。
Point對象調用getThisAnimal()方法可以返回當前Point對象上的Animal對象。
Point對象調用setThisStone(Stone stone)方法,指定參數stone在當前Point對象上。
Point對象調用getThisStone()方法可以返回當前Point對象上的Stone對象。
2.2.4 Stone類
Stone類是javax.swing包中JButton按鈕組件的一個子類,創建的對象是數組stone的單元中的對象。Stone型數組stone是ChangeAnimalWindow窗口的重要成員之一。標明Stone類主要成員變量和方法以及和ChangeAnimalWindow類之間的組合關系的UML圖,如圖2-2-5所示。


1)成員變量
     point是Point型數組,用來存放ChangeAnimalWindow窗體中point數組的引用。
step是ArrayList<Integer>數組表,用來存放移動“動物”的步驟。
spendTime用來記錄用戶移動“動物”所用時間。
recordTime是計時器。
success是boolean型數據,當該變量的值為true時表示用戶成功地將左右動物換位。
countTime是boolean型數據,當該變量的值為true時,將啟動計時器為用戶計時;否則不為用戶計時。
showTime是JTextField創建的文本框,負責顯示用時。
2)方法
HandleMouse()是構造方法,負責創建HandleMouse對象。
handleMouse對象調用setPoint(Point[ ])方法將ChangeAnimalWindow窗體中的point對象的引用傳遞給該對象中的point,以便handleMouse移動窗體中的Animal對象。
handleMouse對象調用initStep()方法清空step中的數據。
handleMouse對象調用initSpendTime()將spendTime的值設置為0。
handleMouse對象調用setCountTime(boolean)設置是否啟動計時器。
handleMouse對象調用getStep()返回step對象。
mousePressed(MouseEvent)是HandleMouse類實現的MouseListener接口中的方法,當用戶用在ChangeAnimalWindow窗體中的Animal對象上按下鼠標時,將觸發MouseEvent鼠標事件,handleMouse對象將調用執行mousePressed(MouseEvent)方法對事件作出處理,即根據規則移動當前被鼠標單擊的Animal對象。
mouseReleased(MouseEvent)方法是HandleMouse類實現的MouseListener接口中的方法,ChangeAnimalWindow窗體中的Animal對象上釋放鼠標時,將觸發MouseEvent鼠標事件,handleMouse對象將調用執行mouseReleased(MouseEvent)方法對事件作出處理,其主要操作是判斷用戶是否已經成功地將左右動物換位。
actionPerformed(ActionEvent)是HandleMouse類實現的ActionListener接口中的方法。使用Timer類的構造方法:Timer(int a,Object b)創建了計時器:recordTime,其中的參數a的單位是毫秒,確定計時器每隔a毫秒“振鈴”一次,參數b是計時器的監視器。在這里取a=1000,監視器b是當前handleMouse對象。計時器發生的振鈴事件是ActionEvent事件,當振鈴事件發生時,監視器就會監視到這個事件,監視器就會調用actionPerformed(ActionEvent)方法。當振鈴每隔1000毫秒發生一次時,方法actionPerformed(ActionEvent)就被執行一次,所執行的操作就是按著step指定的步驟移動一個Animal對象。
2.2.6 AutoMoveAnimal類
AutoMoveAnimal類是javax.swing包中JDialog的子類,并實現了ActionListener接口,創建的對象autoMoveAnimal是ChangeAnimalWindow的成員之一。標明AutoMoveAnimal類的主要成員變量、方法以及和ChangeAnimalWindow類之間的組合關系的UML圖,如圖2-2-7所示。

1)成員變量
point是Point型數組,用來存放ChangeAnimalWindow窗體中point數組的引用。
step是ArrayList<Integer>型對象,用來存放移動“動物”的步驟。
bStart,bStop,bContinue,bClose是JButton按鈕,當用戶單擊bStart按鈕時,程序將按著step中的步驟開始移動動物;單擊按鈕bStop時,暫停移動動物;單擊bContinue按鈕時,恢復移動動物;單擊bClose按鈕時,關閉當前對話框,并停止移動動物。
time是javax.swing包中Timer類創建的計時器。使用Timer類的構造方法:Timer(int a,Object b)創建一個計時器,其中的參數a的單位是毫秒,確定計時器每隔a毫秒“振鈴”一次,參數b是計時器的監視器,在這里我們取a=1000,監視器b是當前對話框。計時器發生的振鈴事件是ActionEvent類型事件,當振鈴事件發生時,監視器就會監視到這個事件,監視器就回調ActionListener接口中的actionPerformed方法。當振鈴每隔1000毫秒發生一次時,方法actionPerformed就被執行一次,并按著step指定的步驟移動一個動物。
2)方法
AutoMoveAnimal()是構造方法,用來創建對象autoMoveAnimal。
autoMoveAnimal對象調用setPoint(Point[ ])方法將ChangeAnimalWindow窗體中point數組的引用傳遞給對象,以便autoMoveAnimal對象移動ChangeAnimalWindow窗體中的動物。
actionPerformed(ActionEvent)是接口ActionListener中的方法。當用戶單擊bStart、bStop、bContinue或bClose當中任何一個按鈕時,autoMoveDisc對象將調用執行actionPerformed(ActionEvent)方法,該方法的操作是,如果用戶單擊了bStart按鈕,就按著moveStep中的步驟開始移動盤子;如果單擊了bStop按鈕,就暫停移動盤子;如果單擊了bContinue按鈕,就恢復移動盤子;如果單擊了bClose按鈕,就關閉當前對話框,并停止移動盤子。
autoMoveAnimal對象調用setStep()方法設置step對象中的數據。step是ArrayList<Integer>,存放著移動“動物”的步驟,這些步驟是setStep()用算法生成了整數序列,例如,當step中存放的整數序列是“4,3,2,4”時,那么該序列表示了兩個連續的移動步驟:“將point[4]上的動物移動到point[3]上”和“將point[2]上的動物移動到point[4]上”。
2.2.7 ShowRecordDialog類
ShowRecordDialog類是javax.swing包中JDialog的子類,并實現了ActionListener接口,該類創建的對象showDialog是ChangeAnimalWindow窗口的成員之一。當用戶選擇窗口上的“英雄榜”菜單中的選項,該對話框可見,并顯示相應級別文件中存儲的成績。標明ShowRecordDialog類的主要成員變量、方法以及和ChangeAnimalWindow類之間組合關系的UML圖,如圖2-2-8所示。


1)成員變量
gradeFile是對話框要讀取的文件,該文件存儲成績。
clear是注冊了ActionEvent事件的按鈕。
showArea文本區顯示對話框從gradeFile文件中讀出的成績。
treeSet負責將成績按高低排序。
2)方法
ShowRecordDialog()是構造方法,負責創建showDialog對象。
setGradeFile(File)方法。ShowRecordDialog類創建的ShowRecordDialog對話框是主類ChangeAnimalWindow窗口中的一個成員。當用戶選擇窗口上的“英雄榜”菜單中的菜單項時,ShowRecordDialog對話框調用setGradeFile(File)方法將相應的級別文件傳遞給gradeFile。
showRecord()方法。ShowRecordDialog對話框調用showRecord()方法讀取gradeFile文件中的成績,為了將成績按高低順序顯示在showArea文本區中,showRecord()方法根據讀取的名字和該名字的對應成績,創建一個People對象,并將該People對象存放在treeSet樹集中。
actionPerformed(ActionEvent)是ActionListener接口中的方法,clear注冊了ActionEvent事件,當用戶單擊clear按鈕時,actionPerformed(ActionEvent)方法被調用執行,清除gradeFile文件中的內容。
2.2.8 People類
People對象中的數據由ShowRecordDialog對話框從gradeFile文件中讀取的用戶姓名和成績所構成。ShowRecordDialog對話框將People對象作為其treeSet樹集上的節點,以便按著成績高低排列People對象。標明People的主要成員變量、方法以及和ShowRecordDialog類之間關系的UML圖,如圖2-2-9所示。


以下是UML圖中有關數據和方法的詳細說明。
1)成員變量
name是用戶的名字。
time是用戶的用時。
2)方法
getTime()方法返回time。
getName()方法返回name。
compareTo(Object)是comparable接口中的方法,其操作是確定People對象的大小關系。
2.2.9 Record類
Record是javax.swing包中JDialog的子類,并實現了ActionListener接口,該類創建的對象record是HandleMouse類的成員之一。當用戶成功完成游戲時,程序彈出Record對話框,用戶使用該對話框提供的界面將成績保存到相應的文件中。標明Record類的主要成員變量、方法以及和HandleMouse類之間關系的UML圖,如圖2-2-10所示。

1)成員變量
time是用戶的用時。
yourName是用戶用來輸入名字的文本框。
enter、cancel是按鈕對象,用戶單擊enter按鈕可保存成績,單擊cancel按鈕可放棄保存成績。
gradeFile是級別文件。
2)方法
Record()是構造方法,負責創建record對象。
setGradeFile(File)方法。Record類創建的Record對話框是測試區HandleMouse中的一個成員。當用戶成功完成游戲時測試區彈出Record對話框,Record對話框將調用setGradeFile(File)方法將測試區中的級別文件傳遞給Record對話框gradeFile。
setTime(int)方法。當用戶成功完成游戲后,測試區彈出Record對話框,Record對話框將調用setTime(int)方法將測試區記錄的用戶用時傳遞給Record對話框中的time。
actionPerformed(ActionEvent)是ActionListener接口中的方法,enter和cancel按鈕注冊了ActionEvent事件,當用戶單擊enter時,actionPerformed(ActionEvent)方法被調用執行,其操作是將用戶在文本框yourName中輸入的名字以及time的值保存到gradeFile文件中,然后關閉當前對話框;當用戶單擊cancel按鈕時,actionPerformed(ActionEvent)方法將被調用執行,其操作是關閉當前對話框。
2.2.10 Customdlg類
Customdlg是javax.swing包中JDialog的子類,并實現了ActionListener接口,該類創建的對象record是ChangeAnimalWindow類的成員之一。當用戶單擊菜單中“自定義”級別按鈕設置時,程序彈出Customdlg對話框,用戶使用該對話框可以設置游戲的動物數量。標明Customdlg類的主要成員變量、方法以及和ChangeAnimalWindow類之間關系的UML圖,如圖2-2-11所示。



  • 成員變量
  • AmountOfAnimal是用戶設置的動物數量。
  • lbl是提示用戶輸入動物數量的標簽。
  • text是用戶用來輸入的文本框。
  • 方法
  • Customdlg(Frame f,String s,boolean b)是構造方法,負責創建Customdlg的對象。
  • getAmountOfAnimal()方法。當用戶輸入動物數量時,用來返回動物的數量的方法。
  • actionPerformed(ActionEvent e)ActionListener接口中的方法,當用戶輸入數量后,按下回車鍵時,被調用執行做事件處理,起的作用是設置動物數量。

2.3.   程序測試2.3.1 主程序
圖2-3-1  主窗口調試
圖2-3-2  游戲運行調試





2.3.2 組件測試

圖2-3-3  自動演示按鈕調試
2.3.3 菜單測試
選擇級別
選擇級別菜單調試如圖2-3-4、圖2-3-5:
圖2-3-4  選擇“中級”級別
圖2-3-5  選擇“中級”級別后動物數量發生變化
選擇動物圖像菜單測試如圖2-3-6、圖2-3-7、圖2-3-8所示
圖2-3-6  選擇“左面動物的圖像”
圖2-3-7 彈出打開對話框,選擇pigone.jpg
圖2-3-8  左邊動物圖像變成了pigone.jpg
選擇英雄榜中“初級英雄榜”調試圖,如圖2-3-9、2-3-10所示
圖2-3-9  選擇“初級英雄榜”
圖2-3-10  彈出“初級英雄排行榜”對話框
選擇英雄榜中“我超時了嗎”,驗證我的游戲時間,如圖2-3-11、2-3-12、2-3-13:
圖2-3-11 點擊“我超時了嗎”
圖2-3-12  在超過(動物數量*5)s=6*5=30的時間里彈出對話框
圖2-3-13  超過時間后左右兩邊的圖像會換掉


選擇“幫助”調試圖,如圖2-3-14、2-3-15:
圖2-2-14  點擊“游戲規則”
圖2-3-15  彈出“游戲規則”對話框



3.   本設計改進建議

針對本設計由于時間和技術有限,我覺得還有如下需要改進的地方:

對“自定義”級別動物數量設置中,數量輸入時不能太大,否則在主窗口顯示的動物圖像會非常窄小。建議應設定一個上限,當達到上限時彈出提示信息,提醒用戶“您輸入的數量太大”。對“我超時了嗎”,如果超時,則彈出提示消息后,左右兩邊圖像被其他圖像代替。但是如果在沒有關閉游戲時,重新開始再玩一盤,如果再超時,同樣彈出提示信息,但圖像不會再調換。因此,建議能在此改進,使得能不停調換。對“英雄榜”中記錄用戶玩游戲時的成績,但不能在當玩家成績在排行榜中排進前三彈出提示信息。在此希望在以后的學習中繼續改進。


在設計的過程中了解到自己的知識還是比較有限,更肯定了自己在以后學習編程的道路.上堅定不移的但由于只學習了一個學期的JAVA語言,自己水平有限,使得程序還有不是很完善。回 顧起此次java,至今我仍感慨頗多,的確,從選題到定稿,從理論到實踐,在整整兩個星期的日子里,可以說得是苦多于甜,但是可以學到很多很多的的東西


以上的Word格式文檔51黑下載地址(不含程序):

艾克拜爾·伊波拉音.doc (1.33 MB, 下載次數: 9)




評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲一区免费在线 | 国产99久久精品一区二区永久免费 | 日日日日日日bbbbb视频 | 黄色成人av | 男人的天堂中文字幕 | 91 久久| 久久久久久国产精品免费免费狐狸 | 国产婷婷综合 | 久久精品视频一区二区 | 日韩中文字幕视频在线观看 | 欧美13videosex性极品 | 操操日| 国产精品视频一区二区三区 | 欧美一二三 | 国产精品免费一区二区三区四区 | 999免费视频 | av大片在线观看 | 亚洲精品一区二区另类图片 | 第一区在线观看免费国语入口 | 欧美aⅴ| 一级aaaaaa毛片免费同男同女 | 亚洲欧美一区二区三区国产精品 | 精品久久国产 | 一区在线观看 | 日韩精品一区二 | 日本激情视频网 | 久久99网| 国产精品99久久久久久人 | 黄网站在线播放 | 欧日韩在线 | 亚洲天堂av一区 | 色久五月| 天天操夜夜拍 | 国产视频三区 | 九九九精品视频 | 91黄色免费看 | 久草新视频 | 成人毛片网站 | 中文字幕一区在线观看视频 | 久久伊人青青草 | 亚洲一区不卡在线 |