




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、布在晚,彳愧NANJING X1AOZHUANG UNIVERSITY« JAVA程序設(shè)計(jì)課程設(shè)計(jì)報(bào)告題目:記憶游戲姓名:學(xué)號(hào):班級(jí):指導(dǎo)教師:完成時(shí)間 成 績:信息工程學(xué)院2015年 6月1 概 述 11.1 課程設(shè)計(jì)目的 11.2 課程設(shè)計(jì)容 12 需求分析 22.1 設(shè)計(jì)目標(biāo) 22.2 主體功能 22.3 開發(fā)環(huán)境 33 概要設(shè)計(jì) 33.1 系統(tǒng)的功能模塊劃分 33.2 系統(tǒng)流程圖 44 詳細(xì)設(shè)計(jì) 55 測試 75.1 測試方案 85.2 測試結(jié)果 86 小結(jié) 11參考文獻(xiàn)12附 錄 13附錄 1 源程序清單13記憶測試系統(tǒng)1 概 述1.1 課程設(shè)計(jì)目的1) 鞏固和提高java
2、 編程技術(shù)。2) 培養(yǎng)掌握成學(xué)設(shè)計(jì)的基本思路和方法。3) 加強(qiáng)研發(fā)、調(diào)試程序的能力。4) 增強(qiáng)分析、解決問題的能力。5) 提高科技論文寫作能力。1.2 課程設(shè)計(jì)容記憶測試系統(tǒng)是通過回憶法測試記憶能力,測試手段分為初級(jí),中級(jí)和高級(jí)三個(gè)級(jí)別。記憶測試系統(tǒng)設(shè)計(jì)要求如下:( 1 )單擊“記憶測試”菜單可以選擇初級(jí)、中級(jí)或高級(jí)三個(gè)級(jí)別。( 2 )單擊“記憶測試”菜單還可以查看初級(jí)記憶榜、中級(jí)記憶榜或高級(jí)記憶榜,通過記憶榜存儲(chǔ)每個(gè)級(jí)別的成績。( 3 )選擇級(jí)別后,將出現(xiàn)相應(yīng)級(jí)別的測試區(qū)。測試區(qū)由m*n 個(gè)方塊組成,程序通過設(shè)置m 和 n 的值來確定相應(yīng)的測試級(jí)別,例如,對于初級(jí)級(jí)別,m=3 , n=3 。
3、每個(gè)方塊上都有一個(gè)圖標(biāo),但該圖標(biāo)默認(rèn)不可見。用鼠標(biāo)單擊測試區(qū)中的任何一個(gè)方塊,則計(jì)時(shí)器開始啟動(dòng)動(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 各方塊上。用戶必須用鼠標(biāo)連續(xù)單擊出n 個(gè)圖表相同的方塊,也就是說,如果用戶已經(jīng)用鼠標(biāo)連續(xù)單擊出p ( p<n )個(gè)圖標(biāo)相同的方塊,當(dāng)再單擊另一個(gè)方塊時(shí),如果該方塊的圖標(biāo)和上一個(gè)的相同,那么該方塊的圖標(biāo)和前p 次單擊出的方塊的圖標(biāo)仍然可見;否則前 p 次單擊出來的方塊的圖標(biāo)全都變得不可見,只有當(dāng)前單擊的方塊的圖標(biāo)可現(xiàn)。( 5 )測試區(qū)能顯示用戶的同時(shí),并
4、根據(jù)級(jí)別的不同,提示用戶必須用鼠標(biāo)連續(xù)單擊出多個(gè)圖標(biāo)相同的方塊。( 6 )測試區(qū)有提示圖標(biāo)所在位置的功能。用戶單擊測試區(qū)中的“提示”按鈕后,測試區(qū)將持續(xù) 1.2 秒為用戶顯示全部方塊上的圖標(biāo)。用戶每單擊一次“提示”按鈕,用戶用時(shí)將增加10 秒。( 7 )連續(xù)單擊出級(jí)別所要求的若干個(gè)相同的方塊后,將彈出保存成績對話框,用戶可以通過該對話框選擇是否將自己的成績保存到成績表中。2 需求分析2.1 設(shè)計(jì)目標(biāo)1. 單擊“記憶測試”菜單可以選擇初級(jí)、中級(jí)、高級(jí)三個(gè)級(jí)別,通過記憶榜可以查看初級(jí)記憶榜、中級(jí)記憶榜或高級(jí)記憶榜。2. 選擇級(jí)別后,將顯示相應(yīng)級(jí)別的測試區(qū)域。測試區(qū)域由若干個(gè)方塊組成,每個(gè)方塊上都有
5、一個(gè)圖標(biāo),但該圖標(biāo)默認(rèn)情況下不可見。用鼠標(biāo)單擊測試區(qū)中的任何一個(gè)方塊,則計(jì)時(shí)器開始啟動(dòng),同時(shí)該方塊上的圖標(biāo)將顯示出來。對于初級(jí)級(jí)別,用戶必須用鼠標(biāo)連續(xù)單擊3個(gè)圖標(biāo)相同的方塊,也就是說,如果用戶已經(jīng)用鼠標(biāo)連續(xù)單擊出n(n<3) 個(gè)圖標(biāo)相同的方塊,單擊另一個(gè)方塊時(shí),如果該方塊的圖標(biāo)和上一個(gè)相同,那么該方塊的圖標(biāo)和前n次單擊出的方塊的圖標(biāo)仍然可見,否則,前n 次單擊出的方塊的圖標(biāo)都變?yōu)椴豢梢姟?. 連續(xù)單擊出該級(jí)別所要求的若干個(gè)圖標(biāo)形同的方塊后,將顯示保存成績對話框,成績按所用時(shí)間排序。用戶可以通過該對話框選擇是否將自己的成績保存到成績表中。2.2 主體功能本游戲是通過由用戶點(diǎn)擊圖片顯示出圖片
6、后,如果是相同的,便保持圖形,如果用戶點(diǎn)開的是不同的圖片則先前點(diǎn)擊的圖片被清空。當(dāng)用戶同時(shí)點(diǎn)擊出規(guī)定數(shù)目的圖片后,彈出保存成績框。2.3 開發(fā)環(huán)境Win7 ; MyEclipse 8.5 軟件3 概要設(shè)計(jì)3.1 系統(tǒng)的功能模塊劃分記憶測試系統(tǒng)共包含8個(gè) java 源文件和若干個(gè)圖像文件(用戶可以增加)。類之間的主要關(guān)系如下圖所示。在測試系統(tǒng)中,可以編寫6 個(gè) Java 源文件: MemoryGame.java 、 MemoryTestArea.javaBlock.java 、 ShowRecordDialog.java 、 Record.java 、 People.java 。記憶測試系統(tǒng)除了
7、上述6 個(gè) Java 源文件產(chǎn)生的類外,還需要Java 系統(tǒng)提供的一些重要的 類。記憶測試系統(tǒng)所用到的一些重要的類以及之間的組合關(guān)系如圖3.1 所示。Memory(主類)圖3.1 類之間的關(guān)系3.2選擇級(jí)別相應(yīng)級(jí)別提示查看排行榜顯示相應(yīng)級(jí)別排行榜成績排序后保存到相應(yīng)文件中3.2 系統(tǒng)流程圖4詳細(xì)設(shè)計(jì)4.1 工作原理系統(tǒng)主體部分是在底層容器上插入面板,并在面板上安排按鈕陣列,當(dāng)用戶點(diǎn)擊按鈕,經(jīng)過隨機(jī)安排在按鈕后面的圖片顯示出來。通過對比圖片下標(biāo),如果所顯示圖片和前一個(gè)顯示圖片一樣,則沒變化;如果,不一樣,則把以前所有顯示的圖片重新用按鈕遮蓋。當(dāng)用戶點(diǎn)開指定數(shù)量的圖片時(shí),就進(jìn)入記錄數(shù)據(jù)部分。在測試
8、過程中,顯示用戶測試時(shí)間。記錄數(shù)據(jù)部分。是把用戶輸入的和系統(tǒng)記錄用戶測試時(shí)間寫入指定文檔中保存。查閱數(shù)據(jù)部分,是把指定文檔的數(shù)據(jù)顯示給用戶,包括和測試時(shí)間。用戶此時(shí)可以清除文檔中數(shù)據(jù),即可刪除排行榜。4.2 算法思路主窗口安排指定數(shù)量按鈕,是通過用戶所選級(jí)別傳參數(shù)計(jì)算后進(jìn)行安排。隨機(jī)分布圖片需要隨機(jī)函數(shù)隨機(jī)產(chǎn)生指定數(shù)量的圖片下標(biāo),并傳給主窗口的按對應(yīng)按鈕通過對比所顯示圖片的下標(biāo),統(tǒng)計(jì)顯示的相同圖片的數(shù)量。用戶測試開始后,記錄測試時(shí)間,并保存。4.3 主類 Memorya).成員變量主要成員變量(屬性):成員變量描述變量類型名稱菜單條JMenuBarBar菜單JMenuItemFileMenu菜
9、單項(xiàng)JMenuBar初級(jí),中級(jí),高級(jí),初級(jí) 排行榜,中級(jí)排行榜,高級(jí)排 行榜面板容器MemoryTestPane記憶測試板方塊數(shù)組Block口block顯示成績ShowRecord顯示成績表對話框圖標(biāo)數(shù)組ImageIcon口iconb).方法主要方法:名稱功能備注Memory創(chuàng)建窗口構(gòu)造方法給出級(jí)別測試選擇級(jí)別actionPerformed處理ActionEvent 事件接口方法Main主程序開始執(zhí)行4.4 類 Blocka).成員變量主要成員變量(屬性)成員變量描述變量類型名稱方塊翻開時(shí)的圖標(biāo)ImageIcon翻開時(shí)的圖標(biāo)方塊關(guān)閉時(shí)的圖標(biāo)ImageIcon關(guān)閉時(shí)的圖標(biāo)b).方法主要方法:名稱
10、功能備注Block創(chuàng)建方塊對象的構(gòu)造方法獲取翻開時(shí)的圖標(biāo)獲取方塊翻開時(shí)的圖標(biāo)獲取關(guān)閉時(shí)的圖標(biāo)獲取方塊關(guān)閉時(shí)的圖標(biāo)設(shè)置翻開時(shí)的圖標(biāo)設(shè)置翻開時(shí)的圖標(biāo)設(shè)置關(guān)閉時(shí)的圖標(biāo)設(shè)置關(guān)閉時(shí)的圖標(biāo)設(shè)置圖標(biāo)設(shè)置方塊上的圖標(biāo)actionPerformed處理ActionEvent 事件處理ActionEvent 事件4.5 類 MemoryTestPanea).成員變量主要成員變量(屬性):變量描述變量類型名稱隨機(jī)排列圖標(biāo)對象RandomSetIcon排列圖標(biāo)方塊數(shù)組Blockblock圖標(biāo)數(shù)組ImageIcon口icon添加方塊對象用的鏈表LinkedListlistIcon添加圖標(biāo)對象用的鏈表LinkedList
11、listIcon確定是否成功的對象intsuccess用來計(jì)時(shí)的對象Timer計(jì)時(shí)器記憶測試板的行數(shù)和列數(shù)int行數(shù),列數(shù)b).方法主要方法:名稱功能備注MemoryTestPane創(chuàng)建記憶測試板對象的構(gòu)造方法actionPerformed處理ActionEvent 事件接口方法4.6 類 ShowRecorda).成員變量主要成員變量(屬性):成員變量描述變量類型名稱存放成績的文件FilegradeFile按鈕對象JButton確定,清除顯示成績的區(qū)域JTextAreashowb).方法主要方法:名稱功能備注ShowRecord創(chuàng)建顯示成績窗口構(gòu)造方法actionPerformed處理Act
12、ionEvent 事件接口方法4.7 類 Recorda).成員變量主要成員變量(屬性)成員變量描述變量類型名稱用時(shí)inttime輸入測試者的名字JTextFieldyourname存放成績的文件FilegradeFile是否保存成績的按鈕JButton確定,取消b).方法主要方法:名稱功能備注Record創(chuàng)建保存成績窗口構(gòu)造方法actionPerformed處理ActionEvent 事件接口方法setTime設(shè)置時(shí)間setFile設(shè)置文件4.8 類 RandomSetIcona) .成員變量(無)b) .方法主要方法:名稱功能備注隨機(jī)設(shè)置圖標(biāo)隨機(jī)排列記憶測試板中方塊的圖標(biāo)4.9 類 Peo
13、plea)成員變量主要成員變量(屬性):描述變量類型名稱測試者名字Stringname用時(shí)inttimeb)方法主要方法:名稱功能備注People傳遞名字和時(shí)間構(gòu)造方法getTime返回使用者用時(shí)getName返回使用者名字5測試5.1 測試方案將7個(gè)java文件保存到一個(gè)文件夾中,例如, D:jiyiceshi 。將7個(gè)文件分別編譯成相應(yīng)的字節(jié)碼(.class)文件。然后,用 java解釋器運(yùn)行主類:C:jiyiceshijava Memory 程序運(yùn)行后選擇各菜單,分別進(jìn)行功能測試。5.2 測試結(jié)果(1)運(yùn)行效果圖5.2.1運(yùn)行效果(2)當(dāng)選擇“記憶力測試”后,自己可以設(shè)置游戲的難度,效果
14、如圖圖5.2.2初級(jí)效果圖圖5.2.3中級(jí)效果圖圖5.2.4高級(jí)效果圖圖5.2.5排行效果圖(3)當(dāng)游戲結(jié)束后,查看“初級(jí)排行榜”,將顯示初級(jí)的成績記錄效果圖5.2.5初級(jí)成績記錄6 小結(jié)Java 程序設(shè)計(jì)是本專業(yè)的一門重要的面向?qū)ο蟮某绦蛘Z言。在剛開始學(xué)習(xí)時(shí),一直擔(dān)心自己、也沒把握自己能否學(xué)好,也曾擔(dān)心過不了考試這一關(guān)。經(jīng)過近大半學(xué)期老師您不厭其煩的教導(dǎo), 引導(dǎo)我們?nèi)W(xué)習(xí)。我對 Java 語言有了一定的了解,但那絕對是遠(yuǎn)遠(yuǎn)不夠的,還是要不斷地把它應(yīng)用到實(shí)踐中去,融會(huì)貫通。經(jīng)過為期一周的Java 課程設(shè)計(jì),親身感受體驗(yàn)敲、改寫Java 程序代碼的樂趣,我對Java編程有了較為深入的了解,不僅鞏
15、固了以前在課本上學(xué)到的知識(shí),還學(xué)會(huì)了很多其他東西,比如 Java 程序不同調(diào)試平臺(tái)的使用、錯(cuò)誤的調(diào)試及數(shù)據(jù)庫路徑的配置等等。一直以來,或許有不少人跟我一樣,總是覺得編程是很枯燥乏味的,但是這次 的體驗(yàn)下來,其實(shí)以前我們的想法錯(cuò)誤的。感覺到看著敲擊的代碼變?yōu)橐粋€(gè)個(gè)可以自娛自樂小 游戲程序,其實(shí)是一件非常有趣的事情。并且在添加功能的過程中,不僅可以啟發(fā)自己的想象 力,還可以培養(yǎng)靈活運(yùn)用知識(shí)的能力。在此過程中,我們認(rèn)識(shí)到編程的重要步驟是分析,分析 問題的本身和現(xiàn)實(shí)要求。分析過程中采用根據(jù)設(shè)置框架選擇功能使我的思路特別清晰。拿到一 個(gè)題目不能只局限在一種思想一種方法上,要盡量的多嘗試其他的做法,然后比
16、較,集各家之 所長,拿出最優(yōu)秀的程序來。其次也是最重要的就是我們應(yīng)當(dāng)打開我們的視野,我們應(yīng)當(dāng)從我 們的生活的這個(gè)世界中去領(lǐng)悟解決問題的思想和方法通過這次課程設(shè)計(jì),我收獲的不僅僅是課程上的知識(shí)得到實(shí)際應(yīng)用,還有編程的基本習(xí)慣 和開發(fā)系統(tǒng)時(shí)應(yīng)注意的流程。作為一個(gè)程序編程人員,要保持清醒的頭腦,以現(xiàn)實(shí)為依據(jù),讓 自己的每一行代碼都能實(shí)現(xiàn)自己的意義。參考文獻(xiàn)文獻(xiàn)寫法如下:1.專著、論文集、畢業(yè)論文、報(bào)告等瘋彳f Java講義 (2008-09 )剛著附錄 1 源程序清單Memory.javaimport javax.swing.*;import java.awt.*;import java.awt.e
17、vent.*;import java.io.*;import java.util.LinkedList;public class Memory extends JFrame implements ActionListener JMenuBar bar;JMenu fileMenu;JMenuItem 初級(jí),中級(jí),高級(jí),初級(jí)排行榜,中級(jí)排行榜,高級(jí)排行榜Block block;ImageIcon icon;MemoryTestPane 記憶測試板=null;File file 初級(jí) =new File(" 初級(jí)記憶排行榜.txt"),file 中級(jí)=new File(&quo
18、t; 中級(jí)記憶排行榜.txt"),file 高級(jí)=new File(" 高級(jí)記憶排行榜.txt");LinkedList 成績表 =null;ShowRecord 顯示成績表對話框=null;int m=5,n=6;int 圖標(biāo)個(gè)數(shù)=0;Container con=null;JTextField 提示條 =null;File gradeFile=null;public Memory()block=new Blockm*n;圖標(biāo)個(gè)數(shù)=m;icon=new ImageIcon 圖標(biāo)個(gè)數(shù);for(int i=0;i<icon.length;i+)iconi=new
19、 ImageIcon("a"+i+".gif");for(int i=0;i<block.length;i+)blocki=new Block();blocki. 設(shè)置關(guān)閉時(shí)的圖標(biāo)(new ImageIcon(" 關(guān)閉 .gif");bar=new JMenuBar();fileMenu=new JMenu(" 記憶力測試");初級(jí)=new JMenuItem("初級(jí)");中級(jí)=new JMenuItem("中級(jí)");高級(jí)=new JMenuItem("高級(jí)&
20、quot;);fileMenu.setMnemonic('G');初級(jí).setMnemonic('B');中級(jí).setMnemonic('I');高級(jí).setMnemonic('E');高級(jí)排行榜");中級(jí)排行榜");初級(jí)排行榜");高級(jí)排行榜=newJMenuItem("中級(jí)排行榜=newJMenuItem("初級(jí)排行榜=newJMenuItem("初級(jí) .setMnemonic('T');fileMenu.add( fileMenu.add( file
21、Menu.add( fileMenu.add( fileMenu.add( fileMenu.add(初級(jí));中級(jí));高級(jí));初級(jí)排行榜);中級(jí)排行榜);高級(jí)排行榜);bar.add(fileMenu);setJMenuBar(bar);初級(jí).addActionListener(this);中級(jí).addActionListener(this);高級(jí).addActionListener(this);初級(jí)排行榜.addActionListener(this);中級(jí)排行榜.addActionListener(this);高級(jí)排行榜.addActionListener(this);成績表 =new L
22、inkedList();if(!file 初級(jí) .exists()tryFileOutputStream out=new FileOutputStream("初級(jí)記憶排行榜.txt");ObjectOutputStream object_out=new ObjectOutputStream(out);object_out.writeObject( 成績表 );object_out.close();out.close();catch(IOException e)if(!file 中級(jí) .exists()tryFileOutputStream out=new FileOutpu
23、tStream("中級(jí)記憶排行榜.txt");ObjectOutputStream object_out=new ObjectOutputStream(out);object_out.writeObject( 成績表 );object_out.close();out.close();catch(IOException e)if(!file 高級(jí) .exists()tryFileOutputStream out=new FileOutputStream("高級(jí)記憶排行榜.txt");ObjectOutputStream object_out=new Obj
24、ectOutputStream(out);object_out.writeObject( 成績表 );object_out.close();out.close();catch(IOException e)gradeFile=file 初級(jí) ;setBounds(100,100,300,260);setVisible(true);addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)System.exit(0););con=getContentPane();記憶測試板=new MemoryTest
25、Pane(block,icon,m,n,gradeFile);提示條=new JTextField(" 初級(jí):您需要連續(xù)找出"+6+" 個(gè)相同圖標(biāo)的方塊");提示條.setEditable(false);提示條.setForeground(Color.red);con.add( 記憶測試板,BorderLayout.CENTER);con.add( 提示條 ,BorderLayout.SOUTH);con.validate();this.validate();public void 給出級(jí)別測試(int 寬 ,int 高 ,File f)m= 寬 ;n=
26、 高 ;圖標(biāo)個(gè)數(shù)=m;gradeFile=f;block=new Blockm*n;icon=new ImageIcon 圖標(biāo)個(gè)數(shù);for(int i=0;i<icon.length;i+)iconi=new ImageIcon("a"+i+".gif");for(int i=0;i<block.length;i+)blocki=new Block();blocki. 設(shè)置關(guān)閉時(shí)的圖標(biāo)(new ImageIcon(" 關(guān)閉 .gif");記憶測試板=new MemoryTestPane(block,icon,m,n,gra
27、deFile);con.removeAll();con.add( 記憶測試板,BorderLayout.CENTER);con.add( 提示條 ,BorderLayout.SOUTH);con.validate();this.validate();public void actionPerformed(ActionEvent event)if(event.getSource()= 初級(jí) )給出級(jí)別測試(3,3,file 初級(jí) );setBounds(100,100,300,260);this.validate();提示條 .setText(" 初級(jí):您需要連續(xù)找出"+3+
28、" 個(gè)相同圖標(biāo)的方塊");if(event.getSource()= 中級(jí) )給出級(jí)別測試(4,4,file 中級(jí) );setBounds(100,100,340,280);this.validate();提示條 .setText(" 中級(jí):您需要連續(xù)找出"+4+" 個(gè)相同圖標(biāo)的方塊");if(event.getSource()= 高級(jí) )給出級(jí)別測試(5,5,file 高級(jí) );setBounds(100,100,360,300);this.validate();提示條 .setText(" 高級(jí):您需要連續(xù)找出"
29、;+5+" 個(gè)相同圖標(biāo)的方塊");if(event.getSource()= 高級(jí)排行榜)顯示成績表對話框顯示成績表對話框if(event.getSource()=顯示成績表對話框=new ShowRecord(this,file .setVisible(true);中級(jí)排行榜)=new ShowRecord(this,file高級(jí) ););顯示成績表對話框.setVisible(true);if(event.getSource()= 初級(jí)排行榜)初級(jí) );顯示成績表對話框=new ShowRecord(this,file顯示成績表對話框.setVisible(true);
30、public static void main(String args)new Memory();Block.javaimport javax.swing.*;import java.awt.event.*;public class Block extends JButton implements ActionListener ImageIcon 翻開時(shí)的圖標(biāo)=null, 關(guān)閉時(shí)的圖標(biāo)=null;public Block()addActionListener(this);public ImageIcon 獲取翻開時(shí)的圖標(biāo)()return 翻開時(shí)的圖標(biāo);public ImageIcon 獲取關(guān)閉
31、時(shí)的圖標(biāo)()return 關(guān)閉時(shí)的圖標(biāo);public void 設(shè)置翻開時(shí)的圖標(biāo)(ImageIcon icon)翻開時(shí)的圖標(biāo)=icon;public void 設(shè)置關(guān)閉時(shí)的圖標(biāo)(ImageIcon icon)關(guān)閉時(shí)的圖標(biāo)=icon;public void 設(shè)置圖標(biāo)(ImageIcon icon) setIcon(icon);public void actionPerformed(ActionEvent e) this.setIcon( 翻開時(shí)的圖標(biāo));MemoryTestPane.javaimport javax.swing.*;import java.awt.event.*;import j
32、ava.awt.*;import java.util.LinkedList;import java.io.*;public class MemoryTestPane extends JPanel implements ActionListenerRandomSetIcon 排列圖標(biāo)=null;Block block;ImageIcon icon;LinkedList listIocn=null, listBlock=null;int 行數(shù) =0, 列數(shù) =0;int success=0;int time=0;javax.swing.Timer 計(jì)時(shí)器 =null;JTextField 顯示時(shí)間
33、=null;File gradeFile=null;boolean 計(jì)時(shí)器是否啟動(dòng)=false;public MemoryTestPane(Block block,ImageIcon icon,int m,int n,File f) 排列圖標(biāo)=new RandomSetIcon();this.block=block;this.icon=icon;行數(shù)=m;列數(shù)=n;gradeFile=f;listIocn=new LinkedList();listBlock=new LinkedList();setLayout(new BorderLayout();JPanel center=new JPan
34、el();center.setLayout(new GridLayout( 行數(shù),列數(shù));for(int i=0;i<block.length;i+)center.add(blocki);blocki.addActionListener(this);JPanel south=new JPanel();顯示時(shí)間=new JTextField(12);顯示時(shí)間.setEditable(false);顯示時(shí)間.setForeground(Color.red);south.add( 顯示時(shí)間);add(center,BorderLayout.CENTER);add(south,BorderLay
35、out.SOUTH);排列圖標(biāo).隨機(jī)設(shè)置圖標(biāo)(block,icon);計(jì)時(shí)器 =new Timer(1000,this);計(jì)時(shí)器是否啟動(dòng)=false;public void actionPerformed(ActionEvent e)if(e.getSource() instanceof Block)Block 方塊 =(Block)e.getSource();ImageIcon 翻開時(shí)的圖標(biāo)=方塊 .獲取翻開時(shí)的圖標(biāo)();方塊.設(shè)置圖標(biāo)(翻開時(shí)的圖標(biāo));if(listIocn.size()=0)listIocn.add( 翻開時(shí)的圖標(biāo));listBlock.add( 方塊 );success
36、=1;elseImageIcon temp=(ImageIcon)listIocn.getLast();if(temp= 翻開時(shí)的圖標(biāo)&&!(listBlock.contains( 方塊 )success=success+1;listIocn.add( 翻開時(shí)的圖標(biāo));listBlock.add( 方塊 );if(success= 列數(shù) )for(int i=0;i<block.length;i+)blocki.setEnabled(false);for(int j=0;j<listBlock.size();j+)Block b=(Block)listBlock.g
37、et(j);b.setDisabledIcon(b. 獲取翻開時(shí)的圖標(biāo)();計(jì)時(shí)器 .stop();Record record=new Record(gradeFile);record.setTime(time);record.setVisible(true);else if(temp!= 翻開時(shí)的圖標(biāo))&&(!(listBlock.contains( 方塊 )listIocn.clear();listBlock.clear();listIocn.add( 翻開時(shí)的圖標(biāo));listBlock.add( 方塊 );success=1;for(int i=0;i<block.
38、length;i+)if( 方塊 !=blocki)blocki. 設(shè)置圖標(biāo)(blocki. 獲取關(guān)閉時(shí)的圖標(biāo)();if( 計(jì)時(shí)器是否啟動(dòng)=false)time=0;計(jì)時(shí)器 .start();計(jì)時(shí)器是否啟動(dòng)=true;if(e.getSource()= 計(jì)時(shí)器 )time=time+1;顯示時(shí)間.setText(" 您的用時(shí):"+time+" 秒 ");ShowRecord.javaimport java.io.*;import java.util.*;import javax.swing.*;import java.awt.event.*;import
39、 java.awt.*;public class ShowRecord extends JDialog implements ActionListener File gradeFile=null;JButton 確定,清除;JTextArea show=null;public ShowRecord(JFrame frame,File f)super(frame," 記憶測試排行榜:"+f.toString();gradeFile=f;show=new JTextArea(6,4);確定=new JButton(" 顯示排行榜");確定.addAction
40、Listener(this);清除=new JButton(" 清空排行榜");清除.addActionListener(this);Container con=getContentPane();con.add(new JScrollPane(show),BorderLayout.CENTER);JPanel p=new JPanel();p.add( 確定);p.add( 清除);con.add(p,BorderLayout.SOUTH);setBounds(100,100,320,185);setVisible(false);setModal(true);addWind
41、owListener(new WindowAdapter()public void windwoClosing(WindowEvent e)setVisible(false);dispose(););public void actionPerformed(ActionEvent e)if(e.getSource()= 確定 )tryshow.setText(null);FileInputStream in=new FileInputStream(gradeFile);ObjectInputStream object_in=new ObjectInputStream(in);LinkedList
42、 成績 =(LinkedList)object_in.readObject();object_in.close();sort( 成績 );for(int i=0;i< 成績 .size();i+)People people=(People) 成績 .get(i);成績 :"+people.getTime();show.append("n"+people.getName()+catch(Exception ee)if(e.getSource()= 清除 )tryFileInputStream in=new FileInputStream(gradeFile);
43、ObjectInputStream object_in=new ObjectInputStream(in);LinkedList 成績 =(LinkedList)object_in.readObject();object_in.close();成績 .clear();FileOutputStream out=new FileOutputStream(gradeFile);ObjectOutputStream object_out=new ObjectOutputStream(out);object_out.writeObject( 成績 );out.close();object_out.clo
44、se();show.setText(" 排行榜被清空");catch(Exception ee)public void sort(LinkedList list)for(int i=0;i<list.size()-1;i+)for(int j=i+1;j<list.size();j+)if(People)list.get(i).getTime()>(People)list.get(j).getTime()j);People temp=(People)list.get(list.set( j,(People)list.get(i);list.set(i,te
45、mp);Record.javaimport java.io.*;import java.util.*;import javax.swing.*;import java.awt.event.*;import java.awt.*;public class Record extends JFrame implements ActionListenerint time=0;JTextField yourName,label;JButton 確定,取消;File gradeFile=null;public Record(File f)super(" 記錄你的成績到:"+f.toSt
46、ring();gradeFile=f;setBounds(100,100,330,160);setResizable(false);setVisible(false);確定=new JButton("確定");取消=new JButton("取消");yourName=new JTextField(8);yourName.setText(" 匿名 ");確定.addActionListener(this);取消.addActionListener(this);Container con=getContentPane();con.setLayout(new GridLayout(2,1);label=new JTextField(" 輸入你的,將成績存放到排行榜:"+f.toString();label.setEditable(false);con.add(label);JPanel p=new JPanel();p.add(yourName);p.add( 確定);p.add( 取消);con.add(
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 南京租房陰陽合同范例
- 區(qū)域 加盟 合同范本
- 醫(yī)院 設(shè)備 采購合同范本
- 刑事事件代理合同范本
- 協(xié)議付款合同范本
- 《三位數(shù)除以兩位數(shù)》的教學(xué)反思
- 代售票券合同范本
- 可變動(dòng)價(jià)格合同范本
- 原料藥項(xiàng)目建議書(范文)
- 低價(jià)收購二手房合同范本
- 河南省南陽市2024-2025學(xué)年七年級(jí)上學(xué)期期末模擬英語試題(含答案)
- 2024年高中數(shù)學(xué)新課程標(biāo)準(zhǔn)考試模擬測試題及答案
- 煤礦員工安全培訓(xùn)教材一通三防篇
- 表演課程教案完整版
- 2024年新疆區(qū)公務(wù)員錄用考試《行測》試題及答案解析
- DB14-T 2736-2023 池塘養(yǎng)殖尾水處理規(guī)范
- 體重管理健康科普教育
- 大學(xué)數(shù)學(xué)《概率論與數(shù)理統(tǒng)計(jì)》說課稿
- 深大基坑設(shè)計(jì)施工關(guān)鍵技術(shù)孫加齊
- 《神經(jīng)外科常見疾病》課件
- DL-T5707-2014電力工程電纜防火封堵施工工藝導(dǎo)則
評論
0/150
提交評論