版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 《 面向對象程序設計》</p><p><b> 課程設計報告</b></p><p> 題 目: 經(jīng)典推箱子趣味游戲設計與實現(xiàn) </p><p> 院 (系): 信息科學與工程學院 </p><p> 專業(yè)班級: 計算機科學與技術1201班 </
2、p><p> 20 14 年 12 月 29 日至20 15 年 1 月 9 日</p><p> 面向對象程序設計 課程設計任務書</p><p><b> 目 錄</b></p><p> 1需求與總體設計……………………………………………………………………………1</p><
3、;p> 1.1需求分析………………………………………………………………………1</p><p> 1.2總體設計………………………………………………………………………2</p><p> 2詳細設計…………………………………………………………………………………4</p><p> 2.1 mainFrame類…………………………………………………………
4、……………4</p><p> 2.2 mainpanel類………………………………………………………………………5</p><p> 2.3 Sound類………………………………………………………………………7</p><p> 2.4 Readmap類………………………………………………………………………7</p><p> 3
5、編碼實現(xiàn) ……………………………………………………………………………9</p><p> 3.1游戲源碼………………………………………………………………………9</p><p> 4系統(tǒng)測試…………………………………………………………………………………42</p><p> 總結…………………………………………………………………………………45</p&g
6、t;<p><b> 1需求與總體設計</b></p><p><b> 1.1需求分析</b></p><p> 1.1.1功能結構圖</p><p> 推箱子游戲的功能結構圖如圖1.1所示。</p><p> 在系統(tǒng)中,編寫4個Java類:mainFrame,mainpa
7、nel,Sound,Readmap;分別對應初始化游戲界面,游戲操作,背景音樂,繪制地圖。 </p><p><b> 圖1.1</b></p><p> 1.1.2 UML類圖</p><p> 推箱子系統(tǒng)除了上述4個Java類外,還需要Java系統(tǒng)提供的一些重要的類。這些類之間的UML圖如圖1.2所示。</p><
8、p><b> 圖1.2</b></p><p><b> 1.2總體設計</b></p><p> 1.2.1 mainFrame類</p><p> mainFrame類負責創(chuàng)建系統(tǒng)的主窗口。mainFrame類有多種重要類型的對象,這些對象構成了游戲界面的簡明與美觀,并且通過監(jiān)聽實現(xiàn)方法賦予了這些組件的相
9、應功能。MainFrame類通過調(diào)用Readmap類來實現(xiàn)將地圖繪制在游戲主界面,通過調(diào)用Sound類來實現(xiàn)對背景音樂的管理,實現(xiàn)音樂開關以及選擇上一曲下一曲的操作。</p><p> 設計中包括了所有你所能直觀見到的圖形界面,窗體的大小,下拉菜單中的功能菜單,使得玩家能夠很直觀的見到所有游戲中的功能.界面中有菜單, 包括:"選項""設置音樂""幫助"
10、。按鈕包括:"重來""悔一步""第一關""上一關""下一關""最終關""選關""音樂"等。</p><p> 1.2.2 mainpanel類</p><p> Mainpanel類中集成了小人與箱子的移動規(guī)則,并且還包含了對鍵
11、盤操作移動的響應方法。在本游戲系統(tǒng)中,給人的視覺感受應該是能感受都動作的變化,逼真的人物動作會使系統(tǒng)更有效.通過控制人物,箱子,空地,障礙物在數(shù)組中的位置的改變來控制移動動作.</p><p> 小人與箱子移動的算法移動中包括正移動,與"悔一步"的負移動. 正移動:小人上下左右的移動是由本組咸英智組員所做,歸結起來上下左右是一個判斷的算法,判斷都是通過判斷小人前面是否是空位箱子或者是墻,如果
12、沒有就移動;有的話,據(jù)判斷箱子是否可以移動,最后討論箱子推過的,小人移動,以及被遮擋住點的圖形變化,重新繪制地圖,算法判斷完畢. </p><p> 1.2.3 Sound類</p><p> Sound類主要功能是播放背景音樂,包含了一些對音樂的操作方法。在玩游戲的同時聽一聽動聽的音樂,有助于舒緩疲勞,放松心情。</p><p> 1.2.4 Readmap
13、類</p><p> Readmap類是繪制地圖的類,將已經(jīng)制作好的地圖繪制在游戲界面上。其主要功能是給用戶一個友好的游戲界面,游戲中包括50 關的地圖,推箱子這個游戲的50 個地圖是事先完成的,將所有地圖上面的信息以數(shù)字的形式儲存在一個20*20 的二維數(shù)組當中;然后,每一關都按照數(shù)組重新繪制地圖,這樣就擁有了50 張地圖。</p><p><b> 2詳細設計</b
14、></p><p> 2.1 mainFrame類</p><p> MainFrame類用于初始化屏幕。該類首先用兩個for循環(huán)初始化屏幕20*20范圍內(nèi)的狀態(tài),初始化為0,以后根據(jù)實際情況重新賦值;然后設置屏幕輸出狀態(tài),設置寄存器AX的高位為0,低位為3,表示以80*25的彩色方式顯示;最后移動光標到指定的位置輸出。</p><p> 設置界面的標題
15、,窗口大小,添加按鈕組件以及各種組件的布局</p><p> super("推箱子咯");//設置標題</p><p> setSize(720,720);</p><p> setVisible(true);//設置窗口可見</p><p> setResizable(false);</p><
16、;p><b> //創(chuàng)建按鈕</b></p><p> btnrenew=new JButton("重來");</p><p> btnback=new JButton("悔一步");</p><p> btnlast=new JButton("上一關");</p&
17、gt;<p> btnnext=new JButton("下一關");</p><p> btnchoose=new JButton("選關");</p><p> btnfirst=new JButton("第1關");</p><p> btnover=new JButton(&q
18、uot;最終關");</p><p> btnmuc=new JButton("音樂關");</p><p> actionPerformed(ActionEvent)</p><p> itemStateChanged(ItemEvent)</p><p> 2.2 mainpanel類</p&g
19、t;<p> 該類用于移動箱子,包括目的地之間、空地之間和目的地與空地之間的箱子移動。小人與箱子移動的算法移動中包括正移動,與"悔一步"的負移動. 正移動:小人上下左右的移動是由本組咸英智組員所做,歸結起來上下左右是一個判斷的算法,判斷都是通過判斷小人前面是否是空位箱子或者是墻,如果沒有就移動;有的話,據(jù)判斷箱子是否可以移動,最后討論箱子推過的,小人移動,以及被遮擋住點的圖形變化,重新繪制地圖,算法判
20、斷完畢.傳出數(shù)據(jù)記錄在,一個棧當中,以備"悔一步"使用. 負移動:通過記錄在棧中的數(shù)據(jù)判斷,前一步是的移動方向以及移動使用過的算法,逆向將代碼重新運行,同時繪制地圖以達到前一步的狀態(tài).</p><p> Mainpanel類中包含了</p><p> ?。?)重來:重新開始當前關; </p><p> (2)悔一步:返回上一移動狀態(tài)(可以連續(xù)
21、返回多步) </p><p> (3)第一關:游戲系統(tǒng)默認開始關為第一關,此按鈕可以將關從其它關跳躍到第一關. </p><p> ?。?)上一關:返回到當前關的上一關; </p><p> (5)下一關:返回到當前關的下一關; </p><p> ?。?)最終關:跳躍到最后一關,即第五十關; </p><p>
22、; ?。?)選關:選擇想要玩的關; </p><p> ?。?)音樂關(開) :默認為開,點擊自動關閉音樂和開啟音樂. </p><p> (9)更換音樂:從不同的音樂中選取適合玩家的音樂.</p><p><b> 鍵盤操作的方法</b></p><p> iswin()//判斷是否獲勝</p>&
23、lt;p> isMystackEmpty()</p><p> paint(Graphics)</p><p> 箱子移動與人物移動的方法。該方法是實現(xiàn)箱子的移動。根據(jù)游戲規(guī)則,箱子可以在空地之間、目的地之間、空地和目的地之間來回移動。</p><p> backright(int)//返回右移</p><p> moveri
24、ght()//右移操作</p><p> backleft(int)//返回左移</p><p> moveleft()//左移操作</p><p> backdown(int)//返回下移</p><p> movedown()//下移操作</p><p> backup(int)//返回上移</p&
25、gt;<p> moveup()//上移操作</p><p> remove()//移除</p><p> 返回back()//</p><p><b> 鍵盤監(jiān)聽</b></p><p> keyReleased(KeyEvent)//釋放鍵盤</p><p> key
26、Typed(KeyEvent)//判斷鍵盤操作是否有效</p><p> keyPressed(KeyEvent)//按下鍵盤</p><p> 2.3 Sound類</p><p> ?。?)將本地音樂讀取進程序</p><p> loadSound() </p><p> ?。?)音樂關(開) :默認為開,點
27、擊自動關閉音樂和開啟音樂. </p><p><b> mystop()</b></p><p><b> isplay()</b></p><p> ?。?)更換音樂:從不同的音樂中選取適合玩家的音樂.</p><p> setMusic(String)</p><p&g
28、t; 2.4 Readmap類</p><p> 該模塊主要是被其它模塊調(diào)用,用于畫墻、在空地畫箱子、在目的地畫箱子、畫小人和畫目的地。形成地圖以二維數(shù)組的形式進行存儲的,不同的數(shù)字有著不同的含義.在地圖當中不同的數(shù)字代表不同的含義我當時是將0~9 解讀成為不同的圖形與圖像. ①"0"代表"地圖以內(nèi)的空位"; ②"1"代表"地圖中的邊緣&
29、quot;; ③"2"代表"地圖以內(nèi)的空位非點位; ④"3"代表"地圖中的箱子"; ⑤"4"代表"點位"; ⑥"5"代表"小人面部朝下"; ⑦"6"代表"小人面部朝左"; 課程設計說明書⑧"7"代表"小人面部朝右&q
30、uot;; ⑨"8"代表"小人面部朝上"; ⑩"9"代表"箱子已經(jīng)到達點位。</p><p> Readmap(int)//讀取地圖文件</p><p> getmap()//獲取地圖用于在目的地畫箱子,傳入?yún)?shù)x、y指明位置。該類調(diào)用getmap()進行輸出,</p><p><b&g
31、t; 3編碼實現(xiàn)</b></p><p> 3.1推箱子游戲設計源碼</p><p> import javax.swing.*;</p><p> import java.awt.event.*;</p><p> import java.awt.*;</p><p> import java
32、.io.*;</p><p> import javax.sound.midi.*;</p><p> import java.util.Stack;</p><p> public class hh</p><p><b> {</b></p><p> //程序主方法,游戲由此開始&
33、lt;/p><p> public static void main(String[] args)</p><p><b> {</b></p><p><b> //創(chuàng)建游戲界面</b></p><p> new mainFrame();</p><p><b&g
34、t; }</b></p><p><b> }</b></p><p> //顯示游戲的主界面,一些常用組件的布局及其相應功能的監(jiān)聽與實現(xiàn)</p><p> class mainFrame extends JFrame implements ActionListener,ItemListener</p><
35、;p><b> {</b></p><p> JLabel lb;</p><p> JLabel lb2;</p><p> JButton btnrenew,</p><p><b> btnlast,</b></p><p><b> btn
36、next,</b></p><p> btnchoose,</p><p><b> btnfirst,</b></p><p><b> btnover,</b></p><p><b> btnmuc,</b></p><p>&
37、lt;b> btnback;</b></p><p> mainpanel panel;</p><p> Sound sound;</p><p> JComboBox jc=new JComboBox();</p><p> //主界面上的菜單和選項</p><p> MenuItem
38、 renew=new MenuItem("重新開始");</p><p> MenuItem back=new MenuItem("悔一步");</p><p> MenuItem last=new MenuItem("上一關");</p><p> MenuItem next=new MenuIte
39、m("下一關");</p><p> MenuItem choose=new MenuItem("選關");</p><p> MenuItem exit=new MenuItem("退出");</p><p> MenuItem qin=new MenuItem("琴蕭合奏");
40、</p><p> MenuItem po=new MenuItem("泡泡堂");</p><p> MenuItem guang=new MenuItem("灌籃高手");</p><p> MenuItem nor=new MenuItem("默認");</p><p>
41、 MenuItem eye=new MenuItem("eyes on me");</p><p> MenuItem about=new MenuItem("關于推箱子");</p><p> mainFrame()</p><p><b> {</b></p><p>
42、 super("推箱子咯");//設置標題</p><p> setSize(720,720);</p><p> setVisible(true);//設置窗口可見</p><p> setResizable(false);</p><p> setLocation(300,20);</p>&l
43、t;p> setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);</p><p> Container cont=getContentPane();</p><p> cont.setLayout(null);</p><p> cont.setBackground(Color.black);</p>
44、<p> //選項菜單的菜單項的添加</p><p> Menu choice=new Menu("選項");</p><p> choice.add(renew);</p><p> choice.add(last);</p><p> choice.add(next);</p>&
45、lt;p> choice.add(choose);</p><p> choice.add(back);</p><p> choice.addSeparator();</p><p> choice.add(exit);</p><p> //給選項菜單的菜單項添加監(jiān)聽</p><p> renew
46、.addActionListener(this);</p><p> last.addActionListener(this);</p><p> next.addActionListener(this);</p><p> choose.addActionListener(this);</p><p> exit.addAction
47、Listener(this);</p><p> back.addActionListener(this);</p><p> //給背景音樂菜單添加菜單項</p><p> Menu setmuc=new Menu("設置音樂");</p><p> setmuc.add(nor);</p><
48、;p> setmuc.add(qin);</p><p> setmuc.add(po);</p><p> setmuc.add(guang);</p><p> setmuc.add(eye);</p><p> //給背景音樂菜單項添加監(jiān)聽</p><p> nor.addActionListe
49、ner(this);</p><p> qin.addActionListener(this);</p><p> po.addActionListener(this);</p><p> guang.addActionListener(this);</p><p> eye.addActionListener(this);</
50、p><p> //給幫助菜單添加菜單項及監(jiān)聽</p><p> Menu help=new Menu("幫助");</p><p> help.add(about);</p><p> about.addActionListener(this);</p><p> MenuBar bar=ne
51、w MenuBar();</p><p> bar.add(choice);</p><p> bar.add(setmuc);</p><p> bar.add(help);</p><p> setMenuBar(bar); </p>&l
52、t;p> nor.setEnabled(false);</p><p> lb=new JLabel("JAVA推箱子",SwingConstants.CENTER);</p><p> lb2=new JLabel("更換音樂",SwingConstants.CENTER);</p><p><b>
53、 add(lb);</b></p><p><b> add(lb2);</b></p><p> lb.setBounds(100,20,400,20);</p><p> lb.setForeground(Color.white);</p><p> lb2.setBounds(625,500,5
54、5,20);</p><p> lb2.setForeground(Color.white);</p><p><b> //創(chuàng)建按鈕</b></p><p> btnrenew=new JButton("重來");</p><p> btnback=new JButton("悔一步
55、");</p><p> btnlast=new JButton("上一關");</p><p> btnnext=new JButton("下一關");</p><p> btnchoose=new JButton("選關");</p><p> btnfirst
56、=new JButton("第1關");</p><p> btnover=new JButton("最終關");</p><p> btnmuc=new JButton("音樂關");</p><p> //添加按鈕組件到窗口</p><p> add(btnrenew);
57、</p><p> add(btnlast);</p><p> add(btnnext);</p><p> add(btnchoose);</p><p> add(btnfirst);</p><p> add(btnover);</p><p> add(btnmuc);&l
58、t;/p><p> add(btnback);</p><p> //設置按鈕組件的大小及添加監(jiān)聽</p><p> btnrenew.setBounds(625,100,80,30);</p><p> btnrenew.addActionListener(this);</p><p> btnback.set
59、Bounds(625,150,80,30);</p><p> btnback.addActionListener(this);</p><p> btnfirst.setBounds(625,200,80,30);</p><p> btnfirst.addActionListener(this);</p><p> btnlast
60、.setBounds(625,250,80,30);</p><p> btnlast.addActionListener(this);</p><p> btnnext.setBounds(625,300,80,30);</p><p> btnnext.addActionListener(this);</p><p> btnov
61、er.setBounds(625,350,80,30);</p><p> btnover.addActionListener(this);</p><p> btnchoose.setBounds(625,400,80,30);</p><p> btnchoose.addActionListener(this);</p><p>
62、 btnmuc.setBounds(625,450,80,30);</p><p> btnmuc.addActionListener(this);</p><p> jc.setBounds(625,530,80,20);</p><p> //添加背景音樂名到窗口</p><p> jc.addItem("默認"
63、;);</p><p> jc.addItem("琴蕭合奏");</p><p> jc.addItem("泡泡堂");</p><p> jc.addItem("灌籃高手");</p><p> jc.addItem("eyes on me");<
64、/p><p> jc.addItemListener(this);</p><p> cont.add(jc);</p><p> sound=new Sound();</p><p> sound.loadSound();</p><p> panel=new mainpanel();</p>&
65、lt;p> add(panel);</p><p> panel.Tuixiangzi(panel.level);</p><p> panel.requestFocus();</p><p> validate();</p><p><b> }</b></p><p> //
66、對主界面上的一些按鈕的功能的監(jiān)聽及實現(xiàn)</p><p> public void actionPerformed(ActionEvent e)</p><p><b> {</b></p><p> if(e.getSource()==btnrenew||e.getSource()==renew)</p><p>
67、;<b> {</b></p><p> panel.Tuixiangzi(panel.level);</p><p> panel.requestFocus();</p><p> panel.remove();</p><p><b> }</b></p><p&g
68、t; else if(e.getSource()==btnlast||e.getSource()==last)</p><p><b> {</b></p><p> panel.level--;</p><p> if(panel.level<1)</p><p><b> {</b&g
69、t;</p><p> panel.level++;JOptionPane.showMessageDialog(this,"本關是第一關");panel.requestFocus();</p><p><b> }</b></p><p><b> else </b></p><
70、;p><b> {</b></p><p> panel.Tuixiangzi(panel.level);</p><p> panel.requestFocus();</p><p><b> }</b></p><p> panel.remove();</p>&l
71、t;p><b> }</b></p><p> else if(e.getSource()==btnnext||e.getSource()==next)</p><p><b> {</b></p><p> panel.level++;</p><p> if(panel.leve
72、l>panel.maxlevel())</p><p><b> {</b></p><p> panel.level--;</p><p> JOptionPane.showMessageDialog(this,"本關已是最后一關");panel.requestFocus();</p><p
73、><b> }</b></p><p><b> else </b></p><p><b> {</b></p><p> panel.Tuixiangzi(panel.level);</p><p> panel.requestFocus();</p&
74、gt;<p><b> }</b></p><p> panel.remove();</p><p><b> }</b></p><p> else if(e.getSource()==exit)</p><p> System.exit(0);</p>&l
75、t;p> else if(e.getSource()==about)</p><p><b> {</b></p><p> JOptionPane.showMessageDialog(this, "JAVA推箱子");</p><p><b> }</b></p><
76、p> else if(e.getSource()==btnchoose||e.getSource()==choose)</p><p><b> {</b></p><p> String lel=JOptionPane.showInputDialog(this,"請輸入您要轉到的關卡號:(1~50)");</p><
77、;p> panel.level=Integer.parseInt(lel);</p><p> panel.remove();</p><p> if(panel.level>panel.maxlevel()||panel.level<1)</p><p><b> {</b></p><p>
78、 JOptionPane.showMessageDialog(this, "沒有這一關!??!");</p><p> panel.requestFocus();</p><p><b> }</b></p><p><b> else</b></p><p><b&
79、gt; {</b></p><p> panel.Tuixiangzi(panel.level);</p><p> panel.requestFocus();</p><p><b> }</b></p><p><b> }</b></p><p>
80、 else if(e.getSource()==btnfirst)</p><p><b> {</b></p><p> panel.level=1;</p><p> panel.Tuixiangzi(panel.level);</p><p> panel.requestFocus();</p>
81、;<p> panel.remove();</p><p><b> }</b></p><p> else if(e.getSource()==btnover)</p><p><b> {</b></p><p> panel.level=panel.maxlevel()
82、;</p><p> panel.Tuixiangzi(panel.level);</p><p> panel.requestFocus();</p><p> panel.remove();</p><p><b> }</b></p><p> else if(e.getSourc
83、e()==btnmuc)</p><p><b> {</b></p><p> if(sound.isplay())</p><p><b> {</b></p><p> sound.mystop();</p><p> btnmuc.setLabel(&quo
84、t;音樂開");</p><p><b> }</b></p><p><b> else </b></p><p><b> {</b></p><p> sound.loadSound();</p><p> btnmuc.set
85、Label("音樂關");</p><p><b> }</b></p><p> panel.requestFocus();</p><p><b> }</b></p><p> else if(e.getSource()==btnback||e.getSource(
86、)==back)</p><p><b> {</b></p><p> if(panel.isMystackEmpty())JOptionPane.showMessageDialog(this, "您還未移動?。?!");</p><p><b> else</b></p><
87、p><b> {</b></p><p> switch(panel.back())</p><p><b> {</b></p><p><b> case 10:</b></p><p> panel.backup(10);</p><p
88、><b> break;</b></p><p><b> case 11:</b></p><p> panel.backup(11);</p><p><b> break;</b></p><p><b> case 20:</b>&
89、lt;/p><p> panel.backdown(20);</p><p><b> break;</b></p><p><b> case 21:</b></p><p> panel.backdown(21);</p><p><b> break;&
90、lt;/b></p><p><b> case 30:</b></p><p> panel.backleft(30);</p><p><b> break;</b></p><p><b> case 31:</b></p><p>
91、 panel.backleft(31);</p><p><b> break;</b></p><p><b> case 40:</b></p><p> panel.backright(40);</p><p><b> break;</b></p>
92、<p><b> case 41:</b></p><p> panel.backright(41);</p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b><
93、;/p><p> panel.requestFocus();</p><p><b> }</b></p><p> else if(e.getSource()==nor)</p><p><b> {</b></p><p> jc.setSelectedIndex(
94、0);</p><p><b> }</b></p><p> else if(e.getSource()==qin)</p><p><b> {</b></p><p> jc.setSelectedIndex(1);</p><p><b> }&l
95、t;/b></p><p> else if(e.getSource()==guang)</p><p><b> {</b></p><p> jc.setSelectedIndex(3);</p><p><b> }</b></p><p> else
96、if(e.getSource()==eye)</p><p><b> {</b></p><p> jc.setSelectedIndex(4);</p><p><b> }</b></p><p> else if(e.getSource()==po)</p><p
97、><b> {</b></p><p> jc.setSelectedIndex(2);</p><p><b> }</b></p><p><b> }</b></p><p> //對音樂選項的操作實現(xiàn)</p><p> pub
98、lic void itemStateChanged(ItemEvent ie)</p><p><b> {</b></p><p> int no=jc.getSelectedIndex();</p><p> switch(no)</p><p><b> {</b></p>
99、<p><b> case 0:</b></p><p> sound.setMusic("nor.mid");</p><p> if(sound.isplay())</p><p> sound.mystop();</p><p> sound.loadSound();&l
100、t;/p><p> btnmuc.setLabel("音樂關");</p><p> nor.setEnabled(false);</p><p> qin.setEnabled(true);</p><p> guang.setEnabled(true);</p><p> eye.setE
101、nabled(true);</p><p> po.setEnabled(true);</p><p> panel.requestFocus();</p><p><b> break;</b></p><p><b> case 1:</b></p><p>
102、sound.setMusic("qin.mid");</p><p> if(sound.isplay())</p><p> sound.mystop();</p><p> sound.loadSound();</p><p> btnmuc.setLabel("音樂關");</p&g
103、t;<p> nor.setEnabled(true);</p><p> qin.setEnabled(false);</p><p> guang.setEnabled(true);</p><p> eye.setEnabled(true);</p><p> po.setEnabled(true);</p
104、><p> panel.requestFocus();</p><p><b> break;</b></p><p><b> case 2:</b></p><p> sound.setMusic("popo.mid");</p><p> if
105、(sound.isplay())</p><p> sound.mystop();</p><p> sound.loadSound();</p><p> btnmuc.setLabel("音樂關");</p><p> nor.setEnabled(true);</p><p> qi
106、n.setEnabled(true);</p><p> guang.setEnabled(true);</p><p> eye.setEnabled(true);</p><p> po.setEnabled(false);</p><p> panel.requestFocus();</p><p>&l
107、t;b> break;</b></p><p><b> case 3:</b></p><p> sound.setMusic("guang.mid");</p><p> if(sound.isplay())</p><p> sound.mystop();</p
108、><p> sound.loadSound();</p><p> btnmuc.setLabel("音樂關");</p><p> nor.setEnabled(true);</p><p> qin.setEnabled(true);</p><p> guang.setEnabled(f
109、alse);</p><p> eye.setEnabled(true);</p><p> po.setEnabled(true);</p><p> panel.requestFocus();</p><p><b> break;</b></p><p><b> cas
110、e 4:</b></p><p> sound.setMusic("eyes on me.mid");</p><p> if(sound.isplay())</p><p> sound.mystop();</p><p> sound.loadSound();</p><p>
111、; btnmuc.setLabel("音樂關");</p><p> nor.setEnabled(true);</p><p> qin.setEnabled(true);</p><p> guang.setEnabled(true);</p><p> eye.setEnabled(false);</
112、p><p> po.setEnabled(true);</p><p> panel.requestFocus();</p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b><
113、/p><p><b> }</b></p><p> //游戲操作功能的實現(xiàn)</p><p> class mainpanel extends JPanel implements KeyListener</p><p><b> {</b></p><p> int m
114、ax=50;</p><p> int[][] map,</p><p><b> maptmp;</b></p><p><b> int manX,</b></p><p><b> manY,</b></p><p><b>
115、boxnum;</b></p><p> Image[] myImage;</p><p> Readmap Levelmap;</p><p> Readmap Levelmaptmp;</p><p> int len=30;</p><p> public int level=1;</
116、p><p> Stack mystack=new Stack();</p><p> mainpanel()</p><p><b> {</b></p><p><b> //設置大小</b></p><p> setBounds(15,50,600,600);<
117、;/p><p><b> //設置顏色</b></p><p> setBackground(Color.white);</p><p> addKeyListener(this);</p><p> myImage=new Image[10];</p><p> for(int i=0;
118、i<10; i++)</p><p><b> {</b></p><p> myImage[i] = Toolkit.getDefaultToolkit().getImage("pic\\"+i+".gif");</p><p><b> }</b></p>
119、<p> setVisible(true);</p><p><b> }</b></p><p><b> //開始繪制地圖</b></p><p> void Tuixiangzi(int i)</p><p><b> {</b></p&g
120、t;<p> Levelmap=new Readmap(i);</p><p> Levelmaptmp=new Readmap(i);</p><p> map=Levelmap.getmap();</p><p> manX=Levelmap.getmanX();</p><p> manY=Levelmap.ge
121、tmanY();</p><p> maptmp=Levelmaptmp.getmap();</p><p> repaint();</p><p><b> }</b></p><p> int maxlevel()</p><p><b> {</b></
122、p><p> return max;</p><p><b> }</b></p><p> public void paint(Graphics g)</p><p><b> {</b></p><p> for(int i=0; i<20; i++)<
123、/p><p> for(int j=0; j<20; j++)</p><p><b> {</b></p><p> g.drawImage(myImage[map[j][i]],i*len,j*len,this);</p><p><b> }</b></p><
124、p><b> //設置顏色</b></p><p> g.setColor(new Color(0,0,0));</p><p><b> //設置字體</b></p><p> g.setFont(new Font("楷體_2312",Font.BOLD,30));</p>
125、<p><b> //設置關數(shù)</b></p><p> g.drawString("現(xiàn)在是第",150,40);</p><p> g.drawString(String.valueOf(level),310,40);</p><p> g.drawString("關",360,40
126、);</p><p><b> }</b></p><p> //實現(xiàn)鍵盤控制移動的方法</p><p> public void keyPressed(KeyEvent e)</p><p><b> {</b></p><p> if(e.getKeyCode
127、()==KeyEvent.VK_UP)</p><p><b> {</b></p><p> //上移鍵實現(xiàn)上移方法</p><p><b> moveup();</b></p><p><b> }</b></p><p> if(e.ge
128、tKeyCode()==KeyEvent.VK_DOWN)</p><p><b> {</b></p><p> //下移鍵實現(xiàn)下移方法</p><p> movedown();</p><p><b> }</b></p><p> if(e.getKeyCod
129、e()==KeyEvent.VK_LEFT)</p><p><b> {</b></p><p> //左移鍵實現(xiàn)左移方法</p><p> moveleft();</p><p><b> }</b></p><p> if(e.getKeyCode()==Ke
130、yEvent.VK_RIGHT)</p><p><b> {</b></p><p> //右移鍵實現(xiàn)右移方法</p><p> moveright();</p><p><b> }</b></p><p> if(iswin())</p><
131、;p><b> {</b></p><p> if(level==max)</p><p><b> {</b></p><p> //通過最后一關時顯示"恭喜您通過最后一關?。?!"</p><p> JOptionPane.showMessageDialog(t
132、his, "恭喜您通過最后一關?。?!");</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> //通過非最后一關時顯示"恭喜您通過第"&quo
133、t;關!!!\n是否要進入下一關?"</p><p> String msg="恭喜您通過第"+level+"關!!!\n是否要進入下一關?";</p><p> int type=JOptionPane.YES_NO_OPTION;</p><p> String title="過關";&
134、lt;/p><p> int choice=0;</p><p> choice=JOptionPane.showConfirmDialog(null,msg,title,type);</p><p> //如果選擇取消,則退出游戲</p><p> if(choice==1)</p><p> System.e
135、xit(0);</p><p> else if(choice==0)</p><p><b> {</b></p><p><b> level++;</b></p><p> Tuixiangzi(level);</p><p><b> }</
136、b></p><p><b> }</b></p><p> mystack.removeAllElements();</p><p><b> }</b></p><p><b> }</b></p><p> public void
137、keyTyped(KeyEvent e)</p><p><b> {</b></p><p><b> }</b></p><p> public void keyReleased(KeyEvent e)</p><p><b> {</b></p>&
138、lt;p><b> }</b></p><p> //無鍵盤操作時返回無操作</p><p> boolean isMystackEmpty()</p><p><b> {</b></p><p> return mystack.isEmpty();</p><
139、p><b> }</b></p><p> int back()</p><p><b> {</b></p><p> return (Integer)mystack.pop();</p><p><b> }</b></p><p>
140、; void remove()</p><p><b> {</b></p><p> mystack.removeAllElements();</p><p><b> }</b></p><p><b> //實現(xiàn)上移操作</b></p><p
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 推箱子游戲課程設計
- 推箱子游戲課程設計
- 基于java的推箱子游戲設計與實現(xiàn)
- java實現(xiàn)推箱子游戲
- c語言課程設計--推箱子游戲
- c語言課程設計--推箱子游戲
- javame課程設計-- 手機推箱子游戲
- 基于java的推箱子游戲設計與實現(xiàn) 任務書
- Java實現(xiàn)推箱子游戲畢業(yè)設計最終版.doc
- 基于java的推箱子游戲
- 推箱子c課程設計報告
- 匯編語言推箱子課程設計
- c++推箱子課程設計報告
- 《c語言程序設計》課程設計推箱子
- java_掃雷游戲課程設計與實現(xiàn)畢業(yè)設計
- java掃雷游戲課程設計
- java課程設計--手機游戲
- java課程設計-掃雷游戲
- java課程設計-撲克游戲
- 基于android推箱子游戲的設計與實現(xiàn)畢業(yè)論文
評論
0/150
提交評論