版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p> Java與面向?qū)ο蠹夹g(shù)</p><p><b> 課程設(shè)計(jì)報(bào)告</b></p><p> ( 2011 -- 2012 年度第 2 學(xué)期)</p><p><b> 魔板游戲 </b></p><p> 專業(yè)電子信息工程</p><p> 學(xué)生姓名
2、</p><p> 班級(jí)</p><p> 學(xué)號(hào)</p><p> 指導(dǎo)教師</p><p> 完成日期2012年7月 14日</p><p><b> 目 錄</b></p><p><b> 目 錄2</b></p>
3、<p> 1 概 述1</p><p> 1.1 課程設(shè)計(jì)目的1</p><p><b> 課程設(shè)計(jì)任務(wù)書1</b></p><p><b> 2 需求分析2</b></p><p> 2.1 設(shè)計(jì)目標(biāo)2</p><p> 2.2 主體
4、功能1</p><p> 2.3 開發(fā)環(huán)境1</p><p><b> 3 概要設(shè)計(jì)2</b></p><p> 3.1 系統(tǒng)的功能模塊劃分2</p><p> 3.1.1PuzzleGame.java類模塊2</p><p> 3.1.4 Point.java類模塊3<
5、;/p><p> 3.2 系統(tǒng)流程圖4</p><p><b> 4 詳細(xì)設(shè)計(jì)6</b></p><p><b> 5 測試7</b></p><p> 5.1 測試方案7</p><p> 5.2 測試結(jié)果7</p><p><
6、b> 6 小結(jié)8</b></p><p><b> 參考文獻(xiàn)10</b></p><p><b> 附 錄11</b></p><p> 附錄1 源程序清單11</p><p> 附錄1.1PuzzleGame模塊源程序11</p><
7、p> 附錄1.2PuzzlePad模塊源程序13</p><p> 附錄1.3Block類模塊源程序16</p><p> 附錄1.4Point類模塊源程序17</p><p> 附錄1.5HandleImage類模塊源程序17</p><p> 附錄1.6HandleMove類模塊源程序18</p>
8、<p> 附錄1.7VertfySuccess類模塊源程序20</p><p> 附錄1.8Sound類模塊源程序21</p><p> 附錄1.8Sound類模塊源程序21</p><p><b> 魔板游戲</b></p><p> 1 概 述 </p>&
9、lt;p> 1.1 課程設(shè)計(jì)目的</p><p> 利用所學(xué)高級(jí)語言的語法特性,結(jié)合數(shù)據(jù)結(jié)構(gòu)算法、網(wǎng)絡(luò)知識(shí)、文件處理和數(shù)據(jù)庫等知識(shí)完成綜合題目的設(shè)計(jì)和代碼實(shí)現(xiàn),并培養(yǎng)鍛煉分析程序、撰寫報(bào)告等能力。</p><p> 1.2課程設(shè)計(jì)任務(wù)書</p><p><b> 2 需求分析</b></p><p><
10、;b> 2.1 設(shè)計(jì)目標(biāo)</b></p><p> 熟悉Java語言和NetBeansIDE6.8等開發(fā)工具。</p><p><b> 2.2 主體功能</b></p><p> 這個(gè)程序定義了一些組件,工具欄按鈕,文本區(qū)和菜單。魔板游戲程序設(shè)計(jì)通過PuzzleGame.java、PuzzlePad.java、Poi
11、nt.java、Block.java、HandleImage.java、VerifySuccsee.java和HandleMove.java7個(gè)類來實(shí)現(xiàn)魔板游戲的整體功能。</p><p><b> 2.3 開發(fā)環(huán)境</b></p><p> 操作系統(tǒng):Microsoft Windows 98/2000/XP</p><p> 硬件要求:
12、處理器:2.6 GHz Intel Pentium IV 或具有同等性能的處理器</p><p><b> 內(nèi)存:2 GB</b></p><p> 硬盤空間:1 GB 可用硬盤空 間</p><p> 開發(fā)工具:NetBeans IDE 6.8</p><p><b> 3 概要設(shè)計(jì)</b>
13、;</p><p> 3.1 系統(tǒng)的功能模塊劃分</p><p> 在設(shè)計(jì)魔板游戲時(shí),需要編寫7個(gè)java源文件:PuzzleGame.java、PuzzlePad.java、Point.java、Block.java、HandleImage.java、VerifySuccsee.java和HandleMove.java。</p><p> 魔板游戲除了需要編
14、寫的上述7個(gè)Java源文件所給出的類外,還需要Java系統(tǒng)提供的一些重要的類,如JMenuItem、JButton和JRadioButton等類。魔板游戲所用到的一些重要的類以及之間的組合關(guān)系如圖1.1所示。</p><p> 圖1-1 類之間的組合關(guān)系</p><p> 3.1.1PuzzleGame.java類模塊</p><p> PuzzleGame類
15、負(fù)責(zé)創(chuàng)建魔板游戲的主窗口,該類含有main方法,程序從該類開始。PuzzleGame類的成員變量中有4種重要類型的對象:PuzzlePad、JMenu、JRadioButton和JButton。PuzzleGame類的主要成員的作用將在后面的詳細(xì)設(shè)計(jì)中闡述,PuzzleGame類創(chuàng)建的窗口以及其中的主要成員對象如圖6.3所示。</p><p> 3.1.2 PuzzlePad.java類模塊</p>
16、<p> PuzzlePad類創(chuàng)建的對象是PuzzleGame類最重要的成員之一,代表“魔板”。該類的成員變量中有5種重要類型的對象:Point、Block、HandleMove、HandleImage和Image。PuzzlePad類的主要成員的作用將在后面的詳細(xì)設(shè)計(jì)中闡述。</p><p> 3.1.3 Block.java類模塊</p><p> Block類是J
17、TextField的一個(gè)子類,創(chuàng)建的對象是PuzzlePad類的重要成員之一,用來表示“魔板”中的“方塊”。</p><p> 3.1.4 Point.java類模塊</p><p> Point類負(fù)責(zé)創(chuàng)建確定位置的對象,使用Point對象可以確定Block對象在PuzzlePad對象中的位置,即確定“方塊”在“魔板”中的位置。</p><p> 3.1.5
18、HandleImage.java類模塊</p><p> HandImage類所創(chuàng)建的對象負(fù)責(zé)處理鼠標(biāo)事件。</p><p> 3.1.6 HandleMove.java類模塊</p><p> HandMove類所創(chuàng)建的對象負(fù)責(zé)處理鼠標(biāo)事件。</p><p> 3.1.7 VerifySuccess.java類模塊</p>
19、;<p> VerifySuccess類所創(chuàng)建的對象負(fù)責(zé)驗(yàn)證用戶是否按要求成功排列魔板中的方塊。</p><p><b> 3.2 系統(tǒng)流程圖</b></p><p> 圖2-1 總體功能圖</p><p> 根據(jù)對模板游戲的功能分析,設(shè)計(jì)得到魔板游戲總流程,如圖2-2所示:</p><p> 圖
20、2-2 總體流程圖</p><p><b> 4 詳細(xì)設(shè)計(jì)</b></p><p> 本程序?qū)崿F(xiàn)的游戲分為初級(jí)和高級(jí)模式,可以在單機(jī)選擇級(jí)別之后進(jìn)行選擇級(jí)別模式。初級(jí)的話共分為9格魔板一個(gè)為空,8個(gè)魔板上下左右自由移動(dòng),直至排列完成。該游戲初始默認(rèn)為數(shù)字玩法,不過在單擊圖像玩法之后可以進(jìn)行圖像的選擇也可選擇默認(rèn)圖像(dog.jpg)單擊開始,如果圖像不能立刻顯示,
21、那么再單擊一次就會(huì)出現(xiàn)圖像魔板了。如圖3.1所示:</p><p> 圖3-1初級(jí)的圖像玩法圖</p><p> 如果想要選擇了一幅新的圖像,只要單擊選擇圖像中的選擇一幅新圖像就可出現(xiàn)如下界面,如圖3.3:</p><p> 圖3-2圖像選擇界面</p><p> 在選擇了新圖像之后單擊開始按鈕,就會(huì)有一張新的圖片替換了剛剛所使用的默
22、認(rèn)圖像了。此時(shí)如果再選擇高級(jí)的模式圖像就會(huì)被分成16快隨即小魔板,如圖3.4所示:</p><p> 圖3-3高級(jí)的圖像玩法圖</p><p> 由上圖的底部可以看出還有一個(gè)計(jì)時(shí)器功能,當(dāng)你開始移動(dòng)魔板是它就開始計(jì)時(shí)直至完成魔板的正確排列。</p><p><b> 5 測試</b></p><p><b&g
23、t; 5.1 測試方案</b></p><p> 我以最簡單的方案初級(jí)的數(shù)字玩法進(jìn)行了測試如圖4.1:</p><p><b> 圖4-1測試方案圖</b></p><p><b> 5.2 測試結(jié)果</b></p><p> 點(diǎn)擊開始后,經(jīng)過了109秒的努力,我終于把魔板游戲
24、給測試完成了。我親自驗(yàn)證了這神奇的一刻,如圖4.2:</p><p><b> 圖4-2測試結(jié)果圖</b></p><p> 這就是魔板游戲完成后的界面,系統(tǒng)會(huì)提示你成功了!以表示祝賀,并且底部還會(huì)有你完成本次游戲所用的時(shí)間。</p><p><b> 6 小結(jié)</b></p><p> 這
25、學(xué)期我們專業(yè)課開設(shè)了Java語言,初步了解java語言的特點(diǎn)及相關(guān)知識(shí),雖然之學(xué)了很短一段時(shí)間,但還是在其中學(xué)到很多東西的。</p><p> 這學(xué)期老師通知要做java課程設(shè)計(jì)之后,我就到圖書館查閱資料,借相關(guān)的書籍,在網(wǎng)上查找了一些資料開始了我的課程設(shè)計(jì)之旅。</p><p> 在制作過程中,遇到了自己從所未有的困難,由于java學(xué)的不是那么透徹,因此在分析程序代碼必然會(huì)遇到很大的
26、困擾。</p><p> 其中遇到了一個(gè)問題,就是使用圖像玩法的時(shí)候選擇圖片選不到,一開始不知道是什么問題但是通過翻閱書籍,上網(wǎng)查閱資料,同學(xué)之間的相互討論,原來是格式不對,它只能選擇一些小規(guī)模的圖片如dog.jpg等格式而電腦的圖片都是JPEG格式,了解這點(diǎn)之后這些問題也就迎刃而解了。但重要的這不是最困難的地方,難得地方在運(yùn)行程序上面,當(dāng)把代碼輸入完之后,無法運(yùn)行,經(jīng)受著“百般折磨”后,各種思考,才把這部分解
27、決了,確實(shí)很不容易,還得歸功于同學(xué)的團(tuán)結(jié)。</p><p> 這次的課程設(shè)計(jì)為我提供了一次鍛煉的機(jī)會(huì),經(jīng)過開發(fā)這個(gè)系統(tǒng),這不僅僅是一次課程設(shè)計(jì),不僅僅是學(xué)會(huì)了一門開發(fā)語言,更重要的是在學(xué)習(xí)的過程中,所有的問題要自已去面對,有問題也只有靠自已去解決,在學(xué)習(xí)和解決這些困難的過程中提高了我學(xué)習(xí)的能力、解決問題的能力和實(shí)際工作的能力,學(xué)到了許多書本以外的知識(shí)</p><p> 經(jīng)歷過這次以后,
28、我對前面學(xué)過的許多課程有了更為深刻的理解,也是我對這三年所學(xué)的東西的一個(gè)綜合體現(xiàn)。然而這次設(shè)計(jì)讓我感受頗深,讓我真正體會(huì)到了在整個(gè)過程給我?guī)淼臒o奈與快樂。</p><p> 看來學(xué)好java這門語言真的要花上很大的努力,而且它的用處太大了?;叵脒@兩周所經(jīng)歷的,自己所收獲到的遠(yuǎn)遠(yuǎn)超越自己受到的痛苦,我體會(huì)了“不經(jīng)歷風(fēng)雨怎么見彩虹”的真正內(nèi)涵,這次課程設(shè)計(jì)讓我學(xué)到了更多東西,我會(huì)更加努力的去學(xué)習(xí)java語言以及其
29、他語言,更加充實(shí)自己的大腦,使自己更加豐富,將來成為一個(gè)有用的人,為社會(huì)作貢獻(xiàn)的人。</p><p><b> 參考文獻(xiàn)</b></p><p> [1]耿祥義,張躍平. Java2實(shí)用教程(第三版)[M] . 北京:清華大學(xué)出版社, 2006 [2]耿祥義. Java課程設(shè)計(jì)(第三版)[M] . 北京:清華大學(xué)出版社, 2004<
30、/p><p> [3]張躍平.Java2實(shí)用教程實(shí)驗(yàn)指導(dǎo)與習(xí)題解答(第三版)[M]. 北京:清華大學(xué)出版社, 2004</p><p><b> ……</b></p><p><b> 附 錄</b></p><p><b> 附錄1 源程序清單</b></p&
31、gt;<p> 附錄1.1PuzzleGame模塊源程序</p><p> import java.awt.*;</p><p> import java.awt.event.*;</p><p> import javax.swing.*;</p><p> import java.io.*;</p>
32、<p> import javax.swing.filechooser.*;</p><p> public class PuzzleGame extends JFrame implements ActionListener{</p><p> PuzzlePad puzzlePad;</p><p> JMenuBar bar;</p>
33、;<p> JMenu gradeMenu,choiceImage;</p><p> JMenu yinyue;</p><p> JMenuItem oneGrade,twoGrade,newImage,defaultImage;</p><p> JMenuItem bofang;</p><p> JRadi
34、oButton digitPlay,imagePlay;</p><p> ButtonGroup group=null;</p><p> JButton startButton;</p><p> Image image;</p><p> Toolkit tool;</p><p> public Pu
35、zzleGame(){</p><p> tool=getToolkit();</p><p> bar=new JMenuBar();</p><p> gradeMenu=new JMenu("選擇級(jí)別");</p><p> yinyue=new JMenu("音樂");</p>
36、;<p> choiceImage=new JMenu("選擇圖像");</p><p> oneGrade=new JMenuItem("初級(jí)");</p><p> twoGrade=new JMenuItem("高級(jí)");</p><p> newImage=new JMenuI
37、tem("選擇一幅新圖像");</p><p> defaultImage=new JMenuItem("使用默認(rèn)圖像"); </p><p> bofang=new JMenuItem("播放");</p><p> yinyue.add(bofang);</p><p>
38、 gradeMenu.add(oneGrade);</p><p> gradeMenu.add(twoGrade);</p><p> choiceImage.add(newImage);</p><p> choiceImage.add(defaultImage);</p><p> bar.add(gradeMenu);<
39、/p><p> bar.add(yinyue);</p><p> bar.add(choiceImage);</p><p> setJMenuBar(bar);</p><p> bofang.addActionListener(this);</p><p> oneGrade.addActionListen
40、er(this);</p><p> twoGrade.addActionListener(this);</p><p> newImage.addActionListener(this);</p><p> defaultImage.addActionListener(this);</p><p> startButton=new
41、JButton("開始");</p><p> startButton.addActionListener(this);</p><p> group=new ButtonGroup();</p><p> digitPlay=new JRadioButton("數(shù)字玩法",true);</p><p
42、> imagePlay=new JRadioButton("圖像玩法",false);</p><p> group.add(digitPlay);</p><p> group.add(imagePlay);</p><p> puzzlePad=new PuzzlePad();</p><p> puz
43、zlePad.setGrade(1);</p><p> puzzlePad.setIsDigitPlay(); </p><p> add(puzzlePad,BorderLayout.CENTER);</p><p> JPanel pNorth=new JPanel();</p><p> pNor
44、th.add(digitPlay);</p><p> pNorth.add(imagePlay); </p><p> pNorth.add(startButton);</p><p> pNorth.add(new JLabel("如果圖像不能立刻顯示,請?jiān)賳螕粢淮伟磁?quot;));</p><p> add(pNo
45、rth,BorderLayout.NORTH);</p><p> add(puzzlePad.getHandleMove(),BorderLayout.SOUTH);</p><p> validate();</p><p> setVisible(true);</p><p> setBounds(100,50,550,380);
46、</p><p> setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);</p><p><b> try{</b></p><p> image=tool.createImage(new File("dog.jpg").toURI().toURL());</p>
47、<p> puzzlePad.setImage(image);</p><p><b> }</b></p><p> catch(Exception exp){} </p><p><b> }</b></p><p> public void actionPerformed
48、(ActionEvent e){</p><p> if(e.getSource()==startButton){</p><p> if(digitPlay.isSelected()){</p><p> puzzlePad.setIsDigitPlay();</p><p><b> }</b></p&
49、gt;<p> else if(imagePlay.isSelected()){</p><p> puzzlePad.setImage(image);</p><p> puzzlePad.setIsImagePlay();</p><p><b> }</b></p><p><b>
50、 } </b></p><p> else if(e.getSource()==bofang){</p><p> Sound s=new Sound("D:\\wcq\\fu.wav");</p><p> s.start();</p><p><b> }</b></p
51、><p> else if(e.getSource()==oneGrade){</p><p> puzzlePad.setGrade(1);</p><p><b> }</b></p><p> else if(e.getSource()==twoGrade){</p><p> puz
52、zlePad.setGrade(2);</p><p><b> }</b></p><p> else if(e.getSource()==newImage){</p><p> FileNameExtensionFilter filter = new FileNameExtensionFilter(</p><p&
53、gt; "JPG & GIF Images", "jpg", "gif");</p><p> JFileChooser chooser=new JFileChooser();</p><p> chooser.setFileFilter(filter); </p><p> int sta
54、te=chooser.showOpenDialog(null);</p><p> File file=chooser.getSelectedFile();</p><p> if(file!=null&&state==JFileChooser.APPROVE_OPTION){</p><p><b> try{</b>&
55、lt;/p><p> image=tool.createImage(file.toURI().toURL());</p><p> puzzlePad.setImage(image);</p><p><b> }</b></p><p> catch(Exception exp){} </p>&l
56、t;p><b> }</b></p><p><b> }</b></p><p> else if(e.getSource()==defaultImage){</p><p><b> try{</b></p><p> image=tool.createIm
57、age(new File("dog.jpg").toURI().toURL());</p><p> puzzlePad.setImage(image);</p><p><b> }</b></p><p> catch(Exception exp){} </p><p><b>
58、 }</b></p><p><b> }</b></p><p> public static void main(String args[]){</p><p> new PuzzleGame();</p><p><b> } </b></p><
59、p><b> }</b></p><p> 附錄1.2PuzzlePad模塊源程序</p><p> import javax.swing.*;</p><p> import java.io.*;</p><p> import java.util.*;</p><p> im
60、port java.awt.*;</p><p> public class PuzzlePad extends JPanel{</p><p> Point[][] point;</p><p> Block[][] block;</p><p> int distance = 56,grade,m = 3,n =3;</p&
61、gt;<p> HandleMove handleMove;</p><p> HandleImage handleImage;</p><p> VerifySuccess verifySuccess;</p><p> Image image;</p><p> boolean isDigitPlay;</p
62、><p> public PuzzlePad(){</p><p> setBackground(Color.gray);</p><p> setLayout(null);</p><p> handleMove = new HandleMove();</p><p> handleMove.initSpend
63、Time();</p><p> handleImage = new HandleImage();</p><p> verifySuccess = new VerifySuccess();</p><p> handleMove.setVerifySuccess(verifySuccess);</p><p><b> }
64、</b></p><p> public HandleMove getHandleMove(){</p><p> return handleMove;</p><p><b> }</b></p><p> public void setImage(Image image){</p>
65、<p> this.image = image;</p><p><b> }</b></p><p> public void setGrade(int grade){</p><p> this.grade = grade;</p><p> if(grade == 1){</p>
66、<p><b> m = 4;</b></p><p><b> n = 4;</b></p><p><b> }</b></p><p> else if(grade == 2){</p><p><b> m = 5;</b>&l
67、t;/p><p><b> n = 5;</b></p><p><b> }</b></p><p><b> }</b></p><p> public int getGrade(){</p><p> return grade;</p&
68、gt;<p><b> }</b></p><p> private void needInit(){</p><p> handleMove.initSpendTime();</p><p> removeAll();</p><p> point = new Point[m][n];</
69、p><p> block = new Block[m][n];</p><p> int Hspace = distance,Vspace = distance;</p><p> for (int i = 0;i<m;i++){</p><p> for(int j = 0;j<n;j++){</p><
70、p> point[i][j] = new Point(Hspace,Vspace);</p><p> Hspace = Hspace + distance;</p><p><b> }</b></p><p> Hspace = distance;</p><p> Vspace = Vspace +
71、 distance;</p><p><b> }</b></p><p> handleMove.setPoint(point);</p><p> verifySuccess.setPoint(point);</p><p> handleMove.setVerifySuccess(verifySuccess
72、);</p><p> int k = 0;</p><p> for(int i = 0;i < m;i++){</p><p><b> if(i<m-1)</b></p><p> for(int j =0;j<n;j++){</p><p> block[i][
73、j] = new Block();</p><p> block[i][j].addMouseListener(handleMove);</p><p><b> k++;</b></p><p><b> }</b></p><p><b> else</b><
74、/p><p> for(int j = 0;j<n-1;j++){</p><p> block[i][j] = new Block();</p><p> block[i][j].addMouseListener(handleMove);</p><p><b> k++;</b></p>&l
75、t;p><b> }</b></p><p><b> }</b></p><p> for(int i = 0;i < m;i++){</p><p> if(i < m-1)</p><p> for(int j = 0;j < n;j++){</p>
76、;<p> add(block[i][j]);</p><p> block[i][j].setSize(distance,distance);</p><p> block[i][j].setLocation(point[i][j].getX(),point[i][j].getY());</p><p> block[i][j].setAtP
77、oint(point[i][j]);</p><p> point[i][j].setBlock(block[i][j]);</p><p> point[i][j].setHaveBlock(true);</p><p><b> }</b></p><p><b> else</b>&l
78、t;/p><p> for(int j = 0; j < n-1;j++){</p><p> add(block[i][j]);</p><p> block[i][j].setSize(distance,distance);</p><p> block[i][j].setLocation(point[i][j].getX(),
79、point[i][j].getY());</p><p> block[i][j].setAtPoint(point[i][j]);</p><p> point[i][j].setBlock(block[i][j]);</p><p> point[i][j].setHaveBlock(true);</p><p><b>
80、 }</b></p><p><b> }</b></p><p><b> }</b></p><p> public void setIsDigitPlay(){</p><p> needInit();</p><p> isDigitPlay
81、= true;</p><p> ArrayList<Integer>numberList =new ArrayList<Integer>();</p><p> for(int k =0;k<m*n-1;k++){</p><p> numberList.add(k+1);</p><p><b&g
82、t; }</b></p><p> Object[]object = numberList.toArray();</p><p> verifySuccess.setObject(object);</p><p> Collections.shuffle(numberList);</p><p> int k = 0;&
83、lt;/p><p> for(int i =0; i<m;i++){</p><p><b> if(i<m-1)</b></p><p> for(int j= 0;j<n;j++){</p><p> block[i][j].setObject(numberList.get(k));</p
84、><p><b> k++;</b></p><p><b> }</b></p><p><b> else</b></p><p> for(int j = 0;j< n-1;j++){</p><p> block[i][j].setO
85、bject(numberList.get(k));</p><p><b> k++;</b></p><p><b> }</b></p><p><b> }</b></p><p> repaint();</p><p><b>
86、 }</b></p><p> public void setIsImagePlay(){</p><p> needInit();</p><p> isDigitPlay = false;</p><p> ArrayList<Image>imageList = new ArrayList<Imag
87、e>();</p><p> Image[] blockImage = handleImage.getImages(image,m,n);</p><p> for(int k=0;k<blockImage.length-1;k++){</p><p> imageList.add(blockImage[k]);</p><p&
88、gt;<b> }</b></p><p> Object[]object = imageList.toArray();</p><p> verifySuccess.setObject(object);</p><p> Collections.shuffle(imageList);</p><p> int
89、 k = 0;</p><p> for(int i = 0;i<m;i++){</p><p><b> if(i<m-1)</b></p><p> for(int j = 0;j<n;j++){</p><p> block[i][j].setObject(imageList.get(k)
90、);</p><p> block[i][j].repaint();</p><p> block[i][j].setBorder(null);</p><p><b> k++;</b></p><p><b> }</b></p><p><b> e
91、lse</b></p><p> for(int j=0;j<n-1;j++){</p><p> block[i][j].setObject(imageList.get(k));</p><p> block[i][j].repaint();</p><p> block[i][j].setBorder(null)
92、;</p><p><b> k++;</b></p><p><b> }</b></p><p><b> }</b></p><p> repaint();</p><p><b> }</b></p>
93、<p> public void paintComponent(Graphics g){</p><p> super.paintComponent(g);</p><p> if(isDigitPlay == false)</p><p><b> try{</b></p><p> g.draw
94、Image(image,20+distance*(m+1),point[0][0].getY(), distance*m,distance*n,this);</p><p><b> }</b></p><p> catch(Exception exp){}</p><p><b> }</b></p>
95、<p><b> }</b></p><p> 附錄1.3Block類模塊源程序</p><p> import javax.swing.*;</p><p> import java.awt.*;</p><p> public class Block extends JTextField{<
96、;/p><p> Point point;</p><p> Object object;</p><p><b> Block(){</b></p><p> setEditable(false);</p><p> setHorizontalAlignment(JTextField.CE
97、NTER);</p><p> setForeground(Color.blue);</p><p><b> }</b></p><p> public void setAtPoint(Point p){</p><p><b> point=p;</b></p><p
98、><b> }</b></p><p> public Point getAtPoint(){</p><p> return point;</p><p><b> }</b></p><p> public void setObject(Object object){</p
99、><p> this.object=object;</p><p> if(object instanceof Integer){</p><p> Integer number=(Integer)object;</p><p> setText(""+number.intValue());</p>&l
100、t;p><b> }</b></p><p> else if(object instanceof Image){</p><p> repaint();</p><p><b> }</b></p><p><b> }</b></p><
101、p> public Object getObject(){</p><p> return object;</p><p><b> }</b></p><p> public void paintComponent(Graphics g){</p><p> super.paintComponent(g
102、);</p><p> int w=getBounds().width;</p><p> int h=getBounds().height;</p><p><b> try{</b></p><p> g.drawImage((Image)object,0,0,w,h, this);</p>&
103、lt;p><b> }</b></p><p> catch(Exception exp){}</p><p><b> }</b></p><p><b> }</b></p><p> 附錄1.4Point類模塊源程序</p><p>
104、; public class Point{</p><p><b> int x,y;</b></p><p> boolean haveBlock;</p><p> Block block=null;</p><p> public Point(int x,int y){</p><p&
105、gt;<b> this.x=x;</b></p><p><b> this.y=y;</b></p><p><b> }</b></p><p> public boolean isHaveBlock(){</p><p> return haveBlock;&
106、lt;/p><p><b> }</b></p><p> public void setHaveBlock(boolean boo){</p><p> haveBlock=boo;</p><p><b> }</b></p><p> public int get
107、X(){</p><p><b> return x;</b></p><p><b> }</b></p><p> public int getY(){</p><p><b> return y;</b></p><p><b>
108、 }</b></p><p> public boolean equals(Point p){</p><p> if(p.getX()==this.getX()&&p.getY()==this.getY())</p><p> return true;</p><p><b> else<
109、;/b></p><p> return false;</p><p><b> }</b></p><p> public void setBlock(Block block){</p><p> this.block=block;</p><p><b> }<
110、/b></p><p> public Block getBlock(){</p><p> return block;</p><p><b> }</b></p><p><b> }</b></p><p> 附錄1.5HandleImage類模塊源程序
111、</p><p> import java.awt.*;</p><p> import javax.swing.*;</p><p> import java.awt.image.*;</p><p> public class HandleImage extends JComponent{</p><p>
112、 int imageWidth,imageHeight;</p><p> Toolkit tool;</p><p> HandleImage(){</p><p> tool=getToolkit();</p><p><b> }</b></p><p> public Imag
113、e[]getImages(Image image,int rows,int colums){</p><p> Image[]blockImage=new Image[rows*colums];</p><p><b> try{</b></p><p> imageWidth=image.getWidth(this);</p>
114、;<p> imageHeight=image.getHeight(this);</p><p> int w=imageWidth/colums;</p><p> int h=imageHeight/rows;</p><p><b> int k=0;</b></p><p> PixelG
115、rabber pg=null;</p><p> ImageProducer ip=null;</p><p> for(int i=0;i<rows;i++){</p><p> for(int j=0;j<colums;j++){</p><p> int pixels[]=new int[w*h];</p>
116、;<p> pg=new PixelGrabber(image,j*w,i*h,w,h,pixels,0,w);</p><p> pg.grabPixels();</p><p> ip=new MemoryImageSource(w,h,pixels,0,w);</p><p> blockImage[k]=tool.createImage
117、(ip);</p><p><b> k++;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> catch(Exception e
118、e){}</p><p> return blockImage;</p><p><b> }</b></p><p><b> }</b></p><p> 附錄1.6HandleMove類模塊源程序</p><p> import java.awt.event.
119、*;</p><p> import java.awt.*;</p><p> import javax.swing.*;</p><p> public class HandleMove extends JPanel implements MouseListener,ActionListener{</p><p> Point[][
120、]point;</p><p> int spendTime=0;</p><p> javax.swing.Timer recordTime;</p><p> JTextField showTime;</p><p> VerifySuccess verify;</p><p> HandleMove()
121、{</p><p> recordTime=new javax.swing.Timer(1000, this);</p><p> showTime=new JTextField(16);</p><p> showTime.setEditable(false);</p><p> showTime.setHorizontalAlig
122、nment(JTextField.CENTER);</p><p> showTime.setFont(new Font("楷體_GB2312",Font.BOLD,16));</p><p> JLabel hitMess=new JLabel("用鼠標(biāo)單擊方塊",JLabel.CENTER);</p><p> hi
123、tMess.setFont(new Font("楷體_GB2312",Font.BOLD,18));</p><p> add(hitMess);</p><p> add(showTime);</p><p> setForeground(Color.red);</p><p> setBackground(Co
124、lor.yellow);</p><p><b> }</b></p><p> public void setPoint(Point[][]p){</p><p><b> point=p;</b></p><p><b> }</b></p><
125、p> public void initSpendTime(){</p><p> recordTime.stop();</p><p> spendTime=0;</p><p> showTime.setText(null);</p><p><b> }</b></p><p>
126、; public void setVerifySuccess(VerifySuccess verify){</p><p> this.verify=verify;</p><p><b> }</b></p><p> public void mousePressed(MouseEvent e){</p><p&g
127、t; recordTime.start();</p><p> Block block=null;</p><p> block=(Block)e.getSource();</p><p> int w=block.getBounds().width;</p><p> int h=block.getBounds().height;
128、</p><p> int startI=-1,startJ=-1,endI=-1,endJ=-1;</p><p> Point startPoint = block.getAtPoint();</p><p> Point endPoint=null;</p><p> for(int i=0;i<point[0].leng
129、th;i++){</p><p> for(int j=0;j<point[0].length;j++)</p><p> if(point[i][j].equals(startPoint)){</p><p><b> startI=i;</b></p><p><b> startJ=j;&l
130、t;/b></p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p> for(int i=0;i<point.length;i++){</p><p>
131、; for(int j=0;j<point[0].length;j++)</p><p> if(point[i][j].isHaveBlock()==false){</p><p><b> endI=i;</b></p><p><b> endJ=j;</b></p><p>
132、 endPoint=point[i][j];</p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p> boolean moveCondition1=Math.abs(endI-star
133、tI)==1&&endJ==startJ;</p><p> boolean moveCondition2=Math.abs(endJ-startJ)==1&&endI==startI;</p><p> if(moveCondition1||moveCondition2){</p><p> block.setLocation
溫馨提示
- 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. 眾賞文庫僅提供信息存儲(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 課程設(shè)計(jì)--魔板游戲設(shè)計(jì)
- 紙牌游戲-課程設(shè)計(jì)報(bào)告
- 掃雷游戲課程設(shè)計(jì)報(bào)告
- 掃雷游戲課程設(shè)計(jì)報(bào)告
- java課程設(shè)計(jì)-猜數(shù)游戲課程設(shè)計(jì)報(bào)告
- 基于java的魔板游戲設(shè)計(jì)與開發(fā)
- java課程設(shè)計(jì)-蜘蛛紙牌游戲設(shè)計(jì)課程設(shè)計(jì)報(bào)告
- 24點(diǎn)游戲課程設(shè)計(jì)報(bào)告
- java火柴游戲課程設(shè)計(jì)報(bào)告
- vb打字游戲課程設(shè)計(jì)報(bào)告
- 《猜拳小游戲》課程設(shè)計(jì)報(bào)告
- c課程設(shè)計(jì)報(bào)告-打字游戲
- 打磚塊游戲課程設(shè)計(jì)報(bào)告
- 24點(diǎn)游戲課程設(shè)計(jì)報(bào)告
- 猜數(shù)字游戲課程設(shè)計(jì)報(bào)告
- java課程設(shè)計(jì)--掃雷游戲報(bào)告
- 課程設(shè)計(jì)報(bào)告--猜數(shù)字游戲
- vb課程設(shè)計(jì)報(bào)告---打字游戲
- c語言課程設(shè)計(jì)報(bào)告---游戲設(shè)計(jì)
- vc++課程設(shè)計(jì)報(bào)告--對抗游戲
評論
0/150
提交評論