wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

標題: Java GUI界面的動物換位游戲設計思路分享 [打印本頁]

作者: 919188581    時間: 2020-11-5 13:48
標題: Java GUI界面的動物換位游戲設計思路分享
程序分為不同的級別,左右各有動物,中間石頭沒有動物,將左右動物交換,不可后退。用鼠標單擊一個動物,如果該動物前方的石頭上沒有動物,該動物就跳躍到該石頭上,如果該動物前方的石頭上有動物,但隔位上的石頭沒有動物,該動物就越過自己前面的動物躍到石頭上,其他情形時,該動物不能跳躍。不能持續玩的可以點自動演示,將自動完成游戲,可以幫助游戲者更好的了解系統的主體功能,通過做鞏固所學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所示。




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)









歡迎光臨 (http://m.izizhuan.cn/bbs/) Powered by Discuz! X3.1
9191国产视频| 91免费视频网址| 国产 日韩 欧美 在线| 成人18视频| 久久综合999| 亚洲综合av一区二区三区| 亚洲成年电人电影网站| 欧美日韩精品中文字幕一区二区| 免费在线观看国产黄| 久热在线视频| 97成人超碰视| 色综合天天色| 日韩在线免费看| 99热这里只有精品在线观看| 国产免费视频传媒| 欧美一级视频在线观看| 999国产精品一区| 国产特级嫩嫩嫩bbb| 日韩三级一区二区| 日日噜噜噜噜久久久精品毛片| 国产成人短视频| 在线亚洲一区二区| 精品亚洲成a人| 日韩成人精品| 青青草视频在线免费观看| www·91·com| 国产午夜视频在线播放| 成人免费观看cn| 欧美在线观看网站| 综合av色偷偷网| 国产精品污网站| 欧美日韩岛国| 三上悠亚激情av一区二区三区| 你懂的网址视频| 久久久久久少妇| mm131国产精品| 国产一区二区三区av在线| 亚洲精品一区二区三区在线观看 | 欧美三级网站| 色爱综合网站| 国产福利第一页| 伊人久久综合视频| 午夜激情视频网| 国模精品娜娜一二三区| 国产精品高清网站| 亚洲娇小xxxx欧美娇小| 国产精品久久久久精k8| 亚洲综合精品四区| 亚洲一区免费看| 国产aaaaa毛片| 国产精品mm| 亚洲成人毛片| 国产裸舞福利在线视频合集| 亚洲国产成人在人网站天堂| 日韩一区二区视频在线| 午夜写真片福利电影网| 九九视频精品在线观看| 免费网站在线观看视频| 成人国产精品久久久| 亚洲少妇中文在线| 天天综合网 天天综合色| 另类专区欧美蜜桃臀第一页| 免费观看日韩毛片| 在线观看免费91| 福利片免费在线观看| 五月天婷婷导航| 亚洲第一伊人| 99re成人精品视频| 北条麻妃在线一区二区| 欧美精品欧美精品系列c| 少妇视频一区二区| 最好2018中文免费视频 | 亚洲欧美另类人妖| 国产欧美精品一区二区色综合| 亚洲一一在线| 综合 欧美 亚洲日本| 国产成在线观看免费视频| 视频在线观看入口黄最新永久免费国产| 久久久综合av| 欧美日韩在线视频观看| 大肉大捧一进一出好爽动态图| 男人的天堂av网| 四虎永久在线精品免费网址| 全色精品综合影院| 亚洲国产精品一区制服丝袜| 五月激情综合网| 国产精品久久国产三级国电话系列| yjizz视频| www.一区二区三区.com| 色呦呦呦在线观看| 国产精品自拍一区| 日韩成人中文电影| 亚洲精品国产精品国自产观看| 超碰人人人人人人人| xxxxx中文字幕| 亚洲精品99| 亚洲高清视频在线| 国产精品成人一区二区三区吃奶| 偷拍夫妻性生活| 国产精品视频一区二区免费不卡| 午夜视频在线观看精品中文| 一区二区三区久久久| 91精品成人久久| www.99r| 国产国语亲子伦亲子| av小说在线播放| 日本中文字幕一区二区视频| 欧美一区二区三区精品| 国产三级精品在线不卡| 特黄视频免费看| 制服丝袜中文字幕在线| 久久看片网站| 欧美一级xxx| 色之综合天天综合色天天棕色| 四虎免费在线视频| 色吊丝在线永久观看最新版本| 久久一区二区三区四区五区| 亚洲国产美女精品久久久久∴| 欧美 日韩 国产一区| 国产区卡一卡二卡三乱码免费| 国产专区精品| 椎名由奈av一区二区三区| 日韩av片电影专区| 菠萝菠萝蜜网站| 精品一区二区6| 精产国产伦理一二三区| 国产欧美一区二区色老头 | www.日韩视频| 老鸭窝一区二区| 免费污片软件| 午夜国产精品视频| 欧美电影一区二区| 欧美在线激情| 国产成人亚洲精品自产在线| 欧美精品videosex| 成人一区在线观看| 日日骚av一区| 欧美日韩中文不卡| 色视频网站在线| 99精品视频精品精品视频| 在线免费一区三区| 国产精品va在线观看无码| 亚洲欧美天堂网| 国产精品视频一区二区三区四蜜臂| 五月婷婷欧美视频| 久久久久久久久久久久久久久久av| 日本三级中文字幕| 91美女精品| 亚洲综合视频在线| 亚洲免费视频播放| 黄色小视频免费观看| 樱桃视频成人在线观看| 91在线看国产| 国产一区二区自拍| 丰满熟妇人妻中文字幕| 国产suv精品一区| 狠狠躁夜夜躁人人躁婷婷91 | 性囗交免费视频观看| 妞干网免费视频| 欧美日韩mv| 欧美激情极品视频| 男人操女人动态图| 国产在线一区二区视频| eeuss鲁片一区二区三区在线观看| 97av在线视频| 日本在线小视频| 另类一区二区| 亚洲成人tv网| 日本十八禁视频无遮挡| h视频免费网站| 欧美区亚洲区| 久久久免费精品| 在线观看免费国产视频| 91亚洲精品| 狠狠色噜噜狠狠狠狠97| 欧美成人xxxxx| 快播av资源| 久久综合久久综合亚洲| 伊人av成人| 美女视频a黄免费| 午夜国产欧美理论在线播放| 欧美大片在线影院| 亚洲天堂一区在线观看| 亚洲精品黑牛一区二区三区| 日本高清免费不卡视频| 在线国产精品网| jizzjizz韩国| 久久亚洲二区| 成人国产在线视频| av手机免费看| 欧美jizz| 色妞久久福利网| 青青草免费av| 91精品一区| 在线精品亚洲一区二区不卡| 久久久久久久久久一区二区| 国产在线资源| 国产欧美中文在线| 99re视频在线| 中文字幕一区2区3区| 国外成人福利视频| 欧美精品一区视频| 久久久久99精品成人| 成人性生交大片免费观看网站| 欧美精三区欧美精三区| 特级西西人体wwwww| www.av在线播放| 国产农村妇女毛片精品久久麻豆| 7777在线视频| 三上悠亚一区二区三区| 国产一区二区三区在线观看精品| 国产精品网站入口| 亚洲天堂777| 欧美午夜在线播放| 日韩一级成人av| 国产人妻大战黑人20p| av中文字幕在线| 亚洲高清免费在线| 九九九九九九九九| 三级视频在线| 亚洲一区国产视频| 成人性生活视频免费看| 公交车强行挺进岳身体| 美国三级日本三级久久99| 国产一区视频观看| 你懂的视频在线看| 99riav久久精品riav| 成年人视频大全| 综合久久中文字幕| 日本精品不卡| 亚洲精品日韩欧美| 国产 xxxx| 亚洲欧美小说色综合小说一区| 一本大道久久a久久精二百| 中文字幕第36页| 国产网友自拍视频导航网站在线观看| 91豆麻精品91久久久久久| 性欧美成人播放77777| 欧美日韩尤物久久| 中文字幕亚洲二区| 国产又粗又猛又爽又黄的视频一 | 亚洲自拍偷拍网| 色婷婷**av毛片一区| 五月天中文字幕| 国内精品久久久久久久影视蜜臀 | 亚洲美女尤物影院| 亚洲欧美国内爽妇网| 最近中文字幕免费观看| 亚洲大胆av| 欧美日韩精品久久| 亚州黄色一级| 色老综合老女人久久久| 99久久久无码国产精品不卡| 日韩aaa久久蜜桃av| 久久久精品电影| 久久精品国产成人av| 亚洲午夜精品一区二区国产| 国产免费一区二区三区| 黄色三及免费看| 香蕉成人啪国产精品视频综合网| 男女做爰猛烈刺激| 韩国精品福利一区二区三区| 国产精品第二页| 你懂得视频网站| 亚洲精品国产精品乱码不99| 黄色国产小视频| 草草视频在线观看| 日韩欧美精品三级| 婷婷国产成人精品视频| 制服丝袜日韩| 26uuu另类亚洲欧美日本一| 久热免费在线视频| 欧美经典一区二区| 中文字幕影片免费在线观看| 精品视频高潮| 茄子视频成人在线| 在线亚洲色图| 99久久免费精品高清特色大片| 国产色视频在线播放| 老司机精品视频网| 日韩av片电影专区| 99热热99| 欧美三级电影精品| 国产黄色小视频网站| 国产成人一二片| 亚洲淫片在线视频| 91深夜福利| 久久综合狠狠综合久久综合88| 伊人五月天婷婷| 2020最新国产精品| 亚洲最大成人在线| 美女黄视频在线播放| 一区二区三区精品在线| 精品在线观看一区| 成人午夜电影在线观看| 亚洲精品日韩久久久| 天堂av中文字幕| 欧美国产日本韩| 国产精品国产三级国产专业不| 日韩免费视频| 99久久无色码| 亚洲人av在线| 欧美久久久久久蜜桃| 亚洲视频一区二区三区四区| 激情六月婷婷久久| 欧美激情第一区| 麻豆一区二区| 欧洲一区二区在线| 神马午夜伦理不卡| 欧美专区第一页| 嫩模私拍啪啪| 欧美亚一区二区| 青娱乐国产在线| 国产精品国产一区| 国产91av视频在线观看| av影片在线| 国产精品电影网| 亚洲精华国产精华| 欧美日韩国产高清一区二区| 国产在线成人精品午夜| 女同性一区二区三区人了人一| 亚洲精品一区国产精品| 国产高清在线a视频大全| 亚洲美女性视频| 中文字幕久热在线精品| 亚洲一线二线三线视频| 国产精品黄色网| 国产精品一区在线观看乱码| 人妖粗暴刺激videos呻吟| 色999日韩| 亚洲国产精品成人天堂| 一区二区三区亚洲变态调教大结局 | 欧美高清性猛交| 天天操人人干| 精品国产欧美一区二区| 影音先锋5566中文源资源 | 国产精品久久国产精品99gif| 大地资源高清播放在线观看| 欧美一区二区三区四区在线观看 | 两性午夜免费视频| 欧美一区二区麻豆红桃视频| 久久国产精品久久精品国产| 成人在线免费看片| 久久精品91久久久久久再现| 免费毛片观看| 日韩一级完整毛片| 久久天堂夜夜一本婷婷麻豆| 欧美性猛交xxxx乱大交极品| 五月婷婷激情网| 99精品视频中文字幕| 欧美性生给视频| 国产麻豆精品久久一二三| 草草影院第一页| 久久一区二区三区四区五区| 精人妻一区二区三区| 免费看av成人| 欧美一级二级三级九九九| 美女视频在线免费| 不卡一区二区三区四区五区| 超碰超碰在线| 成人黄色在线播放| 自拍偷拍国产| 色哟哟精品一区| 亚洲一级爰片777777| 色综合天天天天做夜夜夜夜做| 国产免费黄色网址| 91亚洲精品乱码久久久久久蜜桃| 美女福利视频在线观看| 成人免费视频播放| 国产亚洲成人精品| 美女视频一区在线观看| 在线观看免费视频高清游戏推荐| 欧州一区二区| 亚洲精品偷拍视频| 成人免费直播| 久久久综合香蕉尹人综合网| 黄色精品视频| 亚洲一区免费看| 青青一区二区| 无码无遮挡又大又爽又黄的视频| 国产精品99久久精品| 一区二区三区四区毛片| 日韩一级在线| 亚洲一二三不卡| 精品成人免费| 日本高清www| 国产呦萝稀缺另类资源| 日本一级二级视频| 国产一区在线观看视频| 极品盗摄国产盗摄合集| 久久综合成人精品亚洲另类欧美| 一级黄色av片| 亚洲成人在线观看视频| 免费一区二区三区视频狠狠| 欧美久久久一区| 被弄出白浆喷水了视频| 久久久国产91| chinese偷拍一区二区三区| 亚洲xxx视频| 欧美天堂一区|