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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p>  《面向對象程序設計》</p><p><b>  課程設計報告</b></p><p><b>  目 錄</b></p><p>  1設計目的及內容1</p><p>  1.1課程設計目的1</p><p>  1.2 課程設計內容1&

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

3、 3.1 系統的功能模塊劃分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 系統流程圖3</p><p> 

4、 4設計過程與分析5</p><p>  5設計結果與測試6</p><p><b>  參考文獻:13</b></p><p><b>  1設計目的及內容</b></p><p><b>  1.1課程設計目的</b></p><p>  利用

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

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

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

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

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

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

11、.java類模塊</p><p>  PuzzleFrame類負責創(chuàng)建魔板游戲的主窗口,該類含有main方法,程序從該類開始。PuzzleFrame類的成員變量中有4種重要類型的對象:PuzzlePad、JmenuItem、JRadioButton和JButton。PuzzleFrame類的主要成員的作用將在后面的詳細設計中闡述,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類負責創(chuàng)建確定位置的對象,使用Point對象可以確定Block對象在PuzzlePad對象中的位置,即確定“方塊”在“魔板”中的位置。SquarePoint.java類主要成員變量(屬性)和主要方法如表所示。</p><p>  表格5 SquarePoint.java主要成員變量(屬性)</p><p>  表格6 SquarePoint.java主要

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

16、游戲寫成一個應用程序,所以首先要設計一下游戲的框架和菜單。 </p><p>  游戲的框架采用標準的Windows框架,在上面有標題欄、菜單欄,以方便玩家控制游戲。我們應該先做好這一部分。菜單欄包括魔板游戲??蚣苤虚g嵌入顯示單選按鈕和按鈕。</p><p>  然后,應該在一個面板上構建游戲的界面,將這個面板嵌入到游戲的大框架里。這樣整個游戲的界面就出來了。 <

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

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

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

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

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

22、erformed()實現小方格的移動規(guī)則;方法隨機排列數字()和方法隨機排列圖像()實現點擊開始玩按鈕時,隨機產生一個圖片和數字的排列;方法paintComponent()實現小方格中黑色小方格功能實現。</p><p><b>  5設計結果與測試</b></p><p>  圖 2 初級魔板游戲數字玩法</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 高級魔板游戲數字玩法 </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 最終結果</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、  參考文獻:</b></p><p>  [1]耿祥義,張躍平.Java2實用教程(第三版)[M].北京:清華大學出版社, 2006.  </p><p>  [2]耿祥義.Java課程設計(第三版)[M].北京:清華大學出版社,2004.</p><p>  [3]張躍平.Java2實用教程實驗指導與習題解答(第三版)[

溫馨提示

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

評論

0/150

提交評論