




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、JAVA程序設(shè)計(jì)課程設(shè)計(jì)報(bào)告題 目:記憶游戲姓 名:學(xué) 號(hào):班 級(jí):指導(dǎo)教師:完成時(shí)間 成 績(jī):信息工程學(xué)院2015年6月目 錄記憶測(cè)試系統(tǒng)1 概 述1.1 課程設(shè)計(jì)目的1) 鞏固和提高java編程技術(shù)。2) 培養(yǎng)掌握成學(xué)設(shè)計(jì)的基本思路和方法。3) 加強(qiáng)研發(fā)、調(diào)試程序的能力。4) 增強(qiáng)分析、解決問題的能力。5) 提高科技論文寫作能力。1.2 課程設(shè)計(jì)內(nèi)容記憶測(cè)試系統(tǒng)是通過回憶法測(cè)試記憶能力,測(cè)試手段分為初級(jí),中級(jí)和高級(jí)三個(gè)級(jí)別。記憶測(cè)試系統(tǒng)設(shè)計(jì)要求如下:(1)單擊“記憶測(cè)試”菜單可以選擇初級(jí)、中級(jí)或高級(jí)三個(gè)級(jí)別。(2)單擊“記憶測(cè)試”菜單還可以查看初級(jí)記憶榜、中級(jí)記憶榜或高級(jí)記憶榜,通過記憶榜
2、存儲(chǔ)每個(gè)級(jí)別的成績(jī)。(3)選擇級(jí)別后,將出現(xiàn)相應(yīng)級(jí)別的測(cè)試區(qū)。測(cè)試區(qū)由m*n個(gè)方塊組成,程序通過設(shè)置m和n的值來確定相應(yīng)的測(cè)試級(jí)別,例如,對(duì)于初級(jí)級(jí)別,m=3,n=3。每個(gè)方塊上都有一個(gè)圖標(biāo),但該圖標(biāo)默認(rèn)不可見。用鼠標(biāo)單擊測(cè)試區(qū)中的任何一個(gè)方塊,則計(jì)時(shí)器開始啟動(dòng)動(dòng),同時(shí)該方塊上的圖標(biāo)將顯示出來。(4)m*n個(gè)方塊組成的測(cè)試區(qū)中有m個(gè)圖標(biāo),每個(gè)圖標(biāo)重復(fù)出現(xiàn)n次,并且隨機(jī)分布在測(cè)試區(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次單
3、擊出的方塊的圖標(biāo)仍然可見;否則前p次單擊出來的方塊的圖標(biāo)全都變得不可見,只有當(dāng)前單擊的方塊的圖標(biāo)可現(xiàn)。(5)測(cè)試區(qū)能顯示用戶的同時(shí),并根據(jù)級(jí)別的不同,提示用戶必須用鼠標(biāo)連續(xù)單擊出多個(gè)圖標(biāo)相同的方塊。(6)測(cè)試區(qū)有提示圖標(biāo)所在位置的功能。用戶單擊測(cè)試區(qū)中的“提示”按鈕后,測(cè)試區(qū)將持續(xù)1.2秒為用戶顯示全部方塊上的圖標(biāo)。用戶每單擊一次“提示”按鈕,用戶用時(shí)將增加10秒。(7)連續(xù)單擊出級(jí)別所要求的若干個(gè)相同的方塊后,將彈出保存成績(jī)對(duì)話框,用戶可以通過該對(duì)話框選擇是否將自己的成績(jī)保存到成績(jī)表中。2 需求分析 設(shè)計(jì)目標(biāo)1單擊“記憶測(cè)試”菜單可以選擇初級(jí)、中級(jí)、高級(jí)三個(gè)級(jí)別,通過記憶榜可以查看初級(jí)記憶榜
4、、中級(jí)記憶榜或高級(jí)記憶榜。2.選擇級(jí)別后,將顯示相應(yīng)級(jí)別的測(cè)試區(qū)域。測(cè)試區(qū)域由若干個(gè)方塊組成,每個(gè)方塊上都有一個(gè)圖標(biāo),但該圖標(biāo)默認(rèn)情況下不可見。用鼠標(biāo)單擊測(cè)試區(qū)中的任何一個(gè)方塊,則計(jì)時(shí)器開始啟動(dòng),同時(shí)該方塊上的圖標(biāo)將顯示出來。對(duì)于初級(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)形同的方塊后,將顯示保存成績(jī)對(duì)話框,成績(jī)按所用時(shí)間排序。用戶可
5、以通過該對(duì)話框選擇是否將自己的成績(jī)保存到成績(jī)表中。 主體功能本游戲是通過由用戶點(diǎn)擊圖片顯示出圖片后,如果是相同的,便保持圖形,如果用戶點(diǎn)開的是不同的圖片則先前點(diǎn)擊的圖片被清空。當(dāng)用戶同時(shí)點(diǎn)擊出規(guī)定數(shù)目的圖片后,彈出保存成績(jī)框。2.3 開發(fā)環(huán)境Win7;3 概要設(shè)計(jì)記憶測(cè)試系統(tǒng)共包含8個(gè)java源文件和若干個(gè)圖像文件(用戶可以增加)。類之間的主要關(guān)系如下圖所示。在測(cè)試系統(tǒng)中,可以編寫6個(gè)Java源文件:MemoryGame.java、MemoryTestArea.java、Block.java、ShowRecordDialog.java、Record.java、People.java。記憶測(cè)試系
6、統(tǒng)除了上述6個(gè)Java源文件產(chǎn)生的類外,還需要Java系統(tǒng)提供的一些重要的類。記憶測(cè)試系統(tǒng)所用到的一些重要的類以及之間的組合關(guān)系如圖3.1所示。Memory(主類)Block(方塊)MemoryTestPane(測(cè)試版)ShowRecord(顯示成績(jī))顯示成績(jī))ShowHelp(幫助)RandomSetIcon(隨機(jī)排列圖標(biāo))Record(記錄成績(jī))People(用戶信息)圖3.1 類之間的組合關(guān)系圖3.1 類之間的關(guān)系3.2 系統(tǒng)流程圖圖3.2 系統(tǒng)流程圖4 詳細(xì)設(shè)計(jì)系統(tǒng)主體部分是在底層容器上插入面板,并在面板上安排按鈕陣列,當(dāng)用戶點(diǎn)擊按鈕,經(jīng)過隨機(jī)安排在按鈕后面的圖片顯示出來。通過對(duì)比圖片
7、下標(biāo),如果所顯示圖片和前一個(gè)顯示圖片一樣,則沒變化;如果,不一樣,則把以前所有顯示的圖片重新用按鈕遮蓋。當(dāng)用戶點(diǎn)開指定數(shù)量的圖片時(shí),就進(jìn)入記錄數(shù)據(jù)部分。在測(cè)試過程中,顯示用戶測(cè)試時(shí)間。記錄數(shù)據(jù)部分。是把用戶輸入的姓名和系統(tǒng)記錄用戶測(cè)試時(shí)間寫入指定文檔中保存。查閱數(shù)據(jù)部分,是把指定文檔的數(shù)據(jù)顯示給用戶,包括姓名和測(cè)試時(shí)間。用戶此時(shí)可以清除文檔中數(shù)據(jù),即可刪除排行榜。4.2 算法思路主窗口安排指定數(shù)量按鈕,是通過用戶所選級(jí)別傳參數(shù)計(jì)算后進(jìn)行安排。隨機(jī)分布圖片需要隨機(jī)函數(shù)隨機(jī)產(chǎn)生指定數(shù)量的圖片下標(biāo),并傳給主窗口的按對(duì)應(yīng)按鈕通過對(duì)比所顯示圖片的下標(biāo),統(tǒng)計(jì)顯示的相同圖片的數(shù)量。用戶測(cè)試開始后,記錄測(cè)試時(shí)
8、間,并保存。a).成員變量主要成員變量(屬性):成員變量描述變量類型名稱菜單條JMenuBarBar菜單JMenuItemFileMenu菜單項(xiàng)JMenuBar初級(jí),中級(jí),高級(jí),初級(jí)排行榜,中級(jí)排行榜,高級(jí)排行榜面板容器MemoryTestPane記憶測(cè)試板方塊數(shù)組Blockblock顯示成績(jī)ShowRecord顯示成績(jī)表對(duì)話框圖標(biāo)數(shù)組ImageIconiconb).方法主要方法:名稱功能備注Memory創(chuàng)建窗口構(gòu)造方法給出級(jí)別測(cè)試選擇級(jí)別actionPerformed處理ActionEvent事件接口方法Main主程序開始執(zhí)行a).成員變量主要成員變量(屬性):成員變量描述變量類型名稱方塊翻
9、開時(shí)的圖標(biāo)ImageIcon翻開時(shí)的圖標(biāo)方塊關(guān)閉時(shí)的圖標(biāo)ImageIcon關(guān)閉時(shí)的圖標(biāo)b).方法主要方法:名稱功能備注Block創(chuàng)建方塊對(duì)象的構(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事件a).成員變量主要成員變量(屬性):變量描述變量類型名稱隨機(jī)排列圖標(biāo)對(duì)象RandomSetIcon排列圖標(biāo)方塊數(shù)組Blockblock圖標(biāo)數(shù)組ImageIconicon添加方塊對(duì)象用的鏈表Linked
10、ListlistIcon添加圖標(biāo)對(duì)象用的鏈表LinkedListlistIcon確定是否成功的對(duì)象intsuccess用來計(jì)時(shí)的對(duì)象Timer計(jì)時(shí)器記憶測(cè)試板的行數(shù)和列數(shù)int行數(shù),列數(shù)b).方法主要方法:名稱功能備注MemoryTestPane創(chuàng)建記憶測(cè)試板對(duì)象的構(gòu)造方法actionPerformed處理ActionEvent事件接口方法a). 成員變量主要成員變量(屬性):成員變量描述變量類型名稱存放成績(jī)的文件FilegradeFile按鈕對(duì)象JButton確定,清除顯示成績(jī)的區(qū)域JTextAreashowb).方法主要方法:名稱功能備注ShowRecord創(chuàng)建顯示成績(jī)窗口構(gòu)造方法acti
11、onPerformed處理ActionEvent事件接口方法a).成員變量主要成員變量(屬性):成員變量描述變量類型名稱用時(shí)inttime輸入測(cè)試者的名字JTextFieldyourname存放成績(jī)的文件FilegradeFile是否保存成績(jī)的按鈕JButton確定,取消b).方法主要方法:名稱功能備注Record創(chuàng)建保存成績(jī)窗口構(gòu)造方法actionPerformed處理ActionEvent事件接口方法setTime設(shè)置時(shí)間setFile設(shè)置文件a).成員變量(無)b).方法主要方法:名稱功能備注隨機(jī)設(shè)置圖標(biāo)隨機(jī)排列記憶測(cè)試板中方塊的圖標(biāo)a)成員變量主要成員變量(屬性):描述變量類型名稱測(cè)試
12、者名字Stringname用時(shí)inttimeb) 方法主要方法:名稱功能備注People傳遞名字和時(shí)間構(gòu)造方法getTime返回使用者用時(shí)getName返回使用者名字5測(cè)試5.1 測(cè)試方案將7個(gè)java文件保存到一個(gè)文件夾中,例如,D:jiyiceshi。將7個(gè)文件分別編譯成相應(yīng)的字節(jié)碼(.class)文件。然后,用java解釋器運(yùn)行主類:C:jiyiceshijava Memory 程序運(yùn)行后選擇各菜單,分別進(jìn)行功能測(cè)試。5.2 測(cè)試結(jié)果(1)運(yùn)行效果 圖 運(yùn)行效果(2)當(dāng)選擇“記憶力測(cè)試”后,自己可以設(shè)置游戲的難度,效果如圖圖 初級(jí)效果圖圖 中級(jí)效果圖圖 高級(jí)效果圖圖 排行效果圖(3)當(dāng)游
13、戲結(jié)束后,查看“初級(jí)排行榜”,將顯示初級(jí)的成績(jī)記錄效果圖 初級(jí)成績(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í)。我對(duì)Java語言有了一定的了解,但那絕對(duì)是遠(yuǎn)遠(yuǎn)不夠的,還是要不斷地把它應(yīng)用到實(shí)踐中去,融會(huì)貫通。經(jīng)過為期一周的Java課程設(shè)計(jì),親身感受體驗(yàn)敲、改寫Java程序代碼的樂趣,我對(duì)Java編程有了較為深入的了解,不僅鞏固了以前在課本上學(xué)到的知識(shí),還學(xué)會(huì)了很多其他東西,比如Java程序不同調(diào)試平臺(tái)的使用、錯(cuò)誤的調(diào)試及數(shù)據(jù)庫路徑的配置等等。
14、一直以來,或許有不少人跟我一樣,總是覺得編程是很枯燥乏味的,但是這次的體驗(yàn)下來,其實(shí)以前我們的想法錯(cuò)誤的。感覺到看著敲擊的代碼變?yōu)橐粋€(gè)個(gè)可以自娛自樂小游戲程序,其實(shí)是一件非常有趣的事情。并且在添加功能的過程中,不僅可以啟發(fā)自己的想象力,還可以培養(yǎng)靈活運(yùn)用知識(shí)的能力。在此過程中,我們認(rèn)識(shí)到編程的重要步驟是分析,分析問題的本身和現(xiàn)實(shí)要求。分析過程中采用根據(jù)設(shè)置框架選擇功能使我的思路特別清晰。拿到一個(gè)題目不能只局限在一種思想一種方法上,要盡量的多嘗試其他的做法,然后比較,集各家之所長(zhǎng),拿出最優(yōu)秀的程序來。其次也是最重要的就是我們應(yīng)當(dāng)打開我們的視野,我們應(yīng)當(dāng)從我們的生活的這個(gè)世界中去領(lǐng)悟解決問題的思想
15、和方法通過這次課程設(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)告等瘋狂Java講義 (2008-09)李剛著附 錄附錄1 源程序清單import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.io.*;import java.util.LinkedList;public class Memory extends J
16、Frame implements ActionListener JMenuBar bar; JMenu fileMenu; JMenuItem 初級(jí),中級(jí),高級(jí),初級(jí)排行榜,中級(jí)排行榜,高級(jí)排行榜; Block block; ImageIcon icon; MemoryTestPane 記憶測(cè)試板=null; File file初級(jí)=new File("初級(jí)記憶排行榜.txt"), file中級(jí)=new File("中級(jí)記憶排行榜.txt"), file高級(jí)=new File("高級(jí)記憶排行榜.txt"); LinkedList 成績(jī)
17、表=null; ShowRecord 顯示成績(jī)表對(duì)話框=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 ImageIcon("a"+i+".gif"); for(int i=0;i<block.
18、length;i+) blocki=new Block(); blocki.設(shè)置關(guān)閉時(shí)的圖標(biāo)(new ImageIcon("關(guān)閉.gif"); bar=new JMenuBar(); fileMenu=new JMenu("記憶力測(cè)試"); 初級(jí)=new JMenuItem("初級(jí)"); 中級(jí)=new JMenuItem("中級(jí)"); 高級(jí)=new JMenuItem("高級(jí)"); fileMenu.setMnemonic('G'); 初級(jí).setMnemonic('B&
19、#39;); 中級(jí).setMnemonic('I'); 高級(jí).setMnemonic('E'); 高級(jí)排行榜=new JMenuItem("高級(jí)排行榜"); 中級(jí)排行榜=new JMenuItem("中級(jí)排行榜"); 初級(jí)排行榜=new JMenuItem("初級(jí)排行榜"); 初級(jí).setMnemonic('T'); fileMenu.add(初級(jí)); fileMenu.add(中級(jí)); fileMenu.add(高級(jí)); fileMenu.add(初級(jí)排行榜); fileMenu.ad
20、d(中級(jí)排行榜); fileMenu.add(高級(jí)排行榜); bar.add(fileMenu); setJMenuBar(bar); 初級(jí).addActionListener(this); 中級(jí).addActionListener(this); 高級(jí).addActionListener(this); 初級(jí)排行榜.addActionListener(this); 中級(jí)排行榜.addActionListener(this); 高級(jí)排行榜.addActionListener(this); 成績(jī)表=new LinkedList(); if(!file初級(jí).exists() try FileOutpu
21、tStream out=new FileOutputStream("初級(jí)記憶排行榜.txt"); ObjectOutputStream object_out=new ObjectOutputStream(out); object_out.writeObject(成績(jī)表); object_out.close(); out.close(); catch(IOException e) if(!file中級(jí).exists() try FileOutputStream out=new FileOutputStream("中級(jí)記憶排行榜.txt"); ObjectO
22、utputStream object_out=new ObjectOutputStream(out); object_out.writeObject(成績(jī)表); object_out.close(); out.close(); catch(IOException e) if(!file高級(jí).exists() try FileOutputStream out=new FileOutputStream("高級(jí)記憶排行榜.txt"); ObjectOutputStream object_out=new ObjectOutputStream(out); object_out.wri
23、teObject(成績(jī)表); 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(); 記憶測(cè)試板=new MemoryTestPane(block,icon,m,n,gradeFi
24、le); 提示條=new JTextField("初級(jí):您需要連續(xù)找出"+6+"個(gè)相同圖標(biāo)的方塊"); 提示條.setEditable(false); 提示條.setForeground(Color.red); con.add(記憶測(cè)試板,BorderLayout.CENTER); con.add(提示條,BorderLayout.SOUTH); con.validate(); this.validate(); public void 給出級(jí)別測(cè)試(int 寬,int 高,File f) m=寬; n=高; 圖標(biāo)個(gè)數(shù)=m; gradeFile=f; bl
25、ock=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"); 記憶測(cè)試板=new MemoryTestPane(block,icon,m,n,gradeFile); con.removeAll
26、(); con.add(記憶測(cè)試板,BorderLayout.CENTER); con.add(提示條,BorderLayout.SOUTH); con.validate(); this.validate(); public void actionPerformed(ActionEvent event) if(event.getSource()=初級(jí)) 給出級(jí)別測(cè)試(3,3,file初級(jí)); setBounds(100,100,300,260); this.validate(); 提示條.setText("初級(jí):您需要連續(xù)找出"+3+"個(gè)相同圖標(biāo)的方塊"
27、); if(event.getSource()=中級(jí)) 給出級(jí)別測(cè)試(4,4,file中級(jí)); setBounds(100,100,340,280); this.validate(); 提示條.setText("中級(jí):您需要連續(xù)找出"+4+"個(gè)相同圖標(biāo)的方塊"); if(event.getSource()=高級(jí)) 給出級(jí)別測(cè)試(5,5,file高級(jí)); setBounds(100,100,360,300); this.validate(); 提示條.setText("高級(jí):您需要連續(xù)找出"+5+"個(gè)相同圖標(biāo)的方塊"
28、); if(event.getSource()=高級(jí)排行榜) 顯示成績(jī)表對(duì)話框=new ShowRecord(this,file高級(jí)); 顯示成績(jī)表對(duì)話框.setVisible(true); if(event.getSource()=中級(jí)排行榜) 顯示成績(jī)表對(duì)話框=new ShowRecord(this,file中級(jí)); 顯示成績(jī)表對(duì)話框.setVisible(true); if(event.getSource()=初級(jí)排行榜) 顯示成績(jī)表對(duì)話框=new ShowRecord(this,file初級(jí)); 顯示成績(jī)表對(duì)話框.setVisible(true); public static void
29、 main(String args) new Memory(); import 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)閉時(shí)的圖標(biāo)() return 關(guān)閉時(shí)的圖標(biāo);
30、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)); import javax.swing.*; import java.awt.event.*;import java.awt.*;import java.util.Linked
31、List;import java.io.*;public class MemoryTestPane extends JPanel implements ActionListener RandomSetIcon 排列圖標(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í)間=null; File gradeFile=null;
32、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 JPanel(); center.set
33、Layout(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,BorderLayout.SOU
34、TH); 排列圖標(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=
35、1; else ImageIcon 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
36、.get(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<
37、block.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+"秒"); import java.io.*;import java.util.*;import javax.swing.*;import java.awt.event.*;import java.awt.
38、*;public class ShowRecord extends JDialog implements ActionListener File gradeFile=null; JButton 確定,清除; JTextArea show=null; public ShowRecord(JFrame frame,File f) super(frame,"記憶測(cè)試排行榜:"+f.toString(); gradeFile=f; show=new JTextArea(6,4); 確定=new JButton("顯示排行榜"); 確定.addActionList
39、ener(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); ad
40、dWindowListener(new WindowAdapter() public void windwoClosing(WindowEvent e) setVisible(false); dispose(); ); public void actionPerformed(ActionEvent e) if(e.getSource()=確定) try show.setText(null); FileInputStream in=new FileInputStream(gradeFile); ObjectInputStream object_in=new ObjectInputStream(i
41、n); LinkedList 成績(jī)=(LinkedList)object_in.readObject(); object_in.close(); sort(成績(jī)); for(int i=0;i<成績(jī).size();i+) People people=(People)成績(jī).get(i); show.append("n"+people.getName()+"成績(jī):"+people.getTime(); catch(Exception ee) if(e.getSource()=清除) try FileInputStream in=new FileInputStream(gradeFile); ObjectInputStream object_in=new ObjectInputStream(in); LinkedList 成績(jī)=(LinkedList)object_in.readObject(); object_in.close(); 成績(jī).clear(); FileOutputStream out=new FileOutputStream(gradeFile); ObjectOutputStream object_out=new ObjectOutputStream(out); object_out.writeObje
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業(yè)度購(gòu)銷合同范例
- 倒閉合同范本
- 二手車抵押合同范例
- 內(nèi)部工程協(xié)議合同范例
- 企業(yè)總經(jīng)理任職合同范例
- 傳授產(chǎn)品加工合同范例
- 農(nóng)場(chǎng)搬運(yùn)機(jī)械合同范例
- 公路ppp模式合同范例
- 供電供水合同范例
- 別墅招租合租合同范本
- 2024年信息技術(shù)基礎(chǔ)考試復(fù)習(xí)題庫(含答案)
- DZT 0447-2023 巖溶塌陷調(diào)查規(guī)范(1:50000)
- 上海交通大學(xué)有機(jī)化學(xué)課件第二章烷烴
- DB34∕T 3968-2021 橋梁健康監(jiān)測(cè)系統(tǒng)運(yùn)營(yíng)維護(hù)與管理規(guī)范
- 加氣混凝土砌塊砌筑規(guī)范標(biāo)準(zhǔn)[詳]
- 定語從句漢譯英
- 財(cái)政部金融企業(yè)不良資產(chǎn)批量轉(zhuǎn)讓管理辦法(財(cái)金[2012]6號(hào))
- 倉庫管理警示標(biāo)語
- 天然氣次高壓管線工程焊接施工方案和措施
- 項(xiàng)目量產(chǎn)移交點(diǎn)檢表
- 功率因數(shù)角對(duì)應(yīng)正切值
評(píng)論
0/150
提交評(píng)論