版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> Java課程設(shè)計報告</p><p> 題目: 基于Java的動物換位游戲軟件設(shè)計 </p><p> 學院: 信息科學與工程學院 </p><p> 專業(yè): 電子信息工程 </p><p> 班級學號:
2、 </p><p> 學生姓名: </p><p> 指導老師: </p><p> 年 月 日</p><p><b> 課程設(shè)計任務書</b></
3、p><p><b> 目 錄</b></p><p><b> 1.設(shè)計目的5</b></p><p><b> 2.總體設(shè)計6</b></p><p> 2.1 ChangeAnimalWindow. java (主類)6</p><p>
4、; 2.2 Animal.java6</p><p> 2.3 Point.java7</p><p> 2.4 Stone.java7</p><p> 2.5 HandleMouse.java7</p><p> 2.6 AutoMoveAnimal.java7</p><p> 2. 7 R
5、ecord.java7</p><p> 2.8ShowRecord.java8</p><p> 3、程序流程及主要源代碼8</p><p> 3.1 ChangeAnimalWindow 類8</p><p> 3.1.2 U M L圖8</p><p> 3.2 Animal 類20&
6、lt;/p><p> 3.2.1.效果圖20</p><p> 3.2.2. UML 圖20</p><p> 3.3 Point 類23</p><p> 3.4 Stone類26</p><p> 3.4.1.效果圖26</p><p> 3.4.2. UML 圖27&l
7、t;/p><p> 3.5 HandleMouse 類28</p><p> 3.5.1. 效果圖28</p><p> 3.5.2. UML 圖28</p><p> 3.6 AutoMoveAnimal 類35</p><p> 3.6.1. 效果圖35</p><p>
8、 3.6.2. UM L 圖36</p><p> 3.7 Record 類46</p><p> 3.7.1 效果圖46</p><p> 3.7.2 UML圖46</p><p> 3.8 ShowRecord 類50</p><p> 3.8.1 效果圖50</p>&l
9、t;p> 3.8.2 UML圖50</p><p><b> 4、代碼調(diào)試54</b></p><p><b> 5、參考文獻54</b></p><p><b> 1.設(shè)計目的</b></p><p> 設(shè)計 GUI 界面的動物換位游戲,游戲的結(jié)果是讓
10、左右兩組動物交換位置。具體要求 如下:</p><p> (1)程序分為 3 個級別,用戶可以通過界而上提供的菜單來選擇"初級"、"中級"和"高級"這 3 個級別。對于"初級"級別,在水平排列的 7 塊石頭上的左右各有 3 個類型相同的動物中,間的石頭上沒有動物;對于"中級"級別,在水平排列的 9 塊石頭上的左右
11、各有 4 個類型相同的動物,中間的石頭上沒有動物;對于"高級"級別,在水平排列的 11 塊石頭上的左右各擁有 5 個類型相同的動物,中間的石頭上沒有動物。</p><p> (2)用鼠標單擊一個動物,如果該動物前方的石頭上沒有動物,該動物就跳躍到該石頭上,如果該動物前方的石頭上有其他的動物,但相隔的位置上的石頭沒有動物,該動物就越過自己前面的動物跳躍到石頭上,其他情形時,該動物不跳躍或跳躍時
12、不能越過 2 塊石頭。</p><p> (3)左方的動物只能向右方跳躍,右方的動物只能向左方跳躍。</p><p> (4)用戶可以通過單擊界面上提供的按鈕,讓程序自動完成動物換位。</p><p> (5)可以隨時單擊界面上提供的按鈕,重新開始當前的級別。</p><p> (6)用戶通過菜單選項,可以選擇左、右方動物的圖像。&l
13、t;/p><p> ?。?)設(shè)置一個方法,可以在上面記錄游戲成功者的成績,并且把它記錄下來,以便游戲優(yōu)勝者在以后觀看。</p><p> (8)設(shè)置了一個游戲英雄榜按鈕,上面有一個英雄菜單選項,按下這個選項后,可以查看成績記 錄。 </p><p><b> 隊員:</b></p><p> 注釋:在我們
14、這一組中,我們分工合作,在這當中,XXX負責音樂部分,XXX背景色的轉(zhuǎn)換,而我主要負責游戲英雄榜,使得當用戶換位成功后,系統(tǒng)能保存用戶的成績到用戶;當用戶查看換位的最好成績時,系統(tǒng)能提供讀取文件數(shù)據(jù)的界面。</p><p><b> 2.總體設(shè)計</b></p><p> 在設(shè)計動物換位時,需要編寫 6 個 Java 源文件: ChangeAnimal Wind
15、ow. java 、Point.java 、Animal.java、Stone.java 、HandleMouse.java 和 AutoMoveAnimal.java。</p><p> 動物換位除了需要編寫的上述 6 個 Java 源文件所給出的類外,還需要 Java 系統(tǒng)提供的一些重要的類,如 JMenultem,F(xiàn)ile 和 JButton 類。動物換位所用到的一些重要的類以及之間的組合關(guān)系如圖 2.1
16、所示</p><p> 2.1 ChangeAnimalWindow. java ( 主類)</p><p> ChangeAnimalWindow 類負責創(chuàng)建動物換位的主窗口,該類含有main方法,程序從該類開始執(zhí)行。ChangeAnimal Window類的成員變量中有五種重要類型的對象: Animal、Point、Stone、HandleMouse 和AutoMoveAnimal
17、 對象。ChangeAnimalWindow 將在后面的詳細設(shè)計中闡述。ChangeAnimalWindow 類創(chuàng)建的窗口以及其中的主要成員對象如圖 2.2所示</p><p> 2.2 Animal.java</p><p> Animal 類是 JPanel的一個子類,創(chuàng)建的對象是ChangeAnimalWindow 類的重要成員之一,用來表示"動物"。如圖2.
18、3所示</p><p> 圖2.3 Animal類效果圖</p><p> 2.3 Point.java</p><p> Point類負責創(chuàng)建確定位血的對象.使用 Point對象 .可以確定 Animal 以及 Stone 對象在窗體中的位置.</p><p> 2.4 Stone.java</p><p>
19、 Stone類是 JButton的一個子類,創(chuàng)建的對象表示"石頭”。</p><p> 2.5 HandleMouse.java</p><p> HandleMouse類所創(chuàng)建的對象負責處理鼠標事件。</p><p> 2.6 AutoMoveAnimal.java</p><p> AutoMoveAnimal類所創(chuàng)建
20、的對象使用算法完成動物的自動換位。</p><p> 2. 7 Record.java</p><p> Record類是JDialog對話框的子類,當換位成功后,Record對象負責保存用戶的成績到用戶。</p><p> 2.8 ShowRecord.java</p><p> ShowRecord類是JDialog對話框的子類
21、,當用戶查看換位的最好成績時,ShowRecord對象負責提供讀取文件數(shù)據(jù)的界面。</p><p> 3、程序流程及主要源代碼</p><p> 3.1 ChangeAnimalWindow 類</p><p> ChangeAnimalWindow 創(chuàng)建的窗口效果如圖 3.1 所示.</p><p> 圖3.1 ChangeAni
22、malWindow類效果圖</p><p> 3.1.2 U M L圖</p><p> ChangeAnimalWindow 類是java x. swing包JFrame的 一 個 子類, 并實 現(xiàn) 了ActionListener接口,標明該類的主要成員變量和方法的 UML圖,如圖3.2 所示。</p><p> 以下是 U M L 圖中有關(guān)方法的詳細說
23、明.</p><p> 3.1.2.1 成員變量</p><p> ? amountOfAnimal是Int型數(shù)據(jù),默認值 是6. amountOfAnimal的值用來 確定ChangeAnimalWindow窗體中"動物"的數(shù)目,即 Animal對象的數(shù)目。</p><p> ? distance 是 int型數(shù)據(jù),默認值是 80.d
24、istance 的值用來確定 Point 對象之間的距離,進而可以確定 Animal 之間,Stone 之間的距離以及 Animal 和 Stone 對象外觀的 大小。</p><p> ? animal 是 Animal 型數(shù)組,其長度為 amountOfAnima l。</p><p> ? Point 是 Point 型數(shù)組,其長度為 amountOfAnimal +1。&
25、lt;/p><p> ? Stone 是 Stone 型數(shù)組,其長度為 amountOfAnimal +1。</p><p> ? HandleMouse 是 HandleMouse 類創(chuàng)建的鼠標事件監(jiān)視器,用來監(jiān)視 animal 數(shù)組中Animal 對象觸發(fā)的鼠標事件。</p><p> ? auroMoveAnimal是 AutoMoveAnimal 類創(chuàng)
26、建的對話框。通過該對話框可以實現(xiàn)程序向?qū)⒆笥覄游锝粨Q位置。</p><p> ? bar 是 JMenuBar 創(chuàng)建的菜單條,用來添加菜單, bar 被放置在窗口的頂部。</p><p> ? MenuGrade 是 JMenu 創(chuàng)建的菜單,其名字為"選擇級別"menuImage 也是 JMenu 創(chuàng)建的菜單,其名字為"選擇動物圖像(jPG ,GIF
27、)"menuGrade和 menuImage被添加到菜單條bar中。</p><p> ? oneGradeItem,twoGradeItem和 threeGradeItem是JMenultem 創(chuàng)建的菜單項,它 們的名字 依次為"初級"、"中級"和 ..高級",這 三 個菜單項被添加到菜單項 menuGrade 中。LeftImage、right
28、Image和defa ultImage也是JMenultem創(chuàng)建的菜單項,其名字依次為"左面動物的圖像"、"右面動物的圖像"、"左右面的動物的默認圖像",這 三個菜單項被添加到菜單項 menumage 中。oneGradeItem ,twoGradeItem和1 threeGradeItem 以及 leftImage、rightImage 和 defaultImage 都將當前
29、窗口注冊為向己的ActionEvcnt 事件監(jiān)視器。</p><p> ? renew、 quit 和 autoButton 是 JButton創(chuàng)建的按鈕對象,名字依次為"重新開始"、"撤銷"和"自動演 示 "Renew 、quit和autoButton都將在當前接口注冊為自己的 ActionEvent 事件監(jiān)視器。</p><p&
30、gt; 3.1.2.2 方法</p><p> ? ChangcAnimalWindow()是構(gòu)造方法,負責完成窗口的初始化。</p><p> init( )方法負責完成 Animal Stone Point對象的創(chuàng)建。</p><p> ? setamountOfAnimal(int)方法負責設(shè)置動物的個數(shù),即 amountOfAnimal的值。&
31、lt;/p><p> ? removeAnimal AndStone()方法負責從窗體中移掉動物和石頭,即移掉 Animal 對象 和 Stone 對象。</p><p> ? needDoing( ) 方法負責執(zhí)行一些經(jīng)常需要重復執(zhí)行的代碼。</p><p> ? ActionPerformed( ActionEvent) 方法是ChangeAnimal
32、Window類實現(xiàn)的 ActionListener接口中的方法。ChangeAnimalWindow 創(chuàng)建的窗口是 oneGradeltem,twoGradeItem、 threeGradeItem 、leftImage 、rightImage defaultImage 菜單項和 renew quit autoButton 按組的 ActionEvent 事件監(jiān)視器。當用戶選中某個菜單項或單擊按鈕時,筒口將執(zhí)行 action
33、Performed ( ActionEvent ) 方法進行相應的操作。如果用戶選中oneGradeItem 、twoGradeItem 和threeGradeItem三個菜單項的某 一 項時,actionPerformed ( ActionEvent ) 方法所執(zhí)行的操作就是改變 amountOfAnimal的值,_執(zhí)行 needDoing()方法,完成必要的初始化。如果用戶選中l(wèi)eftlmage和rightImage 菜單項的某
34、一個時,actionPe</p><p> ? main( String) 方法是程序運行的入口方法。</p><p> 3.1.2.3 源代碼</p><p> import javax.swing.*;</p><p> import java.awt.*;</p><p> import java.
35、awt.event.*;</p><p> import java.util.ArrayList;</p><p> import java.io.*;</p><p> import java.util.*;</p><p> import javax.swing.filechooser.*;</p><p>
36、; public class ChangeAnimalWindow extends JFrame implements ActionListener{</p><p> int amountOfAnimal=6;</p><p> int distance=80;</p><p> Animal [] animal;</p><p>
37、 Hashtable hashtable=new Hashtable();</p><p> Point [] point;</p><p> Stone [] stone;</p><p> HandleMouse handleMouse;</p><p> AutoMoveAnimal autoMoveAnimal;</p
38、><p> File leftImageFile,rightImageFile,heroFile;</p><p> JButton renew,quit,autoButton=null;</p><p> JMenuBar bar;</p><p> JMenu menuGrade,menuImage,menuHero,yingyue;
39、</p><p> JMenuItem oneGradeItem,twoGradeItem,threeGradeItem;</p><p> JMenuItem leftIamge,rightIamge,defaultImage; </p><p> JMenuItem hero,bofang;</p><p> ShowRecord
40、 showHeroRecord=new ShowRecord(this,hashtable);</p><p> JPanel pCenter;</p><p> ChangeAnimalWindow(){</p><p> pCenter=new JPanel();</p><p> pCenter.setBackground(Co
41、lor.lightGray); </p><p> pCenter.setLayout(null);</p><p> handleMouse=new HandleMouse();</p><p> autoMoveAnimal=new AutoMoveAnimal(); </p><p> leftImageFile=new Fil
42、e("dog.jpg"); </p><p> rightImageFile=new File("cat.jpg"); </p><p> heroFile=new File("英雄.txt");</p><p><b> init();</b></p><p
43、> bar=new JMenuBar();</p><p> menuGrade=new JMenu("選擇級別");</p><p> yingyue =new JMenu("音樂");</p><p> menuImage=new JMenu("選擇動物圖像(JPG,GIF)");<
44、/p><p> menuHero=new JMenu("游戲英雄榜");</p><p> oneGradeItem=new JMenuItem("初級");</p><p> twoGradeItem=new JMenuItem("中級");</p><p> threeGra
45、deItem=new JMenuItem("高級");</p><p> bofang=new JMenuItem("播放");</p><p> bofang.addActionListener(this);</p><p> leftIamge=new JMenuItem("左面動物的圖像");&
46、lt;/p><p> rightIamge=new JMenuItem("右面動物的圖像"); </p><p> defaultImage=new JMenuItem("左右動物的默認圖像");</p><p> hero=new JMenuItem("英雄");</p><p>
47、; hero.addActionListener(this);</p><p> menuGrade.add(oneGradeItem);</p><p> menuGrade.add(twoGradeItem);</p><p> menuGrade.add(threeGradeItem);</p><p> menuImage.
48、add(leftIamge);</p><p> menuImage.add(rightIamge);</p><p> menuImage.add(defaultImage);</p><p> menuHero.add(hero);</p><p> bar.add(menuGrade);</p><p>
49、 bar.add(menuImage);</p><p> bar.add(yingyue);</p><p> yingyue.add(bofang);</p><p> bar.add(menuHero);</p><p> setJMenuBar(bar);</p><p> oneGradeItem
50、.addActionListener(this);</p><p> twoGradeItem.addActionListener(this);</p><p> threeGradeItem.addActionListener(this);</p><p> leftIamge.addActionListener(this); </p><
51、;p> rightIamge.addActionListener(this);</p><p> defaultImage.addActionListener(this);</p><p> hero.addActionListener(this);</p><p> renew=new JButton("重新開始");</p
52、><p> renew.addActionListener(this);</p><p> autoButton=new JButton("自動演示");</p><p> autoButton.addActionListener(this);</p><p> quit=new JButton("撤消&qu
53、ot;);</p><p> quit.addActionListener(this);</p><p> JPanel north=new JPanel();</p><p> north.add(renew);</p><p> north.add(quit);</p><p> north.add(au
54、toButton); </p><p> String mess="互換左右動物位置";</p><p> JLabel hintMess=new JLabel(mess,JLabel.CENTER);</p><p> north.add(hintMess); </p><p> add(north,Border
55、Layout.NORTH);</p><p> add(pCenter,BorderLayout.CENTER); </p><p> JPanel south=new JPanel();</p><p> south.add(handleMouse);</p><p> add(south,BorderLayout.SOU
56、TH);</p><p> setVisible(true);</p><p> setBounds(60,60,710,300);</p><p> validate();</p><p> setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); </p><p>&l
57、t;b> }</b></p><p> public void init(){</p><p> animal=new Animal[amountOfAnimal];</p><p> point=new Point[amountOfAnimal+1];</p><p> stone=new Stone[amoun
58、tOfAnimal+1];</p><p> int space=distance;</p><p> for(int i=0;i<point.length;i++){</p><p> point[i]=new Point(space,100);</p><p> space=space+distance; </p>
59、;<p><b> } </b></p><p> for(int i=0;i<animal.length;i++){</p><p> animal[i]=new Animal();</p><p> animal[i].addMouseListener(handleMouse);</p>&l
60、t;p> if(i<animal.length/2){</p><p> animal[i].setIsLeft(true);</p><p><b> }</b></p><p><b> else{</b></p><p> animal[i].setIsLeft(fals
61、e);</p><p><b> } </b></p><p><b> }</b></p><p> for(int i=0;i<stone.length;i++){</p><p> stone[i]=new Stone();</p><p> pCen
62、ter.add(stone[i]);</p><p> stone[i].setSize(distance*8/9,18);</p><p> int w=stone[i].getBounds().width;</p><p> int h=stone[i].getBounds().height;</p><p> stone[i].
63、setLocation(point[i].getX()-w/2,point[i].getY());</p><p> point[i].setThisStone(stone[i]);</p><p><b> } </b></p><p> for(int i=0;i<animal.length;i++){</p>&
64、lt;p> animal[i].setSize(distance*6/7,distance*3/4); </p><p> int w=animal[i].getBounds().width;</p><p> int h=animal[i].getBounds().height;</p><p> pCenter.add(animal[i]);&l
65、t;/p><p> if(i<animal.length/2){ </p><p> animal[i].setIsLeft(true);</p><p> animal[i].setLeftImage(leftImageFile);</p><p> animal[i].repaint();</p&g
66、t;<p> animal[i].setLocation(point[i].getX()-w/2,point[i].getY()-h);</p><p> animal[i].setAtPoint(point[i]);</p><p> point[i].setThisAnimal(animal[i]);</p><p> point[i].s
67、etIsHaveAnimal(true);</p><p><b> } </b></p><p><b> else{</b></p><p> animal[i].setIsLeft(false);</p><p> animal[i].setRightImage(rightImage
68、File);</p><p> animal[i].repaint();</p><p> animal[i].setLocation(point[i+1].getX()-w/2,point[i+1].getY()-h);</p><p> animal[i].setAtPoint(point[i+1]); </p><p> po
69、int[i+1].setThisAnimal(animal[i]);</p><p> point[i+1].setIsHaveAnimal(true);</p><p><b> } </b></p><p><b> } </b></p><p> handleMouse.setPoin
70、t(point);</p><p> handleMouse.setCountTime(true);</p><p> autoMoveAnimal.setPoint(point);</p><p> autoMoveAnimal.setStep(); </p><p><b> }</b></p>
71、<p> public void setAmountOfAnimal(int m){</p><p> if(m>=2&&m%2==0)</p><p> amountOfAnimal=m;</p><p><b> }</b></p><p> public void re
72、moveAnimalAndStone(){</p><p> for(int i=0;i<point.length;i++){</p><p> if(point[i].getThisAnimal()!=null)</p><p> pCenter.remove(point[i].getThisAnimal());</p><p>
73、;<b> }</b></p><p> for(int i=0;i<stone.length;i++){</p><p> if(point[i].getThisStone()!=null)</p><p> pCenter.remove(point[i].getThisStone());</p><p>
74、;<b> }</b></p><p> pCenter.validate();</p><p> pCenter.repaint();</p><p><b> }</b></p><p> public void needDoing(){</p><p><
75、;b> init();</b></p><p> handleMouse.initStep();</p><p> handleMouse.initSpendTime();</p><p> handleMouse.setCountTime(true);</p><p> autoMoveAnimal.setPoi
76、nt(point);</p><p><b> }</b></p><p> public void actionPerformed(ActionEvent e){</p><p> if(e.getSource()==oneGradeItem){</p><p> distance=80;</p>
77、<p> removeAnimalAndStone();</p><p> setAmountOfAnimal(6);</p><p> needDoing(); </p><p><b> }</b></p><p> else if(e.getSource()==twoGradeItem)
78、{</p><p> distance=70;</p><p> removeAnimalAndStone();</p><p> setAmountOfAnimal(8);</p><p> needDoing();</p><p><b> }</b></p><
79、p> else if(e.getSource()==threeGradeItem){</p><p> distance=60;</p><p> removeAnimalAndStone();</p><p> setAmountOfAnimal(10);</p><p> needDoing(); </p>
80、<p><b> }</b></p><p> else if(e.getSource()==bofang){</p><p> Sound s=new Sound("D:\\h\\dyd.wav");</p><p> s.start();</p><p><b>
81、 }</b></p><p> else if(e.getSource()==renew){</p><p> removeAnimalAndStone();</p><p> needDoing();</p><p><b> }</b></p><p> else if(
82、e.getSource()==autoButton){</p><p> removeAnimalAndStone();</p><p> needDoing();</p><p> handleMouse.setCountTime(false);</p><p> autoMoveAnimal.setStep(); </p&g
83、t;<p> int x=this.getBounds().x+this.getBounds().width/2;</p><p> int y=this.getBounds().y+this.getBounds().height;</p><p> autoMoveAnimal.setLocation(x,y);</p><p> autoM
84、oveAnimal.setSize(this.getBounds().width/2,120); </p><p> autoMoveAnimal.setVisible(true);</p><p><b> }</b></p><p> else if(e.getSource()==quit){</p><p>
85、; ArrayList<Integer> step=handleMouse.getStep();</p><p> int length=step.size();</p><p> int start=-1,end=-1;</p><p> if(length>=2){</p><p> end=step.get(
86、length-1);</p><p> start=step.get(length-2);</p><p> step.remove(length-1);</p><p> step.remove(length-2);</p><p> Animal ani=point[end].getThisAnimal();</p>
87、<p> int w=ani.getBounds().width;</p><p> int h=ani.getBounds().height; </p><p> ani.setLocation(point[start].getX()-w/2,point[start].getY()-h);</p><p> ani.setAtPoint(poi
88、nt[start]); </p><p> point[start].setThisAnimal(ani);</p><p> point[start].setIsHaveAnimal(true); </p><p> point[end].setIsHaveAnimal(false);</p><p><b>
89、 }</b></p><p><b> }</b></p><p> else if(e.getSource()==hero){ </p><p> showHeroRecord.setVisible(true);</p><p><b> }</b></p>&
90、lt;p> else if(e.getSource()==leftIamge){</p><p> JFileChooser chooser=new JFileChooser();</p><p> FileNameExtensionFilter filter = new FileNameExtensionFilter(</p><p> "
91、JPG & GIF Images", "jpg", "gif");</p><p> chooser.setFileFilter(filter);</p><p> int state=chooser.showOpenDialog(null);</p><p> File file=chooser.ge
92、tSelectedFile();</p><p> if(file!=null&&state==JFileChooser.APPROVE_OPTION){</p><p> leftImageFile=file;</p><p> for(int i=0;i<animal.length;i++){</p><p>
93、 if(animal[i].getIsLeft()==true){</p><p> animal[i].setLeftImage(leftImageFile); </p><p> animal[i].repaint(); </p><p><b> }</b></p><p><b> }
94、</b></p><p><b> }</b></p><p><b> }</b></p><p> else if(e.getSource()==rightIamge){</p><p> JFileChooser chooser=new JFileChooser();<
95、;/p><p> FileNameExtensionFilter filter = new FileNameExtensionFilter(</p><p> "JPG & GIF Images", "jpg", "gif");</p><p> chooser.setFileFilter(fil
96、ter);</p><p> int state=chooser.showOpenDialog(null);</p><p> File file=chooser.getSelectedFile();</p><p> if(file!=null&&state==JFileChooser.APPROVE_OPTION){</p>
97、<p> rightImageFile=file;</p><p> for(int i=0;i<animal.length;i++){</p><p> if(animal[i].getIsLeft()==false){</p><p> animal[i].setRightImage(rightImageFile);</p>
98、<p> animal[i].repaint(); </p><p><b> }</b></p><p><b> } </b></p><p><b> }</b></p><p><b> }</b></p>&
99、lt;p> else if(e.getSource()==defaultImage){</p><p> leftImageFile=new File("dog.jpg"); </p><p> rightImageFile=new File("cat.jpg");</p><p> for(int i=0;i&
100、lt;animal.length;i++){</p><p> if(animal[i].getIsLeft()==true)</p><p> animal[i].setLeftImage(leftImageFile);</p><p><b> else</b></p><p> animal[i].setR
101、ightImage(rightImageFile);</p><p> animal[i].repaint();</p><p><b> } </b></p><p><b> }</b></p><p> validate();</p><p><b&g
102、t; }</b></p><p> public static void main(String args[]){</p><p> new ChangeAnimalWindow();</p><p><b> }</b></p><p><b> }</b></p>
103、;<p> 3.2 Animal 類</p><p><b> 3.2.1.效果圖</b></p><p> Animal創(chuàng)建的對象效果如圖3.2.1所示</p><p> 圖3.2.1Animal類效果圖</p><p> 3.2.2. UML 圖</p><p> A
104、nimal類是 javax. swing 包jPancl 容器的一個子類,創(chuàng)建的對象是數(shù)組 animal 的單元巾的對象anima l 型數(shù)組animal是 ChangeAnimal Window 窗口的重要成員之一。標明 Animal 類的主要成員變量和方法以及和 ChangeAnimalWindow 類之間組合關(guān)系的 U ML圖如圖 3.3 所示</p><p> 以下是 U ML 圖中有關(guān)數(shù)據(jù)的詳細說明
105、。</p><p> 3.2.2.1 成員變量</p><p> ? point 是 Point型對象,用來確定 Animal 對象在街 u 中的位12.</p><p> ? isLeft 是 boolean型數(shù)據(jù),用來確定 Animal對象是否為"左"。</p><p> ? tool是 Toolkit
106、對象,用來獲得 Image 對象.</p><p> ? leftImage 和 rightImage 是 File類型的對象,用來確定 Animal 對象上繪制的圖像文件。</p><p> 3.2.2.2 方法</p><p> ? Animal()是構(gòu)造方法,負責完成 Anima l 對象的初始化。</p><p>
107、? Animal 對象調(diào)用 set LcftImagc( File) 方法可以設(shè)覽 leftImage 文件對象。</p><p> ? Animal 對象調(diào)用民1 RightImagc( File) 方法可以設(shè)'tl. rightImage 文件對象。</p><p> ? Animal 對象調(diào)用 setIsLeft (boolean)設(shè)置自己是否為"左&quo
108、t;的動物,即設(shè)置 isLeft 屬 性的值.</p><p> ? Animal 對象調(diào)用 getIsLeft O方法判斷自己是否為"左"的動物,即返回 isLeft 屬性 的值.</p><p> ? Animal 對象調(diào)用 setAnima1Point(Point) 方法設(shè)置自己所在的..點",即設(shè)置屬性point的對象引用。</p>
109、;<p> ? Animal 對象調(diào)用 getAtPoint()返回自己所在的"點",返回 point 對象的引用。</p><p> ? Animal對象調(diào)用paintComponent( Graphics) 方法繪制圖像,繪制tool對象根據(jù)</p><p> leftImage 或 rightImage 文件所創(chuàng)建的Image 對象.&l
110、t;/p><p> 3.2.2.3源代碼</p><p> import javax.swing.*;</p><p> import java.awt.*;</p><p> import java.io.*;</p><p> public class Animal extends JPanel{</p
111、><p> Point point;</p><p> boolean isLeft;</p><p> Toolkit tool;</p><p> File leftImage,rightImage; </p><p><b> Animal(){</b></p><
112、p> tool=getToolkit();</p><p><b> }</b></p><p> public void setLeftImage(File f){</p><p> leftImage=f;</p><p><b> } </b></p><
113、p> public void setRightImage(File f){</p><p> rightImage=f;</p><p><b> }</b></p><p> public void setIsLeft(boolean boo){</p><p> isLeft=boo;</p&g
114、t;<p><b> }</b></p><p> public boolean getIsLeft(){</p><p> return isLeft;</p><p><b> }</b></p><p> public void setAtPoint(Point p)
115、{</p><p><b> point=p;</b></p><p><b> }</b></p><p> public Point getAtPoint(){</p><p> return point;</p><p><b> }</b&g
116、t;</p><p> public void paintComponent(Graphics g){</p><p> super.paintComponent(g); </p><p> int w=getBounds().width;</p><p> int h=getBounds().height;</p>
117、<p><b> try{ </b></p><p> if(isLeft==true){</p><p> Image image=tool.getImage(leftImage.toURI().toURL()); </p><p> g.drawImage(image,0,0,w,h,this);</p>
118、<p><b> }</b></p><p> else{ </p><p> Image image=tool.getImage(rightImage.toURI().toURL());</p><p> g.drawImage(image,0,0,w,h,this); </p><p&g
119、t;<b> }</b></p><p><b> }</b></p><p> catch(Exception exp){}</p><p><b> }</b></p><p><b> }</b></p><p>
120、 3.3 Point 類</p><p><b> 3.3.1.效果圖</b></p><p> Point創(chuàng)建的對象,負責刻間 Animal 對象和 Stone對象所在的位置,無可顯示的效果圖。</p><p> 3.3.2. UM L 圖</p><p> Point 創(chuàng)建的對象含有兩個重要 int 型數(shù)據(jù)
121、,分別用來表示徹體坐標系中的 x 軸坐標和y軸 坐標值,窗體坐標系的原點是簡體的左上角,向右是 x 軸的正向,向下是 y軸的正向。 Point 類創(chuàng)建的對象是數(shù)組point的單元中的對象Point型數(shù)組point是ChangeAnimalWindow重要成員之一,其單元中的 Point對象用來確定Animal對象和 Stone對象在窗體巾的位置。 標明 Point類的主要成員變量和方法以及和ChangeAnimalWindow類之間的組
122、合關(guān)系的UML圖,如圖3.5所示:</p><p><b> .</b></p><p> 以下是 UML 閣中有關(guān)數(shù)據(jù)和方法的詳細說明.</p><p> 3.3.2.1 成員變量</p><p> ? x 和 y 是 Point 對象中的兩個int 型數(shù)據(jù),分別用來表示窗體坐標系中的 x 軸坐標和1y 軸坐
123、標值。</p><p> ? haveAnimal是 boolean數(shù)據(jù),如果有 Anima l 對象在該 Point 對象上時,該數(shù)據(jù)為true; 否則為 false.</p><p> ? animal是 Animal 類聲明的對象,用來存放一個 Animal 對象的引用,標明該 Animal對象在當前 Point 對象上.</p><p> 3.3
124、.2.2 方法</p><p> ? Point(int x,int y)是構(gòu)造方法,用來創(chuàng)建 Point 對象.</p><p> ? Point 對象調(diào)用 isHaveAnimal()方法可以返回一個 boolean 數(shù)據(jù),如果當前 Point對象上有 Animal 對象,isHaveDise( )方法返回 true; 否則返回 f alse.</p><p
125、> ? Point 對象調(diào)用 setIsHaveAnimal ( boolean boo) 方法 以根據(jù)參數(shù) boo 的值設(shè)坦當 前 Point 對象上是否有Animal 對象。</p><p> ? Point 對象 getX() 和 getY()方法可以返回其中的 x 輛Ir坐標和 y 軸坐標。</p><p> ? Point 對象調(diào)用equals(Point p
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于java的動物換位游戲軟件設(shè)計
- 基于java的動物換位游戲軟件設(shè)計說明
- 基于java的動物換位游戲軟件設(shè)計說明
- java課程設(shè)計--基于java的掃雷游戲軟件設(shè)計
- 【資料下載】基于java的動物換位游戲軟件設(shè)計[原創(chuàng)精品]
- 基于java的連連看游戲軟件設(shè)計
- java課程設(shè)計---基于java的記事本軟件設(shè)計
- java課程設(shè)計--基于java的24點游戲
- java課程設(shè)計報告----計算器軟件設(shè)計
- 基于java的掃雷游戲課程設(shè)計
- java課程設(shè)計---java設(shè)計貪吃蛇游戲
- java掃雷游戲課程設(shè)計
- java課程設(shè)計--手機游戲
- java課程設(shè)計-掃雷游戲
- java課程設(shè)計-撲克游戲
- java課程設(shè)計--掃雷游戲報告
- java火柴游戲課程設(shè)計報告
- java課程設(shè)計——猜數(shù)字游戲
- java課程設(shè)計——蜘蛛紙牌游戲
- java課程設(shè)計---基于java的坦克大戰(zhàn)
評論
0/150
提交評論