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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3631|回復: 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 單片機教程網

快速回復 返回頂部 返回列表
91福利小视频| 蜜乳av综合| 久久在线免费观看| 2025国产精品视频| 影音先锋黄色资源| 色婷婷亚洲十月十月色天| 日产午夜精品一线二线三线| 欧美日韩一区二区在线观看| 欧美性受黑人性爽| 神马久久久久久久久久| 亚洲aⅴ网站| 香蕉成人啪国产精品视频综合网 | 91欧洲在线视精品在亚洲| 国语精品一区| 亚洲免费视频在线观看| 91亚洲免费视频| 免费黄色大片| 欧美99久久| 亚洲免费人成在线视频观看| 亚洲一区二区三区三州| 136福利视频| 激情欧美丁香| 日韩亚洲欧美中文高清在线| 黄色免费视频网站| 佐山爱痴汉视频一区二区三区| 久久久久中文| 精品少妇v888av| 天天干天天舔天天操| 偷拍25位美女撒尿视频在线观看| 精品一区二区三区蜜桃| 日韩av电影国产| 久一视频在线观看| av有码在线观看| 亚洲精品成人少妇| 亚洲一区二区三区四区中文| 香蕉久久一区二区三区| 偷窥自拍亚洲色图精选| 日韩欧美中文字幕精品| 一女二男3p波多野结衣| 成人午夜影院| 蜜臀av国产精品久久久久| 51精品国产黑色丝袜高跟鞋| 久久久久亚洲av片无码下载蜜桃| 福利网站在线观看| 亚洲美女淫视频| 亚洲欧美日韩在线综合| 亚洲最新永久在线观看| 日韩中文在线电影| 伊人伊成久久人综合网小说| 中文字幕日韩三级片| 欧美777四色影视在线| www.欧美色图| 国产一区二区三区四区五区加勒比| 91亚洲视频在线观看| 亚洲啊v在线免费视频| 肉色丝袜一区二区| 欧美中文在线视频| 综合激情网五月| 亚洲wwww| 欧美午夜电影网| 性欧美videossex精品| 国产午夜电影| 国产精品18久久久久| 成人欧美在线观看| 国产露脸91国语对白| 国产成人tv| 亚洲国产成人一区| 欧美狂猛xxxxx乱大交3| 美女国产在线| 一区二区激情小说| 亚洲熟妇无码一区二区三区导航| 禁网站在线观看免费视频| 国产美女诱惑一区二区| 日本高清不卡的在线| 国产午夜无码视频在线观看 | 欧美激情资源网| 日韩电影大全在线观看| 女人公敌韩国| 亚洲视频二区| 国产精品99导航| 亚洲自拍第二页| 日韩大片在线免费观看| 亚洲视频在线免费观看| 国产suv精品一区二区68| 电影在线观看一区| 欧美亚洲一区二区三区四区| 国内av一区二区| 国产视频二区在线观看| 亚洲欧美综合色| 精品国偷自产一区二区三区| 羞羞的视频免费| av在线播放不卡| 亚洲开发第一视频在线播放| 91视频导航| 久久精品国产精品亚洲综合| 操人视频欧美| 欧美五级在线观看视频播放| 亚洲综合日韩| 亚洲a成v人在线观看| 经典三级一区二区三区视频| 亚洲夜间福利| 国产精品偷伦一区二区| 丁香六月天婷婷| 欧美欧美天天天天操| 日本91av在线播放| av网站免费大全| 91精品综合| 国产精品第二页| 黄色av免费观看| 亚洲精品麻豆| 97在线电影| 国产三级电影| 国产在线精品免费| 五月天亚洲综合小说网| a级免费观看| 91亚洲永久精品| 一二三四中文字幕| a级片在线免费看| 精品国产一区二区三区香蕉沈先生| 欧美xxxx做受欧美.88| 欧美一区二区三区不卡视频| 欧美男gay| 97在线视频一区| 亚洲国产福利视频| 亚洲人成高清| 国产高清自拍99| 91精彩视频| 成人av综合一区| 日韩激情视频一区二区| 诱受h嗯啊巨肉高潮| 中文字幕一区二区视频| 欧美婷婷精品激情| 超碰超碰在线| 51午夜精品国产| 国产精品夜夜夜爽阿娇| 韩国三级成人在线| 精品国内自产拍在线观看| 99re这里只有精品在线| 久久一级电影| 成人a免费视频| 国产在线麻豆精品| 成人免费视频视频在线观看免费| 男人天堂网站在线| 欧美777四色影视在线| 色综合中文综合网| 国产伦精品一区二区三区视频女| 亚洲在线资源| 欧美裸体男粗大视频在线观看| 国产特级黄色片| 在线亚洲成人| 欧美日韩一区综合| 欧美jiizzhd精品欧美| 一区二区三区高清| 黄色免费看视频| 久久久精品一区二区毛片免费看| 日韩在线观看免费高清| 一区二区 亚洲| 国产亚洲一级| 欧洲在线视频一区| 黄页免费在线观看| 欧美性猛交丰臀xxxxx网站| 亚洲乱码国产乱码精品精大量| **国产精品| 国内精品一区二区三区| 久久香蕉综合色一综合色88| 国产成人精品三级麻豆| 国产日韩欧美精品在线观看| 91在线视频免费看| 日韩写真欧美这视频| 久久久综合久久久| 我不卡伦不卡影院| 国产精品一区二区欧美黑人喷潮水| 麻豆免费视频网站入口| 一区二区三区蜜桃| 91网站免费视频| 精品国产一区二区三区不卡蜜臂 | 91社区在线观看| 欧美一区二区福利视频| 成人免费看片98欧美| 国产精品www994| 日韩久久久久久久久久久久久| 一二三区在线| 欧美高清激情brazzers| 黄色激情在线视频| a级在线观看| 亚洲激情在线观看视频免费| 在线观看国产小视频| 久久国产毛片| 欧美亚洲黄色片| 亚洲按摩av| 中文字幕日韩综合av| 色一情一乱一乱一区91av| 国产91丝袜在线18| 五月婷婷六月丁香激情| 激情欧美一区二区三区黑长吊| 亚州欧美日韩中文视频| 99久久精品一区二区三区| 中文字幕在线免费不卡| 熟女少妇一区二区三区| 亚洲裸色大胆大尺寸艺术写真| 91在线色戒在线| а√最新版在线天堂| 色94色欧美sute亚洲线路一ni | 性高湖久久久久久久久| 国产一级大片免费看| 在线网址91| xxav国产精品美女主播| 最新国产热播激情视频| 一区免费观看视频| 一区二区三区在线观看免费视频| 欧美a级成人淫片免费看| 欧美精品七区| 五月婷婷在线观看| 国产午夜精品免费一区二区三区| 凸凹人妻人人澡人人添| 久久久精品国产免大香伊| 漂亮人妻被黑人久久精品| 免费看日本一区二区| 裸模一区二区三区免费| 国产51人人成人人人人爽色哟哟 | 精品国产伦一区二区三区观看体验| 中文字幕制服诱惑| 国产乱码字幕精品高清av| 小明看看成人免费视频| 日韩在线观看一区二区三区| av资源站久久亚洲| 青青青草原在线| 亚洲欧美国产精品专区久久| 色中文字幕在线| 国产精品久久三区| 在线日韩国产网站| 亚洲影院免费| 国产xxxxx视频| 日本在线成人| 国产精品日韩一区二区| 日本视频在线播放| 欧美老女人xx| 春意影院普通入口| 欧美精品日韩一本| 性猛交富婆╳xxx乱大交天津| 国产性天天综合网| 久艹在线观看视频| 三级一区在线视频先锋| 天堂av在线8| 视频一区中文| 中文字幕久久一区| 高清成人av| 欧美日韩午夜在线| 亚洲成人一二三区| 国产精品乱子久久久久| 日韩在线中文字幕视频| 日韩中文字幕区一区有砖一区| 中文字幕av不卡在线| 香蕉视频一区二区三区| 精品免费在线观看| 水蜜桃久久夜色精品一区的特点| 国产成人精品免费看| 欧美老肥妇做.爰bbww| 国产一级特黄a大片99| 在线视频你懂得一区二区三区| 做爰视频毛片视频| 国产精品久久久久久久久久久免费看| 国产第100页| 99视频在线精品| 国产一级二级毛片| 99久久99精品久久久久久| 毛片a片免费观看| 99久久99久久精品免费观看| 欧美日韩中文字幕在线观看| 国产精品一区三区| 最新一区二区三区| 成人性生交大片免费看中文网站| 日日骚一区二区三区| av电影在线观看一区| 国产乱码久久久久久| 国产亚洲欧美日韩日本| 好吊色在线视频| 亚洲视频一二三| 97国产成人无码精品久久久| 一区二区久久久久久| 黄色美女一级片| 色一区在线观看| 亚洲欧美日韩色图| 欧美一区二区三区在线电影| 尤物视频免费| 亚洲午夜av久久乱码| 免费免费啪视频在线观看| 欧美激情按摩在线| 天堂资源在线中文| 成人激情黄色网| 蜜桃av.网站在线观看| 欧美一级日本a级v片| www999久久| 拔插拔插海外华人免费| 色小子综合网| 国产又粗又猛大又黄又爽| 久久久久国产精品午夜一区| 手机毛片在线观看| 99免费精品视频| 高潮无码精品色欲av午夜福利| 亚洲国产一区二区三区青草影视 | 亚洲av无码一区二区三区性色| 欧美性xxxx在线播放| 一色屋成人免费精品网站| 日韩欧美另类在线| www.麻豆av.com| 久久久久国产视频| 黄色在线视频网站| 国产一区二区三区奇米久涩| 国产精区一区二区| 9久久9毛片又大又硬又粗| 欧美在线免费| 国产三级视频网站| 成人精品国产福利| 无码人妻精品一区二区三区不卡 | 中文亚洲av片在线观看| 五月天久久比比资源色| 欧美人善zozσ性伦交| 亚洲精品一区二区三区不| 超碰在线免费| 国产日韩欧美电影在线观看| 高清不卡av| 久久观看最新视频| 亚洲精品二区三区| 久久久久久国产精品无码| 99视频超级精品| 国产精品主播一区二区| 欧美日韩一区二区电影| 黄色网址多少| 欧美激情视频播放| 日本一本在线免费福利| 伊人天天久久大香线蕉av色| 91涩漫在线观看| 免费久久99精品国产自| 日日狠狠久久偷偷综合色| 91精产国品一二三产区别沈先生| 免费观看日韩av| 中文字幕一区二区三区精品| 亚洲第一主播视频| 2021最新国产精品一区| 美日韩丰满少妇在线观看| а√天堂在线官网| 亚洲一区二区三区乱码| 97精品国产| 亚洲一区二区自偷自拍| 中文无字幕一区二区三区| 亚洲免费视频在线| 亚洲跨种族黑人xxx| 成人网视频在线观看| 久久精品人成| 国产伦精品一区二区三区视频 | 国产一二三四五区| 国产亚洲午夜高清国产拍精品 | 欧美成人精品三级在线观看| 99在线视频观看| 成年人免费观看的视频| 女生裸体视频一区二区三区| 国产一区二区三区视频播放| 亚洲日本在线观看| 8x8x国产| 2023亚洲男人天堂| 91国内外精品自在线播放| 热99这里只有精品| 日韩av在线免费观看不卡| 国产午夜麻豆影院在线观看| 欧美私模裸体表演在线观看| 国产主播在线资源| 亚洲最大成人免费视频| 美女毛片一区二区三区四区| 欧美另类z0zx974| 亚洲激情第一区| 美女激情视频网站| 国产精品高潮呻吟视频| 日韩三级不卡| 国产日韩视频一区| 欧美高清在线一区二区| 欧美xxxx性猛交bbbb| 欧美国产乱视频| 日韩欧美2区| 91插插插影院| 久久综合久久综合九色| 综合蜜桃精品| 欧美激情精品久久久久| av在线播放一区| 天天做天天干天天操| 久久综合九色综合欧美98| 欧美最猛黑人xxxx| 国内久久久精品| 欧美国产亚洲精品| 国产综合内射日韩久| 中文字幕中文字幕在线一区 | 婷婷色一区二区三区| 一区二区三区欧美久久| www.夜夜| 亚洲精品欧美极品| 成人在线免费观看91| 青娱乐av在线| 欧美二区三区91| 国产爆初菊在线观看免费视频网站 | 亚洲一区电影777|