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

下載本文檔

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

文檔簡介

1、<p>  《面向?qū)ο蟪绦蛟O(shè)計》</p><p><b>  課程設(shè)計報告</b></p><p><b>  目 錄</b></p><p>  1設(shè)計目的及內(nèi)容1</p><p>  1.1課程設(shè)計目的1</p><p>  1.2 課程設(shè)計內(nèi)容1&

2、lt;/p><p><b>  2系統(tǒng)需求分析1</b></p><p>  2.1 系統(tǒng)目標(biāo)1</p><p>  2.2 主體功能1</p><p>  2.3 開發(fā)環(huán)境1</p><p><b>  3概要設(shè)計2</b></p><p> 

3、 3.1 系統(tǒng)的功能模塊劃分2</p><p>  3.1.1 PuzzleFrame.java類模塊2</p><p>  3.1.2 PuzzlePad.java類模塊2</p><p>  3.1.3 SquarePoint.java類模塊3</p><p>  3.2 系統(tǒng)流程圖3</p><p> 

4、 4設(shè)計過程與分析5</p><p>  5設(shè)計結(jié)果與測試6</p><p><b>  參考文獻(xiàn):13</b></p><p><b>  1設(shè)計目的及內(nèi)容</b></p><p><b>  1.1課程設(shè)計目的</b></p><p>  利用

5、所學(xué)高級語言的語法特性,結(jié)合數(shù)據(jù)結(jié)構(gòu)算法、網(wǎng)絡(luò)知識、文件處理和數(shù)據(jù)庫等知識完成綜合題目的設(shè)計和代碼實現(xiàn),并培養(yǎng)鍛煉分析程序、撰寫報告等能力。</p><p>  1.2 課程設(shè)計內(nèi)容</p><p> ?。?)設(shè)計一款經(jīng)典的智力游戲,魔板游戲。魔板由3*3或4*4個格子組成。對于3*3魔板,在前8個格子里隨即放置8個編號1-8的方塊,最后一個格子是未放置方塊的空格子;對于4*4的魔板,在前

6、15格子里隨即放置15編號1-15的方塊,最后一個格子是未放置方塊的空格子。</p><p>  (2)用鼠標(biāo)單擊任何與空格子水平或垂直相鄰的方塊可以把該方塊移入空格子,而當(dāng)前方塊移動之前所在的格子成為空格子。通過不斷地移動方塊可以將方塊一行一行地按數(shù)字順序排好,例如,對于3*3格子組成的魔板,要求方塊最后排列的順序如圖6.1所示。</p><p> ?。?)魔板游戲也可以使用圖像來代替數(shù)

7、字。例如,對于4*4的魔板,將一幅圖像分成4*4幅小圖像,除去最后一幅小圖像(圖像的右下角),將其余各幅小圖像打亂順序后放在魔板方塊上,最終目標(biāo)是通過移動方塊恢復(fù)原始圖像(不包括圖像的右下角)。</p><p><b>  2系統(tǒng)需求分析</b></p><p><b>  2.1 系統(tǒng)目標(biāo)</b></p><p>  設(shè)

8、計GUI界面的魔板游戲程序。</p><p><b>  2.2 主體功能</b></p><p>  這個程序定義了一些組件,工具欄按鈕,文本區(qū)和菜單。魔板游戲程序設(shè)計通過PuzzleFrame.java、PuzzlePad.java、SquarePoint.java 3個類來實現(xiàn)魔板游戲的整體功能。</p><p><b>  2

9、.3 開發(fā)環(huán)境</b></p><p>  操作系統(tǒng):Microsoft Windows 7</p><p>  開發(fā)工具:jdk1.6.0_22 、MyEclipse8.5</p><p><b>  3概要設(shè)計</b></p><p>  3.1 系統(tǒng)的功能模塊劃分</p><p>

10、;  在設(shè)計魔板游戲時,需要編寫3個java源文件:PuzzleFrame.java、PuzzlePad.java、SquarePoint.java。</p><p>  魔板游戲除了需要編寫的上述3個Java源文件所給出的類外,還需要Java系統(tǒng)提供的一些重要的類,如JMenuItem、JButton和JRadioButton等類。</p><p>  3.1.1 PuzzleFrame

11、.java類模塊</p><p>  PuzzleFrame類負(fù)責(zé)創(chuàng)建魔板游戲的主窗口,該類含有main方法,程序從該類開始。PuzzleFrame類的成員變量中有4種重要類型的對象:PuzzlePad、JmenuItem、JRadioButton和JButton。PuzzleFrame類的主要成員的作用將在后面的詳細(xì)設(shè)計中闡述,PuzzleFrame類主要成員變量(屬性)和主要方法如表所示。</p>

12、<p>  表格1 PuzzleFrame.java主要成員變量(屬性)</p><p>  表格 2 PuzzleFrame.java主要方法</p><p>  3.1.2 PuzzlePad.java類模塊</p><p>  PuzzlePad類創(chuàng)建的對象是PuzzleFrame類最重要的成員之一,代表“魔板”。該類的成員變量中有5種重要類

13、型的對象:Point、Block和Image。PuzzlePad類類主要成員變量(屬性)和主要方法如表所示。</p><p>  表格 3 PuzzlePad.java主要成員變量(屬性)</p><p>  表格 4 PuzzlePad.java主要方法</p><p>  3.1.3 SquarePoint.java類模塊</p><p&

14、gt;  SquarePoint類負(fù)責(zé)創(chuàng)建確定位置的對象,使用Point對象可以確定Block對象在PuzzlePad對象中的位置,即確定“方塊”在“魔板”中的位置。SquarePoint.java類主要成員變量(屬性)和主要方法如表所示。</p><p>  表格5 SquarePoint.java主要成員變量(屬性)</p><p>  表格6 SquarePoint.java主要

15、方法</p><p><b>  3.2 系統(tǒng)流程圖</b></p><p>  根據(jù)對模板游戲的功能分析,設(shè)計得到魔板游戲總流程,如圖所示:</p><p>  圖 1 系統(tǒng)流程圖</p><p><b>  4設(shè)計過程與分析</b></p><p>  由于我們要將這個

16、游戲?qū)懗梢粋€應(yīng)用程序,所以首先要設(shè)計一下游戲的框架和菜單。 </p><p>  游戲的框架采用標(biāo)準(zhǔn)的Windows框架,在上面有標(biāo)題欄、菜單欄,以方便玩家控制游戲。我們應(yīng)該先做好這一部分。菜單欄包括魔板游戲??蚣苤虚g嵌入顯示單選按鈕和按鈕。</p><p>  然后,應(yīng)該在一個面板上構(gòu)建游戲的界面,將這個面板嵌入到游戲的大框架里。這樣整個游戲的界面就出來了。 <

17、/p><p>  對菜單以及界面上的控制按鈕進(jìn)行響應(yīng),并相應(yīng)地來控制游戲。這時我們需要添加對菜單和按鈕的事件響應(yīng)方法。 </p><p>  在游戲面板構(gòu)建好這后,我們應(yīng)該讓游戲能夠玩起來,這一部分主要是編寫一些算法,用來控制游戲。這里我們還應(yīng)該增加對鼠標(biāo)事件的響應(yīng),讓玩家用鼠標(biāo)控制游戲。</p><p>  為了實現(xiàn)魔板游戲的所有需求,設(shè)計應(yīng)分為三個部分:首

18、先需要設(shè)計此魔板游戲的的界面以及其框架布局。魔板游戲的基本框架從上由下依次是、菜單欄、游戲操作主界面。</p><p>  菜單欄包含了魔板游戲一個菜單選項,并對各個菜單項以及界面上的小方格控制按鈕進(jìn)行事件響應(yīng),相應(yīng)地來成功控制魔板游戲中的有關(guān)操作。其次則需設(shè)計魔板游戲的“拼圖”功能設(shè)計,需要設(shè)計在主界面中加載大圖片并將其分割到9個或16個小方格里,在設(shè)置方格為按鈕事件響應(yīng),然后編寫算法控制小方格的移動,移動方向

19、總是朝沒有圖案的空方格上移動,同時還需要在游戲中設(shè)置預(yù)覽功能,讓玩家在游戲的任何時候都能預(yù)覽他們要完成的拼圖。 </p><p>  魔板游戲的程序由三個類構(gòu)成,其中類PuzzleFrame包含main()方法; PuzzlePad類中則含五個方法:方法PuzzlePad()、方法actionPerformed()、方法隨機(jī)排列數(shù)字()、方法隨機(jī)排列圖像()和方法paintComponent 

20、();SquarePoint類中則包含了方法SquarePoint(int x,int y)</p><p>  此魔板游戲由三個類實現(xiàn)所有設(shè)計需求。</p><p>  第一個類PuzzleFrame定義了一個main()方法,創(chuàng)建了PuzzleFrame類實例,設(shè)置了程序的入口同時也設(shè)置了魔板游戲的Windows窗口主界面的菜單欄以及主界面分散按鈕上的各個連接。&#

21、160;</p><p>  第二個類SquarePoint包含了一個SquarePoint(int x,int y)方法,這個方法控制主界面上分散的小圖片受到鼠標(biāo)的按鈕響應(yīng)后圖片的移動,它控制小圖片往沒有圖片的空位置移動。 </p><p>  第三個類PuzzlePad中則含五個方法:方法PuzzlePad()添加圖片和設(shè)置小方格的布局;方法actionP

22、erformed()實現(xiàn)小方格的移動規(guī)則;方法隨機(jī)排列數(shù)字()和方法隨機(jī)排列圖像()實現(xiàn)點擊開始玩按鈕時,隨機(jī)產(chǎn)生一個圖片和數(shù)字的排列;方法paintComponent()實現(xiàn)小方格中黑色小方格功能實現(xiàn)。</p><p><b>  5設(shè)計結(jié)果與測試</b></p><p>  圖 2 初級魔板游戲數(shù)字玩法</p><p>  import

23、javax.swing.*;</p><p>  import java.awt.*;</p><p>  public class Block extends JTextField{</p><p>  Point point;</p><p>  Object object;</p><p><b>  

24、Block(){</b></p><p>  setEditable(false);</p><p>  setHorizontalAlignment(JTextField.CENTER);</p><p>  setFont(new Font("Arial",Font.BOLD,16));</p><p> 

25、 setForeground(Color.blue);</p><p><b>  } </b></p><p>  public void setAtPoint(Point p){</p><p><b>  point=p;</b></p><p><b>  }</b>&

26、lt;/p><p>  public Point getAtPoint(){</p><p>  return point;</p><p><b>  }</b></p><p>  public void setObject(Object object){</p><p>  this.objec

27、t=object;</p><p>  if(object instanceof Integer){</p><p>  Integer number=(Integer)object;</p><p>  setText(""+number.intValue());</p><p><b>  }</b&g

28、t;</p><p>  else if(object instanceof Image){</p><p>  repaint();</p><p><b>  }</b></p><p><b>  }</b></p><p>  public Object getObj

29、ect(){</p><p>  return object;</p><p><b>  }</b></p><p>  public void paintComponent(Graphics g){</p><p>  super.paintComponent(g); </p><p>  

30、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><p><b>  }</

31、b></p><p>  catch(Exception exp){}</p><p><b>  }</b></p><p><b>  }</b></p><p>  圖 3 高級魔板游戲數(shù)字玩法 </p><p>  public class Point{&l

32、t;/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>&

33、lt;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;</

34、p><p><b>  }</b></p><p>  public void setHaveBlock(boolean boo){</p><p>  haveBlock=boo;</p><p><b>  }</b></p><p>  public int getX(){

35、</p><p><b>  return x;</b></p><p><b>  }</b></p><p>  public int getY(){</p><p><b>  return y;</b></p><p><b>  }&

36、lt;/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</b&

37、gt;</p><p>  return false; </p><p><b>  }</b></p><p>  public void setBlock(Block block){</p><p>  this.block=block; </p><p><b>  }</

38、b></p><p>  public Block getBlock(){</p><p>  return block;</p><p><b>  }</b></p><p>  圖 4 初級魔板游戲圖像玩法</p><p>  public Image [] getImages(Im

39、age 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><p> 

40、 imageHeight=image.getHeight(this);</p><p>  int w=imageWidth/colums; </p><p>  int h=imageHeight/rows;</p><p><b>  int k=0; </b></

41、p><p>  PixelGrabber 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><

42、;p>  int pixels[]= new int[w*h]; </p><p>  pg=new PixelGrabber(image,j*w,i*h,w,h,pixels,0,w); </p><p>  pg.grabPixels(); </p>&l

43、t;p>  ip=new MemoryImageSource(w,h,pixels,0,w);</p><p>  blockImage[k]=tool.createImage(ip); </p><p>  k++; </p><p><b>  }</b></p><p><b&g

44、t;  }</b></p><p><b>  }</b></p><p>  圖 5 高級魔板游戲圖像玩法</p><p>  public void actionPerformed(ActionEvent e){</p><p>  if(e.getSource()==startButton){<

45、/p><p>  if(digitPlay.isSelected()){</p><p>  puzzlePad.setIsDigitPlay();</p><p><b>  }</b></p><p>  else if(imagePlay.isSelected()){</p><p>  puz

46、zlePad.setImage(image);</p><p>  puzzlePad.setIsImagePlay();</p><p><b>  }</b></p><p><b>  } </b></p><p>  else if(e.getSource()==oneGrade){<

47、/p><p>  puzzlePad.setGrade(1);</p><p><b>  }</b></p><p>  else if(e.getSource()==twoGrade){</p><p>  puzzlePad.setGrade(2);</p><p><b>  }&l

48、t;/b></p><p>  else if(e.getSource()==newImage){</p><p>  FileNameExtensionFilter filter = new FileNameExtensionFilter(</p><p>  "JPG & GIF Images", "jpg"

49、, "gif");</p><p>  JFileChooser chooser=new JFileChooser();</p><p>  chooser.setFileFilter(filter); </p><p>  int state=chooser.showOpenDialog(null);</p><p> 

50、 File file=chooser.getSelectedFile();</p><p>  if(file!=null&&state==JFileChooser.APPROVE_OPTION){</p><p><b>  try{</b></p><p>  image=tool.createImage(file.toUR

51、I().toURL());</p><p>  puzzlePad.setImage(image);</p><p><b>  }</b></p><p>  catch(Exception exp){} </p><p><b>  }</b></p><p><

52、b>  }</b></p><p>  else if(e.getSource()==defaultImage){</p><p><b>  try{</b></p><p>  image=tool.createImage(new File("dog.jpg").toURI().toURL());<

53、;/p><p>  puzzlePad.setImage(image);</p><p><b>  }</b></p><p>  catch(Exception exp){} </p><p><b>  }</b></p><p><b>  }</b&g

54、t;</p><p><b>  圖 6 最終結(jié)果</b></p><p>  public void actionPerformed(ActionEvent e){</p><p>  spendTime++;</p><p>  showTime.setText("您的用時:"+spendTim

55、e+"秒");</p><p><b>  } </b></p><p>  public void mouseReleased(MouseEvent e){</p><p>  if(verify.isSuccess()){</p><p>  recordTime.stop();</p>

56、;<p>  JOptionPane.showMessageDialog(this,"您成功了!","消息框", JOptionPane.INFORMATION_MESSAGE );</p><p><b>  }</b></p><p><b>

57、  參考文獻(xiàn):</b></p><p>  [1]耿祥義,張躍平.Java2實用教程(第三版)[M].北京:清華大學(xué)出版社, 2006.  </p><p>  [2]耿祥義.Java課程設(shè)計(第三版)[M].北京:清華大學(xué)出版社,2004.</p><p>  [3]張躍平.Java2實用教程實驗指導(dǎo)與習(xí)題解答(第三版)[

溫馨提示

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

評論

0/150

提交評論