版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、推箱子趣味游戲1. 課程設(shè)計(jì)的目的隨著科學(xué)技術(shù)的發(fā)展,人們的生活水平越來(lái)越繁忙,在充滿競(jìng)爭(zhēng)的社會(huì)條件下,壓力往往帶給人們很多煩惱,所以合理的解壓方式稱為現(xiàn)代人的共同心愿. 為了給大家提供一個(gè)合理的解壓平臺(tái), 我們?cè)诒敬握n程設(shè)計(jì)中為大家開(kāi)發(fā)了一款適合休閑娛樂(lè)的小游戲, 本次課程設(shè)計(jì)是配合 JAVA 程序設(shè)計(jì)課程,深入學(xué)習(xí)掌握 JAVA 語(yǔ)言,熟練 運(yùn)用 Java 工具對(duì)系統(tǒng)的編寫(xiě).通過(guò)課程設(shè)計(jì)各個(gè)項(xiàng)目的綜合訓(xùn)練,培養(yǎng)學(xué)生實(shí) 際分析問(wèn)題,編程和動(dòng)手能力,提高學(xué)生的綜合素質(zhì).2. 設(shè)計(jì)方案論證2.1概要設(shè)計(jì)2.1.1 系統(tǒng)功能描述2.1.2 系統(tǒng)開(kāi)發(fā)環(huán)境(1) 硬件環(huán)境CPU:PentiumIII
2、600 以上內(nèi)存要求:600MB 以上 內(nèi)存剩余資源:128MB 以上(2) 軟件環(huán)境JDK 1.6 及其以上版本2.2詳細(xì)設(shè)計(jì)2.2.1 程序流程圖推箱子游戲主要分為初始化模塊, 畫(huà)圖模塊, 移動(dòng)箱子模塊, 移動(dòng)小人模塊, 功能控制模塊.推箱子游戲功能模塊圖如圖 3.1 所示.圖 3.1 功能模塊圖2.2.2程序中自定義類說(shuō)明(1)重來(lái):重新開(kāi)始當(dāng)前關(guān); (2)悔一步:返回上一移動(dòng)狀態(tài)(可以連續(xù)返回多步) ;(3)第一關(guān):游戲系統(tǒng)默認(rèn)開(kāi)始關(guān)為第一關(guān),此按鈕可以將關(guān)從其它關(guān)跳躍到第一關(guān). (4)上一關(guān):返回到當(dāng)前關(guān)的上一關(guān); (5)下一關(guān):返回到當(dāng)前關(guān)的下一關(guān); (6)最終關(guān):跳躍到最后一關(guān),
3、即第五十關(guān);(7)選關(guān):選擇想要玩的關(guān); (8)音樂(lè)關(guān)(開(kāi)) :默認(rèn)為開(kāi),點(diǎn)擊自動(dòng)關(guān)閉音樂(lè)和開(kāi)啟音樂(lè). (9)更換音樂(lè):從不同的音樂(lè)中選取適合玩家的音樂(lè). 2.2.3程序中主要方法說(shuō)明(1)界面框架與按鈕設(shè)計(jì)界面設(shè)計(jì)中包括了,所有你所直觀見(jiàn)到的圖形界面,窗體的大小,下拉菜單 中的功能菜單,使得玩家能夠很直觀的見(jiàn)到所有游戲中的功能.界面中有菜單, 包括:"選項(xiàng)""設(shè)置音樂(lè)""幫助", , .按鈕包括:"重來(lái)""悔一步""第一關(guān)", , ,"上一關(guān)""
4、;下一關(guān)""最終關(guān)""選關(guān)""音樂(lè)", , , , . 詳細(xì)代碼:(2)地圖的繪制形成地圖以二維數(shù)組的形式進(jìn)行存儲(chǔ)的,不同的數(shù)字有著不同的含義.在地圖當(dāng)中不同的數(shù)字代表不同的含義我當(dāng)時(shí)是將 09 解讀成為不同的圖形與圖像."0"代表"地圖以內(nèi)的空位""1"代表"地圖中的邊緣""2"代表"地圖以內(nèi)的空位非點(diǎn)位;"3"代表"地圖中的箱子""4"代表"點(diǎn)
5、位""5"代表"小人面部朝下""6"代表"小人面部朝左""7"代表"小人面部朝右""8"代表"小人面部朝上""9"代表"箱子已經(jīng)到達(dá)點(diǎn)位。(3)推箱子游戲的游戲性其主要功能是給用戶一個(gè)友好的游戲界面,游戲中包括 50 關(guān)的地圖,推箱 子這個(gè)游戲的 50 個(gè)地圖是事先完成的,將所有地圖上面的信息以數(shù)字的形式儲(chǔ) 存在一個(gè) 20*20 的二維數(shù)組當(dāng)中;然后,每一關(guān)都按照數(shù)組重新繪制地圖,這樣 就擁有了
6、50 張地圖(4)小人與箱子移動(dòng)的算法 移動(dòng)中包括正移動(dòng),與"悔一步"的負(fù)移動(dòng). 正移動(dòng):小人上下左右的移動(dòng)是由本組咸英智組員所做,歸結(jié)起來(lái)上下左右是一個(gè)判斷的算法,判斷都是通過(guò)判斷小人前面是否是空位箱子或者是墻,如果 沒(méi)有,就移動(dòng);有的話,據(jù)判斷箱子是否可以移動(dòng),最后討論箱子推過(guò)的,小人 移動(dòng),以及被遮擋住點(diǎn)的圖形變化,重新繪制地圖,算法判斷完畢.傳出數(shù)據(jù)記 錄在,一個(gè)棧當(dāng)中,以備"悔一步"使用. 負(fù)移動(dòng):通過(guò)記錄在棧中的數(shù)據(jù)判斷,前一步是的移動(dòng)方向以及移動(dòng)使用過(guò) 的算法,逆向?qū)⒋a重新運(yùn)行,同時(shí)繪制地圖以達(dá)到前一步的狀態(tài).(5)移動(dòng)的代碼 在本游戲系
7、統(tǒng)中,給人的視覺(jué)感受應(yīng)該是能感受都動(dòng)作的變化,逼真的人物 動(dòng)作會(huì)使系統(tǒng)更有效.通過(guò)控制人物,箱子,空地,障礙物在數(shù)組中的位置的改 變來(lái)控制移動(dòng)動(dòng)作.(6)棧的應(yīng)用 推箱子中的數(shù)據(jù)存儲(chǔ)是很重要的,不然無(wú)法進(jìn)行"悔一步"的操作.本系統(tǒng) 采用棧的存儲(chǔ)方式來(lái)存儲(chǔ)并控制人物,箱子的移動(dòng)和地圖的變換.悔一步操作讓 玩家有了反悔的一步,這節(jié)省玩家的時(shí)間,避免因錯(cuò)位導(dǎo)致重新開(kāi)始3. 設(shè)計(jì)結(jié)果與分析3.1 程序運(yùn)行結(jié)果程序的運(yùn)行結(jié)果如下圖所示:圖二 推箱子游戲第一關(guān)界面圖三 推箱子游戲第一關(guān)界面3.2 尚需解決的問(wèn)題游戲的背景音樂(lè)比較單一,可以通過(guò)在“選項(xiàng)”模式中添加“背景音樂(lè)導(dǎo)入”模塊,導(dǎo)
8、入玩家自己喜歡的音樂(lè)3.3 程序部分代碼(1)界面框架與按鈕設(shè)計(jì)class mainFrame extends JFrame implements ActionListener,ItemListenerprivate static final long serialVersionUID = 1L;JLabel lb;JLabel lb2;JButton btnrenew,btnlast,btnnext,btnchoose,btnfirst,btnover,btnmuc,btnback;mainpanel panel;Sound sound;JComboBox jc=new JComboBox(
9、);MenuItem renew=new MenuItem(" 重新開(kāi)始");MenuItem back=new MenuItem(" 悔一步");MenuItem last=new MenuItem(" 上一關(guān)");MenuItem next=new MenuItem(" 下一關(guān)");MenuItem choose=new MenuItem(" 選關(guān)");MenuItem exit=new MenuItem(" 退出");MenuItem qin=new MenuItem(
10、" 琴蕭合奏");MenuItem po=new MenuItem(" 泡泡堂");MenuItem guang=new MenuItem(" 灌籃高手");MenuItem nor=new MenuItem(" 默認(rèn)");MenuItem eye=new MenuItem(" eyes on me");MenuItem about=new MenuItem(" 關(guān)于推箱子.");mainFrame()super("推箱子v2.0");setSize(72
11、0,700);setVisible(true);setResizable(false);setLocation(150,10);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);Container cont=getContentPane();cont.setLayout(null);cont.setBackground(Color.black);Menu choice=new Menu(" 選項(xiàng)");choice.add(renew);choice.add(last);choice.add(next);choice.add(cho
12、ose);choice.add(back);choice.addSeparator();choice.add(exit);renew.addActionListener(this);last.addActionListener(this);next.addActionListener(this);choose.addActionListener(this);exit.addActionListener(this);back.addActionListener(this);Menu setmuc=new Menu(" 設(shè)置音樂(lè)");setmuc.add(nor);setmuc
13、.add(qin);setmuc.add(po);setmuc.add(guang);setmuc.add(eye);nor.addActionListener(this);qin.addActionListener(this);po.addActionListener(this);guang.addActionListener(this);eye.addActionListener(this);Menu help=new Menu(" 幫助");help.add(about);about.addActionListener(this);MenuBar bar=new Me
14、nuBar();bar.add(choice);bar.add(setmuc);bar.add(help);setMenuBar(bar); nor.setEnabled(false);lb=new JLabel("推箱子",SwingConstants.CENTER);lb2=new JLabel("更換音樂(lè)",SwingConstants.CENTER);add(lb);add(lb2);lb.setBounds(100,20,400,20);lb.setForeground(Color.white);lb2.setBounds(625,500,55
15、,20);lb2.setForeground(Color.white);btnrenew=new JButton("重來(lái)");btnback=new JButton("悔一步");btnlast=new JButton("上一關(guān)");btnnext=new JButton("下一關(guān)");btnchoose=new JButton("選關(guān)");btnfirst=new JButton("第關(guān)");btnover=new JButton("最終關(guān)");btnm
16、uc=new JButton("音樂(lè)關(guān)");add(btnrenew);add(btnlast);add(btnnext);add(btnchoose);add(btnfirst);add(btnover);add(btnmuc);add(btnback);btnrenew.setBounds(625,100,80,30);btnrenew.addActionListener(this);btnback.setBounds(625,150,80,30);btnback.addActionListener(this);btnfirst.setBounds(625,200,80
17、,30);btnfirst.addActionListener(this);btnlast.setBounds(625,250,80,30);btnlast.addActionListener(this);btnnext.setBounds(625,300,80,30);btnnext.addActionListener(this);btnover.setBounds(625,350,80,30);btnover.addActionListener(this);btnchoose.setBounds(625,400,80,30);btnchoose.addActionListener(this
18、);btnmuc.setBounds(625,450,80,30);btnmuc.addActionListener(this);jc.setBounds(625,530,80,20);jc.addItem("默認(rèn)");jc.addItem("琴蕭合奏");jc.addItem("泡泡堂");-*jc.addItem("灌籃高手");jc.addItem("eyes on me");jc.addItemListener(this);cont.add(jc);sound=new Sound();s
19、ound.loadSound();panel=new mainpanel();add(panel);panel.Tuixiangzi(panel.level);panel.requestFocus();validate();4. 設(shè)計(jì)體會(huì)通過(guò)這次課程設(shè)計(jì)我充分了解了理論與課程設(shè)計(jì)相結(jié)合的重要性, 理論基礎(chǔ)上必須有實(shí)際上的應(yīng)用,在實(shí)際的應(yīng)用中才能發(fā)現(xiàn)個(gè)種問(wèn)題,再靈活的應(yīng)用理論知識(shí)去解決它們.在這一周的學(xué)習(xí)過(guò)程中,我不僅能夠把以前所學(xué)知識(shí)聯(lián)系起來(lái),并且還學(xué)會(huì)了一些新的知識(shí). 在此期間通過(guò)對(duì) JAVA 設(shè)計(jì)的系統(tǒng)訓(xùn)練,使我基本上達(dá)到了這周的課程設(shè)計(jì) 目的,并且懂得了要想學(xué)好課,除了要有扎實(shí)的基礎(chǔ)知識(shí)
20、的功底深厚外,還需要 有一定的實(shí)踐動(dòng)手能力,操作能力.我們要學(xué)習(xí)別人的長(zhǎng)處,改掉自己的缺點(diǎn), 要懂得用網(wǎng)絡(luò),現(xiàn)在的網(wǎng)絡(luò)包括的知識(shí)很多,就是看你能不能把握住,有沒(méi)有那個(gè)心.在網(wǎng)絡(luò)上要善于討論,在論壇里向那些高人學(xué)習(xí),學(xué)習(xí)他們學(xué)習(xí)的方法和思想. 雖然課程設(shè)計(jì)已經(jīng)完事,可是我們覺(jué)得應(yīng)該繼續(xù)努力,自己做點(diǎn)東西,增加自己的學(xué)習(xí)經(jīng)歷和學(xué)習(xí)經(jīng)驗(yàn),不斷的深入,了解它的內(nèi)部,借助它創(chuàng)造財(cái)富.課程設(shè)計(jì)之所以進(jìn)行的如此順利,得力于老師的信任和支持,得力于同學(xué)們的真誠(chéng)配合和勤勉不斷的努力!為此,我們深深地感恩!感謝老師諄諄教導(dǎo),感恩同學(xué)們間的互幫互助.5. 參考文獻(xiàn)1 馬朝暉(譯).JAVA教程(第4版).北京:人民
21、郵電出版社,20072 王國(guó)輝等.JAVA程序設(shè)計(jì)自學(xué)手冊(cè).北京:人民郵電出版社,20083 耿祥義.JAVA2 實(shí)用教程.北京:清華大學(xué)出版社,20064 朱仲杰.JAVA2 全方位學(xué)習(xí).北京:機(jī)械工業(yè)出版社,2006 5 張思民.JAVA程序設(shè)計(jì)實(shí)踐教程.北京:清華大學(xué)出版社,20066 湯一平.Java 語(yǔ)言程序設(shè)計(jì).北京:科學(xué)出版社,20067 劉藝.Java 程序設(shè)計(jì)大學(xué)教程. 北京:機(jī)械工業(yè)出版社,20068 耿祥義.Java課程設(shè)計(jì).北京:清華大學(xué)出版社,20039 Sharon Zakhour. Java教程. 北京:人民郵電出版社,20076. 附錄程序具體代碼:(1)音樂(lè)調(diào)
22、用代碼如下:class SoundString path=new String("musics");String file=new String("nor.mid");Sequence seq;Sequencer midi;boolean sign;void loadSound()try seq=MidiSystem.getSequence(new File(path+file);midi=MidiSystem.getSequencer();midi.open();midi.setSequence(seq);midi.start();midi.setLo
23、opCount(Sequencer.LOOP_CONTINUOUSLY);catch (Exception ex) ex.printStackTrace();sign=true;void mystop()midi.stop();midi.close();sign=false;boolean isplay()return sign;void setMusic(String e)file=e;(2)物移動(dòng)代碼:void moveup()if(mapmanY-1manX=2|mapmanY-1manX=4)if(maptmpmanYmanX=4|maptmpmanYmanX=9)mapmanYman
24、X=4;else mapmanYmanX=2;mapmanY-1manX=8;repaint();manY-;mystack.push(10);else if(mapmanY-1manX=3)if(mapmanY-2manX=4)if(maptmpmanYmanX=4|maptmpmanYmanX=9)mapmanYmanX=4;else mapmanYmanX=2;mapmanY-1manX=8;mapmanY-2manX=9;repaint();manY-;mystack.push(11);else if(mapmanY-2manX=2)if(maptmpmanYmanX=4|maptmp
25、manYmanX=9)mapmanYmanX=4;else mapmanYmanX=2;mapmanY-1manX=8;mapmanY-2manX=3;repaint();manY-;mystack.push(11);else mapmanYmanX=8;repaint();else if(mapmanY-1manX=9)if(mapmanY-2manX=4)if(maptmpmanYmanX=4|maptmpmanYmanX=9)mapmanYmanX=4;else mapmanYmanX=2;mapmanY-1manX=8;mapmanY-2manX=9;repaint();manY-;m
26、ystack.push(11);else if(mapmanY-2manX=2)if(maptmpmanYmanX=4|maptmpmanYmanX=9)mapmanYmanX=4;else mapmanYmanX=2;mapmanY-1manX=8;mapmanY-2manX=3;repaint();manY-;mystack.push(11);else mapmanYmanX=8;repaint();if(mapmanY-1manX=1)mapmanYmanX=8;repaint();else if(e.getSource()=btnback|e.getSource()=back)if(p
27、anel.isMystackEmpty()JOptionPane.showMessageDialog(this, "您還未移動(dòng)!");elseswitch(panel.back()case 10:panel.backup(10);break;case 11:panel.backup(11);break;case 20:panel.backdown(20);break;case 21:panel.backdown(21);break;case 30:panel.backleft(30);break;case 31:panel.backleft(31);break;case 4
28、0:panel.backright(40);break;case 41:panel.backright(41);break;panel.requestFocus();else if(e.getSource()=nor)jc.setSelectedIndex(0);else if(e.getSource()=qin)jc.setSelectedIndex(1);else if(e.getSource()=guang)jc.setSelectedIndex(3);else if(e.getSource()=eye)jc.setSelectedIndex(4);else if(e.getSource()=po)jc.setSelectedIndex(2);boolean isMystac
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《證券交易概論》課件
- 《信號(hào)的描述和分類》課件
- 酒渣鼻樣結(jié)核疹的臨床護(hù)理
- 選擇性lgA缺乏癥的臨床護(hù)理
- 單純性外陰炎的健康宣教
- 《機(jī)床電氣線路的安裝與調(diào)試》課件-第9章
- 奶稀的健康宣教
- 孕期抗磷脂抗體綜合征的健康宣教
- 子宮壁妊娠的健康宣教
- 小腿皮炎的臨床護(hù)理
- 高數(shù)1-7章總復(fù)習(xí)
- 諸葛亮人物介紹PPT
- 冀教版小學(xué)數(shù)學(xué)二年級(jí)上冊(cè)第四單元綜合素質(zhì)達(dá)標(biāo)含答案
- 宇電溫控器ai 500 501用戶手冊(cè)s 6中文說(shuō)明書(shū)
- 建立完善安全生產(chǎn)風(fēng)險(xiǎn)分級(jí)管控和隱患排查治理雙重預(yù)防機(jī)制建設(shè)實(shí)施方案
- 電焊條生產(chǎn)工藝知識(shí)大全
- 學(xué)術(shù)英語(yǔ)寫(xiě)作知到章節(jié)答案智慧樹(shù)2023年天津外國(guó)語(yǔ)大學(xué)
- 報(bào)聯(lián)商整合版專題培訓(xùn)課件
- 認(rèn)知覺(jué)醒:開(kāi)啟自我改變的原動(dòng)力
- 檢驗(yàn)檢測(cè)機(jī)構(gòu)資質(zhì)認(rèn)定文件資料審查表、簽到表、記錄表、確認(rèn)意見(jiàn)表、工作評(píng)價(jià)反饋表
- 醫(yī)保檢查自查自糾報(bào)告
評(píng)論
0/150
提交評(píng)論