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

下載本文檔

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

文檔簡(jiǎn)介

1、<p>  《 面向?qū)ο蟪绦蛟O(shè)計(jì)》</p><p><b>  課程設(shè)計(jì)報(bào)告</b></p><p>  題 目: 經(jīng)典推箱子趣味游戲設(shè)計(jì)與實(shí)現(xiàn) </p><p>  院 (系): 信息科學(xué)與工程學(xué)院 </p><p>  專(zhuān)業(yè)班級(jí): 計(jì)算機(jī)科學(xué)與技術(shù)1201班 </

2、p><p>  20 14 年 12 月 29 日至20 15 年 1 月 9 日</p><p>  面向?qū)ο蟪绦蛟O(shè)計(jì) 課程設(shè)計(jì)任務(wù)書(shū)</p><p><b>  目 錄</b></p><p>  1需求與總體設(shè)計(jì)……………………………………………………………………………1</p><

3、;p>  1.1需求分析………………………………………………………………………1</p><p>  1.2總體設(shè)計(jì)………………………………………………………………………2</p><p>  2詳細(xì)設(shè)計(jì)…………………………………………………………………………………4</p><p>  2.1 mainFrame類(lèi)…………………………………………………………

4、……………4</p><p>  2.2 mainpanel類(lèi)………………………………………………………………………5</p><p>  2.3 Sound類(lèi)………………………………………………………………………7</p><p>  2.4 Readmap類(lèi)………………………………………………………………………7</p><p>  3

5、編碼實(shí)現(xiàn) ……………………………………………………………………………9</p><p>  3.1游戲源碼………………………………………………………………………9</p><p>  4系統(tǒng)測(cè)試…………………………………………………………………………………42</p><p>  總結(jié)…………………………………………………………………………………45</p&g

6、t;<p><b>  1需求與總體設(shè)計(jì)</b></p><p><b>  1.1需求分析</b></p><p>  1.1.1功能結(jié)構(gòu)圖</p><p>  推箱子游戲的功能結(jié)構(gòu)圖如圖1.1所示。</p><p>  在系統(tǒng)中,編寫(xiě)4個(gè)Java類(lèi):mainFrame,mainpa

7、nel,Sound,Readmap;分別對(duì)應(yīng)初始化游戲界面,游戲操作,背景音樂(lè),繪制地圖。 </p><p><b>  圖1.1</b></p><p>  1.1.2 UML類(lèi)圖</p><p>  推箱子系統(tǒng)除了上述4個(gè)Java類(lèi)外,還需要Java系統(tǒng)提供的一些重要的類(lèi)。這些類(lèi)之間的UML圖如圖1.2所示。</p><

8、p><b>  圖1.2</b></p><p><b>  1.2總體設(shè)計(jì)</b></p><p>  1.2.1 mainFrame類(lèi)</p><p>  mainFrame類(lèi)負(fù)責(zé)創(chuàng)建系統(tǒng)的主窗口。mainFrame類(lèi)有多種重要類(lèi)型的對(duì)象,這些對(duì)象構(gòu)成了游戲界面的簡(jiǎn)明與美觀(guān),并且通過(guò)監(jiān)聽(tīng)實(shí)現(xiàn)方法賦予了這些組件的相

9、應(yīng)功能。MainFrame類(lèi)通過(guò)調(diào)用Readmap類(lèi)來(lái)實(shí)現(xiàn)將地圖繪制在游戲主界面,通過(guò)調(diào)用Sound類(lèi)來(lái)實(shí)現(xiàn)對(duì)背景音樂(lè)的管理,實(shí)現(xiàn)音樂(lè)開(kāi)關(guān)以及選擇上一曲下一曲的操作。</p><p>  設(shè)計(jì)中包括了所有你所能直觀(guān)見(jiàn)到的圖形界面,窗體的大小,下拉菜單中的功能菜單,使得玩家能夠很直觀(guān)的見(jiàn)到所有游戲中的功能.界面中有菜單, 包括:"選項(xiàng)""設(shè)置音樂(lè)""幫助"

10、。按鈕包括:"重來(lái)""悔一步""第一關(guān)""上一關(guān)""下一關(guān)""最終關(guān)""選關(guān)""音樂(lè)"等。</p><p>  1.2.2 mainpanel類(lèi)</p><p>  Mainpanel類(lèi)中集成了小人與箱子的移動(dòng)規(guī)則,并且還包含了對(duì)鍵

11、盤(pán)操作移動(dòng)的響應(yīng)方法。在本游戲系統(tǒng)中,給人的視覺(jué)感受應(yīng)該是能感受都動(dòng)作的變化,逼真的人物動(dòng)作會(huì)使系統(tǒng)更有效.通過(guò)控制人物,箱子,空地,障礙物在數(shù)組中的位置的改變來(lái)控制移動(dòng)動(dòng)作.</p><p>  小人與箱子移動(dòng)的算法移動(dòng)中包括正移動(dòng),與"悔一步"的負(fù)移動(dòng). 正移動(dòng):小人上下左右的移動(dòng)是由本組咸英智組員所做,歸結(jié)起來(lái)上下左右是一個(gè)判斷的算法,判斷都是通過(guò)判斷小人前面是否是空位箱子或者是墻,如果

12、沒(méi)有就移動(dòng);有的話(huà),據(jù)判斷箱子是否可以移動(dòng),最后討論箱子推過(guò)的,小人移動(dòng),以及被遮擋住點(diǎn)的圖形變化,重新繪制地圖,算法判斷完畢. </p><p>  1.2.3 Sound類(lèi)</p><p>  Sound類(lèi)主要功能是播放背景音樂(lè),包含了一些對(duì)音樂(lè)的操作方法。在玩游戲的同時(shí)聽(tīng)一聽(tīng)動(dòng)聽(tīng)的音樂(lè),有助于舒緩疲勞,放松心情。</p><p>  1.2.4 Readmap

13、類(lèi)</p><p>  Readmap類(lèi)是繪制地圖的類(lèi),將已經(jīng)制作好的地圖繪制在游戲界面上。其主要功能是給用戶(hù)一個(gè)友好的游戲界面,游戲中包括50 關(guān)的地圖,推箱子這個(gè)游戲的50 個(gè)地圖是事先完成的,將所有地圖上面的信息以數(shù)字的形式儲(chǔ)存在一個(gè)20*20 的二維數(shù)組當(dāng)中;然后,每一關(guān)都按照數(shù)組重新繪制地圖,這樣就擁有了50 張地圖。</p><p><b>  2詳細(xì)設(shè)計(jì)</b

14、></p><p>  2.1 mainFrame類(lèi)</p><p>  MainFrame類(lèi)用于初始化屏幕。該類(lèi)首先用兩個(gè)for循環(huán)初始化屏幕20*20范圍內(nèi)的狀態(tài),初始化為0,以后根據(jù)實(shí)際情況重新賦值;然后設(shè)置屏幕輸出狀態(tài),設(shè)置寄存器AX的高位為0,低位為3,表示以80*25的彩色方式顯示;最后移動(dòng)光標(biāo)到指定的位置輸出。</p><p>  設(shè)置界面的標(biāo)題

15、,窗口大小,添加按鈕組件以及各種組件的布局</p><p>  super("推箱子咯");//設(shè)置標(biāo)題</p><p>  setSize(720,720);</p><p>  setVisible(true);//設(shè)置窗口可見(jiàn)</p><p>  setResizable(false);</p><

16、;p><b>  //創(chuàng)建按鈕</b></p><p>  btnrenew=new JButton("重來(lái)");</p><p>  btnback=new JButton("悔一步");</p><p>  btnlast=new JButton("上一關(guān)");</p&

17、gt;<p>  btnnext=new JButton("下一關(guān)");</p><p>  btnchoose=new JButton("選關(guān)");</p><p>  btnfirst=new JButton("第1關(guān)");</p><p>  btnover=new JButton(&q

18、uot;最終關(guān)");</p><p>  btnmuc=new JButton("音樂(lè)關(guān)");</p><p>  actionPerformed(ActionEvent)</p><p>  itemStateChanged(ItemEvent)</p><p>  2.2 mainpanel類(lèi)</p&g

19、t;<p>  該類(lèi)用于移動(dòng)箱子,包括目的地之間、空地之間和目的地與空地之間的箱子移動(dòng)。小人與箱子移動(dòng)的算法移動(dòng)中包括正移動(dòng),與"悔一步"的負(fù)移動(dòng). 正移動(dòng):小人上下左右的移動(dòng)是由本組咸英智組員所做,歸結(jié)起來(lái)上下左右是一個(gè)判斷的算法,判斷都是通過(guò)判斷小人前面是否是空位箱子或者是墻,如果沒(méi)有就移動(dòng);有的話(huà),據(jù)判斷箱子是否可以移動(dòng),最后討論箱子推過(guò)的,小人移動(dòng),以及被遮擋住點(diǎn)的圖形變化,重新繪制地圖,算法判

20、斷完畢.傳出數(shù)據(jù)記錄在,一個(gè)棧當(dāng)中,以備"悔一步"使用. 負(fù)移動(dòng):通過(guò)記錄在棧中的數(shù)據(jù)判斷,前一步是的移動(dòng)方向以及移動(dòng)使用過(guò)的算法,逆向?qū)⒋a重新運(yùn)行,同時(shí)繪制地圖以達(dá)到前一步的狀態(tài).</p><p>  Mainpanel類(lèi)中包含了</p><p>  (1)重來(lái):重新開(kāi)始當(dāng)前關(guān); </p><p> ?。?)悔一步:返回上一移動(dòng)狀態(tài)(可以連續(xù)

21、返回多步) </p><p> ?。?)第一關(guān):游戲系統(tǒng)默認(rèn)開(kāi)始關(guān)為第一關(guān),此按鈕可以將關(guān)從其它關(guān)跳躍到第一關(guān). </p><p>  (4)上一關(guān):返回到當(dāng)前關(guān)的上一關(guān); </p><p> ?。?)下一關(guān):返回到當(dāng)前關(guān)的下一關(guān); </p><p> ?。?)最終關(guān):跳躍到最后一關(guān),即第五十關(guān); </p><p>

22、; ?。?)選關(guān):選擇想要玩的關(guān); </p><p> ?。?)音樂(lè)關(guān)(開(kāi)) :默認(rèn)為開(kāi),點(diǎn)擊自動(dòng)關(guān)閉音樂(lè)和開(kāi)啟音樂(lè). </p><p>  (9)更換音樂(lè):從不同的音樂(lè)中選取適合玩家的音樂(lè).</p><p><b>  鍵盤(pán)操作的方法</b></p><p>  iswin()//判斷是否獲勝</p>&

23、lt;p>  isMystackEmpty()</p><p>  paint(Graphics)</p><p>  箱子移動(dòng)與人物移動(dòng)的方法。該方法是實(shí)現(xiàn)箱子的移動(dòng)。根據(jù)游戲規(guī)則,箱子可以在空地之間、目的地之間、空地和目的地之間來(lái)回移動(dòng)。</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>  鍵盤(pán)監(jiān)聽(tīng)</b></p><p>  keyReleased(KeyEvent)//釋放鍵盤(pán)</p><p>  key

26、Typed(KeyEvent)//判斷鍵盤(pán)操作是否有效</p><p>  keyPressed(KeyEvent)//按下鍵盤(pán)</p><p>  2.3 Sound類(lèi)</p><p> ?。?)將本地音樂(lè)讀取進(jìn)程序</p><p>  loadSound() </p><p>  (2)音樂(lè)關(guān)(開(kāi)) :默認(rèn)為開(kāi),點(diǎn)

27、擊自動(dòng)關(guān)閉音樂(lè)和開(kāi)啟音樂(lè). </p><p><b>  mystop()</b></p><p><b>  isplay()</b></p><p> ?。?)更換音樂(lè):從不同的音樂(lè)中選取適合玩家的音樂(lè).</p><p>  setMusic(String)</p><p&g

28、t;  2.4 Readmap類(lèi)</p><p>  該模塊主要是被其它模塊調(diào)用,用于畫(huà)墻、在空地畫(huà)箱子、在目的地畫(huà)箱子、畫(huà)小人和畫(huà)目的地。形成地圖以二維數(shù)組的形式進(jìn)行存儲(chǔ)的,不同的數(shù)字有著不同的含義.在地圖當(dāng)中不同的數(shù)字代表不同的含義我當(dāng)時(shí)是將0~9 解讀成為不同的圖形與圖像. ①"0"代表"地圖以?xún)?nèi)的空位"; ②"1"代表"地圖中的邊緣&

29、quot;; ③"2"代表"地圖以?xún)?nèi)的空位非點(diǎn)位; ④"3"代表"地圖中的箱子"; ⑤"4"代表"點(diǎn)位"; ⑥"5"代表"小人面部朝下"; ⑦"6"代表"小人面部朝左"; 課程設(shè)計(jì)說(shuō)明書(shū)⑧"7"代表"小人面部朝右&q

30、uot;; ⑨"8"代表"小人面部朝上"; ⑩"9"代表"箱子已經(jīng)到達(dá)點(diǎn)位。</p><p>  Readmap(int)//讀取地圖文件</p><p>  getmap()//獲取地圖用于在目的地畫(huà)箱子,傳入?yún)?shù)x、y指明位置。該類(lèi)調(diào)用getmap()進(jìn)行輸出,</p><p><b&g

31、t;  3編碼實(shí)現(xiàn)</b></p><p>  3.1推箱子游戲設(shè)計(jì)源碼</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>  //程序主方法,游戲由此開(kāi)始&

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>  //顯示游戲的主界面,一些常用組件的布局及其相應(yīng)功能的監(jiān)聽(tīng)與實(shí)現(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>  //主界面上的菜單和選項(xiàng)</p><p>  MenuItem

38、 renew=new MenuItem("重新開(kāi)始");</p><p>  MenuItem back=new MenuItem("悔一步");</p><p>  MenuItem last=new MenuItem("上一關(guān)");</p><p>  MenuItem next=new MenuIte

39、m("下一關(guān)");</p><p>  MenuItem choose=new MenuItem("選關(guān)");</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("默認(rèn)");</p><p>

41、  MenuItem eye=new MenuItem("eyes on me");</p><p>  MenuItem about=new MenuItem("關(guān)于推箱子");</p><p>  mainFrame()</p><p><b>  {</b></p><p>

42、  super("推箱子咯");//設(shè)置標(biāo)題</p><p>  setSize(720,720);</p><p>  setVisible(true);//設(shè)置窗口可見(jiàn)</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>  //選項(xiàng)菜單的菜單項(xiàng)的添加</p><p>  Menu choice=new Menu("選項(xiàng)");</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>  //給選項(xiàng)菜單的菜單項(xiàng)添加監(jiān)聽(tīng)</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>  //給背景音樂(lè)菜單添加菜單項(xiàng)</p><p>  Menu setmuc=new Menu("設(shè)置音樂(lè)");</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>  //給背景音樂(lè)菜單項(xiàng)添加監(jiān)聽(tīng)</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>  //給幫助菜單添加菜單項(xiàng)及監(jiān)聽(tīng)</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("更換音樂(lè)",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("重來(lái)");</p><p>  btnback=new JButton("悔一步

55、");</p><p>  btnlast=new JButton("上一關(guān)");</p><p>  btnnext=new JButton("下一關(guān)");</p><p>  btnchoose=new JButton("選關(guān)");</p><p>  btnfirst

56、=new JButton("第1關(guān)");</p><p>  btnover=new JButton("最終關(guān)");</p><p>  btnmuc=new JButton("音樂(lè)關(guān)");</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>  //設(shè)置按鈕組件的大小及添加監(jiān)聽(tīng)</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>  //添加背景音樂(lè)名到窗口</p><p>  jc.addItem("默認(rèn)"

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、對(duì)主界面上的一些按鈕的功能的監(jiān)聽(tīng)及實(shí)現(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,"本關(guān)是第一關(guān)");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,"本關(guān)已是最后一關(guān)");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,"請(qǐng)輸入您要轉(zhuǎn)到的關(guān)卡號(hào):(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, "沒(méi)有這一關(guān)?。。?quot;);</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;音樂(lè)開(kāi)");</p><p><b>  }</b></p><p><b>  else </b></p><p><b>  {</b></p><p>  sound.loadSound();</p><p>  btnmuc.set

85、Label("音樂(lè)關(guān)");</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, "您還未移動(dòng)!?。?quot;);</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>  //對(duì)音樂(lè)選項(xiàng)的操作實(shí)現(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("音樂(lè)關(guān)");</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("音樂(lè)關(guān)");</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("音樂(lè)關(guān)");</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("音樂(lè)關(guān)");</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("音樂(lè)關(guān)");</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>  //游戲操作功能的實(shí)現(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>  //設(shè)置大小</b></p><p>  setBounds(15,50,600,600);<

117、;/p><p><b>  //設(shè)置顏色</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>  //開(kāi)始繪制地圖</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>  //設(shè)置顏色</b></p><p>  g.setColor(new Color(0,0,0));</p><p><b>  //設(shè)置字體</b></p><p>  g.setFont(new Font("楷體_2312",Font.BOLD,30));</p>

125、<p><b>  //設(shè)置關(guān)數(shù)</b></p><p>  g.drawString("現(xiàn)在是第",150,40);</p><p>  g.drawString(String.valueOf(level),310,40);</p><p>  g.drawString("關(guān)",360,40

126、);</p><p><b>  }</b></p><p>  //實(shí)現(xiàn)鍵盤(pán)控制移動(dòng)的方法</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>  //上移鍵實(shí)現(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>  //下移鍵實(shí)現(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>  //左移鍵實(shí)現(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>  //右移鍵實(shí)現(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>  //通過(guò)最后一關(guān)時(shí)顯示"恭喜您通過(guò)最后一關(guān)?。?!"</p><p>  JOptionPane.showMessageDialog(t

132、his, "恭喜您通過(guò)最后一關(guān)?。?!");</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  //通過(guò)非最后一關(guān)時(shí)顯示"恭喜您通過(guò)第"&quo

133、t;關(guān)!!!\n是否要進(jìn)入下一關(guān)?"</p><p>  String msg="恭喜您通過(guò)第"+level+"關(guān)!!!\n是否要進(jìn)入下一關(guān)?";</p><p>  int type=JOptionPane.YES_NO_OPTION;</p><p>  String title="過(guò)關(guān)";&

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>  //無(wú)鍵盤(pán)操作時(shí)返回?zé)o操作</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>  //實(shí)現(xiàn)上移操作</b></p><p

溫馨提示

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

評(píng)論

0/150

提交評(píng)論