2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩23頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論