java記憶測試系統(tǒng)課程設(shè)計(jì)_第1頁
java記憶測試系統(tǒng)課程設(shè)計(jì)_第2頁
java記憶測試系統(tǒng)課程設(shè)計(jì)_第3頁
java記憶測試系統(tǒng)課程設(shè)計(jì)_第4頁
java記憶測試系統(tǒng)課程設(shè)計(jì)_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、 ?程序語言綜合課程設(shè)計(jì)?設(shè)計(jì)報(bào)告 學(xué)院:專業(yè)班級(jí):學(xué)號(hào):姓名:指導(dǎo)老師:完成時(shí)間: 目 錄記憶測試系統(tǒng)11題目簡介12設(shè)計(jì)的內(nèi)容、要求和目標(biāo)23總體設(shè)計(jì)34詳細(xì)設(shè)計(jì)及實(shí)現(xiàn)54.1操作界面設(shè)計(jì)54.2類成員變量及方法設(shè)計(jì)64.3* 數(shù)據(jù)庫設(shè)計(jì)74.4源代碼分析85系統(tǒng)部署及使用說明14記憶測試系統(tǒng)1 題目簡介記憶測試系統(tǒng)通過回憶法測試記憶能力,測試手段分為初級(jí),中級(jí),高級(jí),三個(gè)級(jí)別2 設(shè)計(jì)的內(nèi)容、要求和目標(biāo)我設(shè)計(jì)的記憶測試系統(tǒng),除了要編寫的6個(gè)java文件所給的類外,還需在添加一些功能,如添加圖標(biāo),改良測試條件,添加音樂功能,使程序有翻開相同的圖標(biāo)是播放一段音樂,不同時(shí)播放另一段音樂等。列出菜

2、單,有選擇級(jí)別,選擇圖標(biāo),成績記憶榜;在菜單下有M*N個(gè)圖標(biāo)隨機(jī)分布,當(dāng)點(diǎn)擊一個(gè)圖標(biāo),被保存下來,點(diǎn)擊下一個(gè)圖標(biāo)時(shí)與上一個(gè)圖標(biāo)比擬,圖標(biāo)相同而方塊不同那么success加1,反之那么不變,當(dāng)點(diǎn)擊六個(gè)相同的圖標(biāo)時(shí)記錄所需的時(shí)間,保存在成績記憶排行榜中;點(diǎn)擊成績排行榜,可登陸成績,且會(huì)給成績排行,由高到低。設(shè)計(jì)要求:(1) 單擊“選擇級(jí)別菜單可以選擇初級(jí),中級(jí),高級(jí)。(2) 單擊“查看排行榜菜單可以查看記憶榜,通過記憶榜存儲(chǔ)每個(gè)級(jí)別的成績(3) 選擇級(jí)別后,將出項(xiàng)相應(yīng)級(jí)別的測試區(qū)。測試區(qū)由M*N個(gè)方塊組成程序通過設(shè)置M和N的值來確定相應(yīng)的測試級(jí)別,例如,對于初級(jí)級(jí)別,M=5,N=6.每個(gè)方塊上都有

3、一個(gè)圖標(biāo),但該圖標(biāo)默認(rèn)不可見。用鼠標(biāo)當(dāng)即測試區(qū)中的任何一個(gè)方塊,那么計(jì)時(shí)器開始啟動(dòng),同時(shí)該方塊上的圖標(biāo)將顯示出來。(4) M*N個(gè)方塊組成的測試區(qū)中有M個(gè)圖標(biāo),每個(gè)圖標(biāo)重復(fù)出現(xiàn)N次,并且隨機(jī)分布在測試區(qū)中的M*N個(gè)方塊上。用戶必須用鼠標(biāo)連續(xù)單擊出N個(gè)圖標(biāo)相同的方塊,也就是說,如果用戶已經(jīng)用鼠標(biāo)連續(xù)單擊出P個(gè)圖標(biāo)相同的方塊,當(dāng)再單擊另一個(gè)方塊時(shí),如果該方塊的圖標(biāo)和上一個(gè)的相同,那么該方塊的圖標(biāo)和前P次單擊出的方塊的圖標(biāo)仍然可見;否那么前P次單擊出的方塊的圖標(biāo)全都變得不可見,只有當(dāng)前單擊的方塊的圖標(biāo)可見。(5) 測試區(qū)能顯示用戶的用時(shí),并根據(jù)級(jí)別的不同,提示用戶必須用鼠標(biāo)連續(xù)單擊出多少個(gè)圖標(biāo)相同的

4、方塊。(6) 測試區(qū)有提示圖標(biāo)所在位置的功能。用戶單擊測試區(qū)中的“提示按鈕后,測試區(qū)將持續(xù)1.2秒為用戶顯示全部方塊上的圖標(biāo)。用戶每單擊一次“提示按鈕,用戶的用時(shí)將增加10秒。(7) 連續(xù)單擊出級(jí)別所要求的假設(shè)干個(gè)圖標(biāo)相同的方塊后,將彈出保存成績的對話框,用戶可以通過該對話框選擇是否將自己的成績保存到成績表中。(8) 單擊“選擇圖標(biāo)菜單可重新選擇方塊的圖標(biāo)樣式,即可以重新選擇M個(gè)圖標(biāo)。設(shè)計(jì)目標(biāo):可以選擇級(jí)別,圖標(biāo),當(dāng)用戶游戲結(jié)束后可以選擇是否保存成績,連續(xù)點(diǎn)擊六個(gè)相同的圖標(biāo)可見,連續(xù)相同的圖標(biāo)播放一段音樂,不同播放另一段音樂。當(dāng)用戶不清楚相同圖標(biāo)的位置時(shí)可以按“提示按鈕,將會(huì)對用戶進(jìn)行提示信息

5、。3 總體設(shè)計(jì)在測試系統(tǒng)中,可以編寫6個(gè)java源文件:MenoryGame.java ,MenoryTestArea.java,Block.java,People.java,Record.java和ShowRecordDialog.java。記憶測試系統(tǒng)除了上述7個(gè)Java源文件產(chǎn)生的類外,還需要Java系統(tǒng)提供的一些重要的類。記憶測試系統(tǒng)所用到的一些重要的類以及之間的組合關(guān)系如圖1.1所示。MemoryGameStringgFileMemoryTestAreaShowRecordDialogFileTreeSet<People>StringRecordThreadArrayLi

6、st<Block>TimerFile 圖1.1 類之間的組合關(guān)系MenoryGame類負(fù)責(zé)創(chuàng)立記憶測試系統(tǒng)的主窗口,該類含有main方法,記憶測試系統(tǒng)從該類開始執(zhí)行。MenoryGame類有四種重要類型的對象,分別是String,F(xiàn)lie,MenoryTestArea和ShowRecordDialog對象。MenoryGame類創(chuàng)立的窗口對象以及其中的主要成員對象。MenoryGame類的主要成員的作用將在后面的詳細(xì)設(shè)計(jì)中闡述。MenoryTestArea類是主類MenoryGame窗口中的一個(gè)Jpanel容器,所創(chuàng)立的對象稱為測試區(qū),這個(gè)測試區(qū)被添加到MenoryGame窗口的中

7、心。MenoryTestArea類主要有六個(gè)種類型的成員:ArrayList<Block>,String ,Record,Timer,File和Thread對象。MenoryTestArea類的主要成員的作用將在后面的詳細(xì)的設(shè)計(jì)中闡述。Block類是Jbutton的子類,負(fù)責(zé)為MenoryTestArea類中的ArrayList<Block>數(shù)組表提供Block對象。Redialog對話框的子類,當(dāng)用戶成功單擊出相應(yīng)的級(jí)別所要求的圖標(biāo)相同的方塊后,Record創(chuàng)立的對象負(fù)責(zé)保存用戶的名字和成績到相應(yīng)的級(jí)別文件中。dialog對話框的子類,當(dāng)用戶單擊“查看排行榜時(shí),Sho

8、wRecordDialog創(chuàng)立負(fù)責(zé)顯示用戶的成績。People對象封裝用戶的名字和成績,以便ShowRecordDialog對象可以按成績的上下排序用戶。4詳細(xì)設(shè)計(jì)及實(shí)現(xiàn)4.1操作界面設(shè)計(jì)點(diǎn)擊運(yùn)行,選擇級(jí)別,圖標(biāo)游戲開始,如果用戶不清楚相同圖標(biāo)的位置時(shí),點(diǎn)擊提示。界面方案:窗口大小 :setBounds(100,100,400,360);setVisible(true);字體的大小和顏色hinMessage.setFont(new Font(“宋體,Font.BOLD,18);布局控制:又上到下,先是菜單:選擇級(jí)別, 查看排行榜,選擇圖標(biāo);提示信息:hintMessage.setText(“您

9、需要用鼠標(biāo)單擊出+col+“個(gè)同樣圖標(biāo)的方塊);圖標(biāo)隨機(jī)排布,有M*N個(gè)方塊隨機(jī)分布,在下面是一記錄用戶時(shí)間的還有提示按鈕,提示用戶相同圖標(biāo)的位置。 4.2類成員變量及方法設(shè)計(jì)一MemoryGame類1:成員變量l Bar是JmenuBar類創(chuàng)立的菜單條,可以向bar中添加菜單。l menuGradeBar和menuIcon是Jmenu類創(chuàng)立的三個(gè)菜單,這三個(gè)菜單的名稱分別是“選擇級(jí)別,“查看排行榜,“選擇圖標(biāo)。l oneGradeItem,twoGradeItem和threeGradeItem是JmenuItem類創(chuàng)立的三個(gè)菜單項(xiàng),被添加到menuGrade菜單中,這三個(gè)菜單項(xiàng)的名稱分別是“

10、初級(jí),“中級(jí),“高級(jí)。l oneGradeResult,twoGradeResult和threeGradeResult是JmenuItem類創(chuàng)立的三個(gè)菜單項(xiàng),被添加到menuResult菜單中。這三個(gè)菜單項(xiàng)的名稱分別是“初級(jí)排行榜,“中級(jí)排行榜,“高級(jí)排行榜。l carImageIcon和animalImageIcon是JmenuItem類創(chuàng)立的兩個(gè)菜單項(xiàng),被添加到menuIcon菜單中。這兩個(gè)菜單項(xiàng)的名稱分別是“汽車圖標(biāo),“動(dòng)物圖標(biāo)l fileOneGrade,fileTwoGrade,filethreeGrade和gradeFile是File類創(chuàng)立的四個(gè)文件對象。fileOneGrade,

11、fileTwoGrade和filethreeGrade三個(gè)文件對象所引用的文件分別是“,“,“,分別用來寫入三個(gè)級(jí)別的成績。gradeFlie可以是fileOneGrade,fileTwoGrade和filethreeGrade中的某一個(gè)。l imageName是String類型的數(shù)組,每個(gè)單元是一個(gè)圖像文件的名字。l menoryArea是測試區(qū)對象,由MenoryArea類負(fù)責(zé)創(chuàng)立。l showDialog是負(fù)責(zé)顯示成績的對話框,由ShowRecordDialog類負(fù)責(zé)創(chuàng)立l m和n是int型數(shù)據(jù),其值可以確定相應(yīng)級(jí)別中測試區(qū)中方塊的數(shù)量,例如,對于中級(jí)水平,m=6,n=7,測試區(qū)一共有4

12、2方塊。2:方法l actionPerformedActionEvent方法是MenoryGame類實(shí)現(xiàn)的ActionListener接口中的方法,負(fù)責(zé)執(zhí)行菜單項(xiàng)發(fā)出的有關(guān)命令,。用戶選擇菜單中的菜單項(xiàng)可觸發(fā)ActionEvent事件,導(dǎo)致actionPerformedActionEvent方法執(zhí)行相應(yīng)的操作。l MenoryGame是構(gòu)造方法,負(fù)責(zé)完成窗口的初始化。l main(String)方法是軟件運(yùn)行的入口方法。二MemoryTestArea類1成員變量l row和col的值確定測試區(qū)中方塊的數(shù)量。MemoryTestArea類創(chuàng)立的對象memoryArea是MemoryGame中的成

13、員,memoryArea對象通過調(diào)用initBlockint,int,String【】,F(xiàn)ile方法將MemoryGame類中m和n的值傳遞給row和col。l usedTime是用戶的用時(shí)單位是秒。l success的值是用戶找到的具有同樣的圖標(biāo)的方塊的個(gè)數(shù)l gradeFiel是級(jí)別文件,memoryArea對象通過調(diào)用initBlockint,int,String【】,F(xiàn)ile方法將MemoryGame類中的gradeFile的引用傳遞給MemoryGame類中的gradeFile的引用傳遞給memoryArea對象中的gradeFilel 數(shù)組表allBlockList單元的個(gè)數(shù)是ro

14、w和col的乘積,它的每個(gè)單元存放著一個(gè)Block對象。memoryArea對象在調(diào)用initBlockint,int,String【】,F(xiàn)ile方法時(shí)完成對allBlockList單元的初始化,即創(chuàng)立單元中的Block對象。l 字符串?dāng)?shù)組imageFileName中的每個(gè)單元是一幅圖像文件的名字。memoryArea對象通過調(diào)用setIMageNameString【】方法將MemoryGame中存放圖像文件名字的imageName數(shù)組的引用傳遞給imageFileName。l 鏈表openIconList用來存放用戶找到圖標(biāo)相同的方塊上的圖標(biāo)l 鏈表openBlockList用來存放用戶找到

15、圖標(biāo)相同的方塊。l hintThread是用Thread類創(chuàng)立的線程對象,用來提示測試區(qū)中的Block上的圖標(biāo),提示方式是將測試區(qū)中的各個(gè)Block上圖標(biāo)持續(xù)顯示1200毫秒。l hintButton是注冊了ActionEvent事件的監(jiān)視器,當(dāng)單擊它時(shí),啟動(dòng)hintThread線程。l showUsedTime顯示用戶的用時(shí),即顯示usedTime的值。l hintMessage根據(jù)不同的級(jí)別顯示相應(yīng)的提示信息,如該級(jí)別需要用戶尋找的相同圖標(biāo)方塊的數(shù)目。l timer是計(jì)時(shí)器,負(fù)責(zé)改變usedTime的值。l record負(fù)責(zé)提供保存成績的界面,是一個(gè)對話框,默認(rèn)不可見。當(dāng)用戶尋找出級(jí)別所要

16、求的相同圖標(biāo)方塊的數(shù)目后,該對話框可見,用戶可以在該對話框中輸入姓名,并保存所輸入的姓名和usedTime的值到gradeFile指定的級(jí)別文件中。2方法l MemoryTestArea是構(gòu)造方法,創(chuàng)立memoryArea對象時(shí)需使用該構(gòu)造方法。l initBlockint,int,String【】,F(xiàn)ile方法。memoryArea對象調(diào)用該方法將參數(shù)的值傳遞給row,col,imageFileName和gradeFile,并依據(jù)這些值設(shè)置allBlockListList數(shù)組表的大小,然后創(chuàng)立allBlockList的單元中的Block對象,并設(shè)置Block對象上的圖標(biāo)。l setImage

17、NameString方法。memoryArea對象調(diào)用該方法可以將MemoryGame中的存放圖像文件名字的imageName數(shù)組的引用傳遞給imageFileName。當(dāng)用戶單擊MemoryGame主類窗口的carImageIcon和animalImageIcon菜單項(xiàng)時(shí),memoryArea對象將調(diào)用該方法把存放圖像文件名字的imageName數(shù)組的引用傳遞給imageFileName。l actionPerformedActionEvent方法。該方法是MemoryARea類實(shí)現(xiàn)的ActionListener接口中的方法。memoryArea中的每個(gè)Block對象都注冊了ActionEv

18、ent事件監(jiān)聽器,當(dāng)用戶單擊memoryArea中的某個(gè)Block對象時(shí),actionPerformedActionEVent方法將被調(diào)用執(zhí)行,所執(zhí)行的主要操作是:如果該Block對象未顯示圖標(biāo),并且該Block對象設(shè)置的圖標(biāo)和openIconList的中存放的圖標(biāo)相同,就將該圖標(biāo)添加到鏈表opemIconList中,同時(shí)將該Block對象上的圖標(biāo)顯示出來,并將success的值增1;如果該Block對象未顯示圖標(biāo),并且該Block對象設(shè)置的圖標(biāo)和openIconList的中存放的圖標(biāo)不相同,就將openIconList清空,然后再將該圖標(biāo)添加到鏈表opemIconList中,同時(shí)將該Bloc

19、k對象上的圖標(biāo)顯示出來,并將success的值設(shè)置成1.當(dāng)用戶單擊hintButton按鈕時(shí),actionPerfomedActionEVent方法將被調(diào)用執(zhí)行,執(zhí)行的主要操作是啟動(dòng)hintThread線程。l run方法。該方法是MemoryARea類實(shí)現(xiàn)的Runnable接口中的方法,啟動(dòng)hintThread線程后,該方法將執(zhí)行,其主要操作是將測試區(qū)中的未顯示圖標(biāo)的各個(gè)Block對象上的圖標(biāo)持續(xù)顯示1200毫秒。三Blcok類 1成員變量 openStateIcon是方塊上的圖標(biāo) 2方法 l Block對象調(diào)用setOpenStateIconImageIcon方法可以設(shè)置它上面的圖標(biāo)。l

20、Block對象調(diào)用getOpenStateIcon方法可以獲得它上面的圖標(biāo)四ShowRecordDialog類 1成員變量l gradeFile是對話框要讀取的文件,該文件存儲(chǔ)成績l clear是注冊了ActionEVent事件的按鈕。l showArea文本區(qū)顯示對話框從gradeFile文件中讀出的成績l treeSet負(fù)責(zé)將成績按上下排序 2方法l ShowRecordDialog是構(gòu)造方法,負(fù)責(zé)創(chuàng)立showDialog對象l setGradeFileFile方法。ShowRecordDialog類創(chuàng)立的ShowRecordDialog對話框是主類MemoryGame窗口中的一個(gè)成員。當(dāng)

21、用戶選擇窗口上的“查看排行榜菜單中的菜單項(xiàng)是,ShowRecordDialog對話框調(diào)用setGradeFileFile方法將相應(yīng)的級(jí)別文件傳遞給gradeFile。l showRecord方法。ShowRecordDialog對話框調(diào)用該方法讀取gradeFile文件中的成績,為了將成績按上下順序顯示在showArea文本區(qū)中,showRecord方法根據(jù)讀取的名字和該名字的對應(yīng)成績,創(chuàng)立一個(gè)People對象存放在treeSet數(shù)集中。l actionPerformedActionEVent是ZctionListener接口中的方法,clear注冊了ActionEVent事件,當(dāng)用戶單擊cl

22、ear按鈕時(shí),actionPerform(ActionEvent)方法被調(diào)用執(zhí)行,所執(zhí)行的操作是去除gradeFile文件中的內(nèi)容。五People類1成員變量l name是用戶的名字l time是用戶的用時(shí)2方法l getTime方法返回timel getName方法返回namel compareToObject是Comparable接口中的方法,其操作是確定People對象的大小關(guān)系。(六)Record類1成員變量l Time是用戶的用時(shí)。l yourName是用戶用來輸入名字的文本框。l enter和cancel是按鈕對象,用戶單擊center按鈕可以保存成績,單擊cancel按鈕可以放棄

23、保存成績。l gradeFile是級(jí)別文件。2方法l Record是構(gòu)造方法,負(fù)責(zé)創(chuàng)立record對象。l setGradeFile(File)方法。Record類創(chuàng)立的Record對話框測試區(qū)MemoryTestArea中的一個(gè)成員。當(dāng)用戶成功單擊出相應(yīng)級(jí)別所要求的圖標(biāo)相同的方塊后,測試區(qū)彈出Record對話框,Record對話框?qū)⒄{(diào)用setGradeFile(File)方法將測試區(qū)中的級(jí)別文件傳遞給Record對話框中的gradeFile。l setTime(int)方法。當(dāng)用戶成功單擊出相應(yīng)級(jí)別所要求的圖標(biāo)相同的方塊后,測試區(qū)彈出Record對話框,Record對話框?qū)⒄{(diào)用setTime

24、(int)方法將測試區(qū)記錄的用戶用時(shí)傳遞個(gè)Record對話框中的time。l actionPerformed(ActionEvent)是ActionListener接口中的方法,enter和cancel按鈕注冊了ActionEvent事件,當(dāng)用戶單擊enter時(shí),actionPerformed(ActionEvent)方法別提調(diào)用執(zhí)行,其操作時(shí)將用戶在文本框youName中輸入的名字以及time的只保存到gradeFile文件中,然后關(guān)閉當(dāng)前對話框;當(dāng)用戶單擊cancer按鈕時(shí),actionPerformed(ActionEvent)方法別調(diào)用執(zhí)行,其操作及時(shí)關(guān)閉當(dāng)前對話框。4.3源代碼分析M

25、emoryGameimport javax.swing.*;import java.awt.*;import java.awt.event.*;import java.io.*;import .MalformedURLException;import java.util.LinkedList;public class MemoryGame extends JFrame implements ActionListener JMenuBar bar;/創(chuàng)立菜單條 JMenu menuGrade,menuResult,menuIcon; JMenuItem oneGradeItem,twoGrade

26、Item,threeGradeItem; JMenuItem oneGradeResult,twoGradeResult,threeGradeResult; JMenuItem carImageIcon,animalImageIcon,lmImageIcon; File fileOneGrade,fileTwoGrade,fileThreeGrade,gradeFile; String imageName; MemoryTestArea memoryArea;/定義MemoryTestArea 對象 ShowRecordDialog showDiolag=null;/顯示成績對話框 int m

27、=5,n=6; final int imageNumber=7; /圖片的個(gè)數(shù) MemoryGame() throws MalformedURLException fileOneGrade=new File("初級(jí)記憶排行榜.txt"); fileTwoGrade=new File("中級(jí)記憶排行榜.txt"); fileThreeGrade=new File("高級(jí)記憶排行榜.txt"); bar=new JMenuBar(); menuGrade=new JMenu("選擇級(jí)別"); oneGradeItem=

28、new JMenuItem("初級(jí)"); twoGradeItem=new JMenuItem("中級(jí)"); threeGradeItem=new JMenuItem("高級(jí)"); menuGrade.add(oneGradeItem); menuGrade.add(twoGradeItem); menuGrade.add(threeGradeItem); menuResult=new JMenu("查看排行榜"); oneGradeResult=new JMenuItem("初級(jí)排行榜");

29、twoGradeResult=new JMenuItem("中級(jí)排行榜"); threeGradeResult=new JMenuItem("高級(jí)排行榜"); menuResult.add(oneGradeResult); menuResult.add(twoGradeResult); menuResult.add(threeGradeResult); menuIcon=new JMenu("選擇圖標(biāo)"); carImageIcon=new JMenuItem("汽車圖標(biāo)"); animalImageIcon=ne

30、w JMenuItem("動(dòng)物圖標(biāo)"); lmImageIcon=new JMenuItem("龍馬的圖標(biāo)"); animalImageIcon.addActionListener(this);/添加事件監(jiān)聽器 carImageIcon.addActionListener(this); lmImageIcon.addActionListener(this); menuIcon.add(carImageIcon); menuIcon.add(animalImageIcon); menuIcon.add(lmImageIcon); bar.add(menuG

31、rade); bar.add(menuResult); bar.add(menuIcon); setJMenuBar(bar);/設(shè)置菜單 oneGradeItem.addActionListener(this); twoGradeItem.addActionListener(this); threeGradeItem.addActionListener(this); oneGradeResult.addActionListener(this); twoGradeResult.addActionListener(this); threeGradeResult.addActionListener

32、(this); if(!fileOneGrade.exists() try fileOneGrade.createNewFile(); catch(IOException exp) if(!fileTwoGrade.exists() try fileTwoGrade.createNewFile(); catch(IOException exp) if(!fileThreeGrade.exists() try fileThreeGrade.createNewFile(); catch(IOException exp) setBounds(100,100,400,360); setVisible(

33、true); memoryArea=new MemoryTestArea(); imageName=new StringimageNumber; for(int i=0;i<imageName.length;i+) imageNamei=new String("car"+i+".jpg"); m=5; n=6; gradeFile=fileOneGrade; memoryArea.initBlock(m,n,imageName,gradeFile); add(memoryArea,BorderLayout.CENTER); showDiolag=n

34、ew ShowRecordDialog(); validate(); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); public void actionPerformed(ActionEvent event)/實(shí)現(xiàn)ActionListener接口的方法,負(fù)責(zé)執(zhí)行菜單項(xiàng)發(fā)出的有關(guān)命令 if(event.getSource()=oneGradeItem) m=5; n=6; gradeFile=fileOneGrade; memoryArea.initBlock(m,n,imageName,gradeFile); if(event.getSourc

35、e()=twoGradeItem) m=6; n=7; gradeFile=fileTwoGrade; memoryArea.initBlock(m,n,imageName,gradeFile); if(event.getSource()=threeGradeItem) m=7; n=8; gradeFile=fileThreeGrade; memoryArea.initBlock(m,n,imageName,gradeFile); if(event.getSource()=carImageIcon) for(int i=0;i<imageName.length;i+) imageNam

36、ei=new String("car"+i+".jpg"); memoryArea.setImageName(imageName); memoryArea.initBlock(m,n,imageName,gradeFile); if(event.getSource()=animalImageIcon) for(int i=0;i<imageName.length;i+) imageNamei=new String("ani"+i+".jpg"); memoryArea.setImageName(imageNa

37、me); memoryArea.initBlock(m,n,imageName,gradeFile); if(event.getSource()=lmImageIcon) for(int i=0;i<imageName.length;i+) imageNamei=new String("lm"+i+".jpg"); memoryArea.setImageName(imageName); memoryArea.initBlock(m,n,imageName,gradeFile); if(event.getSource()=oneGradeResult

38、) showDiolag.setGradeFile(fileOneGrade); showDiolag.showRecord(); showDiolag.setVisible(true); if(event.getSource()=twoGradeResult) showDiolag.setGradeFile(fileTwoGrade); showDiolag.showRecord(); showDiolag.setVisible(true); if(event.getSource()=threeGradeResult) showDiolag.setGradeFile(fileThreeGra

39、de); showDiolag.showRecord(); showDiolag.setVisible(true); public static void main(String args) throws MalformedURLException/軟件運(yùn)行的入口方法 new MemoryGame();/構(gòu)造方法,負(fù)責(zé)完成窗口的初始化 MemoryTestAreapackage com.yangrang;import javax.swing.*; import java.applet.Applet;import java.applet.AudioClip;import java.awt.eve

40、nt.*;import java.awt.*;import java.util.*;import java.io.*;import .*;public class MemoryTestArea extends JPanel implements ActionListener,Runnable /實(shí)現(xiàn)ActionListener和,Runnable接口,所創(chuàng)立的對象 int row,col; File gradeFile; ArrayList<Block> allBlockList; String imageFileName; LinkedList<ImageIcon>

41、openIconList; LinkedList<Block> openBlockList;/java.util 的 類 LinkedList<E> 鏈接列表 主要方法為 /add(E e) 將指定元素添加到此列表的結(jié)尾。 int success=0; Thread hintThead;/用來提示測試區(qū)中的Block對象 JButton hintButton; int usedTime=0; JTextField showUsedTime,hintMessage; javax.swing.Timer timer; Record record; JPanel center

42、,south; MemoryTestArea() throws MalformedURLException setLayout(new BorderLayout(); allBlockList=new ArrayList<Block>(); openIconList=new LinkedList<ImageIcon>(); openBlockList=new LinkedList<Block>(); hintThead=new Thread(this); hintMessage=new JTextField(); hintMessage.setHorizon

43、talAlignment(JTextField.CENTER); hintMessage.setEditable(false); hintMessage.setFont(new Font("宋體",Font.BOLD,18); center=new JPanel(); south=new JPanel(); hintButton=new JButton("提示"); hintButton.addActionListener(this); showUsedTime=new JTextField(8); showUsedTime.setEditable(fa

44、lse); showUsedTime.setHorizontalAlignment(JTextField.CENTER); south.add(new JLabel("用時(shí):") ; south.add(showUsedTime); south.add(new JLabel("提示圖標(biāo)位置(導(dǎo)致用時(shí)增加):") ; south.add(hintButton); add(south,BorderLayout.SOUTH); add(hintMessage,BorderLayout.NORTH); timer=new javax.swing.Timer(10

45、00,this); record=new Record(); /創(chuàng)立record文件,當(dāng)用戶成功完成時(shí)彈出對話框,寫入record /* * 保存用戶 游戲的游戲記錄 */ /添加游戲的運(yùn)行音樂 File musicFile=new File("run.wav"); URI uri=musicFile.toURI(); URL url=uri.toURL(); AudioClip clip=Applet.newAudioClip(url); clip.play(); /添加游戲 運(yùn)行 音樂/ public void initBlock(int m,int n,String

46、name,File f) row=m; col=n; gradeFile=f; center.removeAll(); imageFileName=name; ImageIcon icon=new ImageIconimageFileName.length; for(int i=0;i<icon.length;i+) iconi=new ImageIcon(imageFileNamei); if(allBlockList.isEmpty() for(int i=0;i<row*col;i+) allBlockList.add(new Block(); else allBlockLi

47、st.clear(); for(int i=0;i<row*col;i+) allBlockList.add(new Block(); for(int i=0;i<allBlockList.size();i+) allBlockList.get(i).addActionListener(this);/get()方法:get(int index)返回此列表中指定位置處的元素。 allBlockList.get(i).setOpenStateIcon(iconi%row); /*調(diào)用 Block 的方法 加載圖片: void setOpenStateIcon(ImageIcon ico

48、n) openStateIcon=icon; */ Collections.shuffle(allBlockList); /隨機(jī)排列allBlockList中的節(jié)點(diǎn) center.setLayout(new GridLayout(row,col); for(int i=0;i<allBlockList.size();i+) center.add(allBlockList.get(i); add(center,BorderLayout.CENTER); if(timer.isRunning() timer.stop(); hintMessage.setText("您需要用鼠標(biāo)單擊出"+col+"個(gè)同樣圖標(biāo)的方塊"); usedTime=0; showUsedTime.setText(null); validate(); public void setImageName(String name) imageFileName=name; public void actionPerforme

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論