




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
精品精品、八、,
刖言Java最初被命名為Oak,目標設(shè)定在家用電器等小型系統(tǒng)的編程語言,來解決諸如電視機、電話、鬧鐘、烤面包機等家用電器的控制和通訊問題。由于這些智能化家電的市場需求沒有預(yù)期的高, Sun放棄了該項計劃。就在 Oak幾近失敗之時,隨著互聯(lián)網(wǎng)的發(fā)展,Sun看到了Oak在計算機網(wǎng)絡(luò)上的廣闊應(yīng)用前景。于是改造了 Oak,以“Java”的名稱正式發(fā)布。Java編程語言的風格十分接近 C、C++語言。Java是一個純的面向?qū)ο蟮某绦蛟O(shè)計語言,它繼承了 C++語言面向?qū)ο蠹夹g(shù)的核心。 Java舍棄了C++語言中容易引起錯誤的指針(以引用取代)、運算符重載( operatoroverloading)、多重繼承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的對象所占據(jù)的內(nèi)存空間,使得程序員不用再為內(nèi)存管理而擔憂。在 JavaSE1.5版本中,Java又引入了泛型編程(GenericProgramming)、類型安全的枚舉、不定長參數(shù)和自動裝 /拆箱等語言特性。Java不同于一般的編譯執(zhí)行計算機語言和解釋執(zhí)行計算機語言。它首先將源代碼編譯成二進制字節(jié)碼( bytecode),然后依賴各種不同平臺上的虛擬機來解釋執(zhí)行字節(jié)碼。從而實現(xiàn)了“一次編譯、到處執(zhí)行”的跨平臺特性。不過,每次的編譯執(zhí)行需要消耗一定的時間,這同時也在一定程度上降低了 Java程序的運行效率。但在J2SE142 發(fā)布后,Java的執(zhí)行速度有了大幅提升。與傳統(tǒng)程序不同,Sun公司在推出Java之際就將其作為一種開放的技術(shù)。 全球數(shù)以萬計的Java開發(fā)公司被要求所設(shè)計的 Java軟件必須相互兼容?!癑ava語言靠群體的力量而非公司的力量”是 Sun公司的口號之一,并獲得了廣大軟件開發(fā)商的認同。這與微軟公司所倡導的注重精英和封閉式的模式完全不同。Sun公司對Java編程語言的解釋是: Java編程語言是個簡單、面向?qū)ο?、分布式、解釋性、健壯、安全與系統(tǒng)無關(guān)、可移植、高性能、多線程和動態(tài)的語言。正文課程設(shè)計目的《JAVA程序設(shè)計》是計算機相關(guān)專業(yè)的必修專業(yè)基礎(chǔ)課程,其實踐性、應(yīng)用性很強。實踐教學環(huán)節(jié)是必不可少的一個重要環(huán)節(jié)。本課程的程序設(shè)計專題實際是計算機相關(guān)專業(yè)學生學習完《JAVA程序設(shè)計》課程后,進行的一次全面的綜合訓練, JAVA程序設(shè)計的設(shè)計目的是加深對理論教學內(nèi)容的理解和掌握,使學生較系統(tǒng)地掌握程序設(shè)計及其在網(wǎng)絡(luò)開發(fā)中的廣泛應(yīng)用,基本方法及技巧,為學生綜合運用所學知識,利用軟件工程為基礎(chǔ)進行軟件開發(fā)、并在實踐應(yīng)用方面打下一定基礎(chǔ)。工程概況案例提出及工程用時經(jīng)過兩天在圖書館以及網(wǎng)絡(luò)上查閱的資料,然后提出這次課程設(shè)計的目標《貪吃蛇游戲》的設(shè)計。然后接下來就是查閱更多的資料,制定接下來的詳細計劃,最終計劃用兩周的時間完成此次課程設(shè)計提出的案例。開發(fā)環(huán)境硬件環(huán)境:CPU:IntelPentium(R)4主頻:2.40GHz內(nèi)存:256MB軟件環(huán)境:操作系統(tǒng):WindowsXP編程環(huán)境:JDK1.6開發(fā)工具:Eclipsejdk3.1設(shè)計方案論證3.1.1設(shè)計思路貪吃蛇游戲設(shè)計與實現(xiàn),主要分為以下二個模塊:游戲主界面模塊和游戲控制模塊。在此只實現(xiàn)游戲的游戲主界面模塊、游戲控制模塊。并且只是實現(xiàn)移動速度、暫停、重新開始等功能。游戲主界面模塊:游戲的主界面是進入游戲后,能夠給玩家第一感官的部分,主要包括游戲圖形區(qū)域界面、游戲的速度選擇更新界面、新生方塊的預(yù)覽、暫停游戲按鈕、重新開始游戲按鈕。從很大程度上決定了玩家對游戲的興趣問題,因此,游戲的主界面應(yīng)該力求美觀,爽心悅目。游戲控制模塊:這個模塊是游戲的中心環(huán)節(jié),主要完成控制游戲的開始、暫停、重新開始等功能。為了能夠給玩家一個很好的游戲環(huán)境,這部分應(yīng)該做到易懂、易操作。本設(shè)計所開發(fā)的是基于Java的一個貪吃蛇游戲軟件,主要實現(xiàn)游戲的速度控制、游戲的暫停、游戲的退出等功能,分為:游戲主界面模塊、游戲控制模塊以二個模塊。程序概述本程序是一個利用Java應(yīng)用軟件制作的貪食蛇小游戲。在游戲過程中,用戶通過點擊小鍵盤區(qū)的方向鍵來控制蛇的運行方向;游戲運行過程中,如果想暫停,只需要按F3鍵即可。重新開始游戲的按鍵為F2。當蛇沒有吃到食物且碰到墻壁或自己的身體時游戲結(jié)束。本程序的另一個功能是在程序運行窗口的左上角顯示,用戶在游戲過程中的移動和長度。程序流程圖本次游戲設(shè)計的處理流程如圖1所示。
圖1.程序流程圖3.1.4總設(shè)計模塊的劃分根據(jù)游戲需求中游戲所要實現(xiàn)的功能,整個游戲分為二個模塊進行具體的設(shè)計,如圖 2所示。
圖2.設(shè)計總模塊游戲控制模塊的主要框架如圖3所示。圖3.控制模塊框架游戲暫??刂疲狐c擊“F3”按鈕,游戲暫停;再單擊,游戲繼續(xù)。游戲重新開始控制:點擊“F2”鍵后,點擊確定,即游戲重新開始。游戲退出控制:點擊“F4”鍵好,點擊確定,退出游戲界面。
3.1.5類、方法、屬性說明(1)成員變量表i主要成員變量(屬性)成員變量描述變量類型名稱文件菜單中子菜單“新建”JMenultemmFile_New編輯菜單中子菜單“撤消”JMenultemmEdit_Undo格式菜單中子菜單“顏色”JMenuformatMenu_Color幫助菜單中子菜單“幫助主題”MenultemmHelp_HelpTopics(2)方法表2主要方法方法名功能備注Notepad4()描述記事本無Text.setBackground(Color.black)設(shè)置編輯區(qū)默認背景色無Text.setForeground(Color.black)設(shè)置編輯區(qū)默認前景色無4.1設(shè)計結(jié)果與分析本程序在運行后,能夠正常的相應(yīng)按鍵事件。由于程序的主要部分已經(jīng)集成為一個對象SnakeModel,所以利用鍵盤就可以實現(xiàn)操作。蛇前行的過程中,可以任意向其左或右方向改變方向。點擊F3鍵后游戲就暫停了。點擊 F2鍵游戲重新開始。點擊 F4游戲退出。運行結(jié)果如下圖4所示:
圖4程序運行圖當蛇沒有吃到食物且碰到邊界或碰撞到自己的身體時, 游戲結(jié)束。如果想重新開始即點擊“確定”后按F2鍵,運行結(jié)果如下圖5所示:圖5重新開始圖4.1.1程序異常處理在蛇的運行線程過程中,當蛇撞到墻或自己的身體時, 將拋出一個Exception類的異常對象,然后使用try-catch 去捕捉這個異常,異常的處理如下:try{Thread.sleep(timeInterval);}catch(Exceptione){break;}心得體會通過這次課程設(shè)計,我對這學期所學的 JAVA語言程序設(shè)計有一個更深刻的了解,將所學的知識應(yīng)用于實踐,由于所學知識有限,為了使游戲能夠?qū)崿F(xiàn)自己預(yù)先的構(gòu)想,我通過上網(wǎng)和去圖書館找程序,比較好的流程圖及功能模塊,不斷閱讀修Java改代碼使程序達到預(yù)期所要實現(xiàn)的目標,完成課程設(shè)計后,可以感覺到自己對程序的又有了新的認識。Java理論與實際總之,通過本次的課程設(shè)計,使我平時學到的理論知識得到了很好地升華,得到一次很好的結(jié)合,為我今后參加工作打下了堅實的基礎(chǔ),使我受益匪淺。理論與實際參考文獻[1]趙文靖編者Java程序設(shè)計基礎(chǔ)與上機指導.北京:清華大學出版社,2006[2]趙毅主編.跨干臺程序設(shè)計語言 Java.西女:西女電子科技大學出版社,[3]王路群.Java高級程序設(shè)計.北京:中國水利水電出版社, 2006[4]雍俊海編著.Java程序設(shè)計習題集.北京:清華大學出版社, 2006⑸朱福喜編者.Java語言習題與解析.北京:清華大學出版社, 2006⑹吳其慶編者.Java程序設(shè)計實例教程.北京冶金工業(yè)出版社, 2006程序代碼:importjava.awt.*;mp.setShe(this);importjavax.swing.*;importjava.util.*;JMenuBarcaidan= newJMenuBar();importjava.awt.event.*;JMenushezhi= newJMenu(”設(shè)置");shezhi.setFont(f);publicclassSheextendsJFrameJMenunandu=newJMenu(”難度");implementsActionListener.nandu.setFont(f);WindowListener{JMenubangzhu=newJMenu(”幫助");JLabelbt1;bangzhu.setFont(f);JLabelbt2;caidan.add(shezhi);MyPaintmp;caidan.add(nandu);JMenultemkaishi;caidan.add(bangzhu);JMenultemzanting;JMenultemtuichu;kaishi= newJMenultem(”開始游戲F2");JRadioButtonchu;kaishi.setFont(f);JRadioButtonzhong;kaishi.addActionListener( this);JRadioButtongao;zanting= newJMenultem(”暫停/繼續(xù)JRadioButtonchao;F3");zanting.setFont(f);JMenultemguanyu;Fontf;publicShe(){f=newFont("宋體",Font.PLAIN,12);mp=newMyPaint();zanting.addActionListener( this);tuichu= newJMenultem(”退出F4");tuichu.setFont(f);tuichu.addActionListener( this);chu=newJRadioButton(”初級,最快速度195",true);chu.setFont(f);chu.addActionListener( this);zhong=newJRadioButton(”中級,最快速度225");zhong.setFont(f);zhong.addActionListener( this);gao=newJRadioButton(”高級,最快速度255");gao.setFont(f);gao.addActionListener( this);chao= newJRadioButton(” 超級,最快速度275");chao.setFont(f);chao.addActionListener( this);ButtonGroup bg=newButtonGroup();bg.add(chu);bg.add(zhong);bg.add(gao);bg.add(chao);nandu.add(chu);nandu.add(zhong);nandu.add(gao);nandu.add(chao);guanyu= newJMenultem(”關(guān)于");guanyu.setFont(f);guanyu.addActionListener( this);shezhi.add(kaishi);shezhi.add(zanting);shezhi.add(tuichu);bangzhu.add(guanyu);bt1= newJLabel(" 長度:0");bt1.setFont(f);bt2=newJLabel("移動:5");bt2.setFont(f);JPanelp=newJPanel();p.setLayout(newGridLayout(1,2));p.add(bt1);p.add(bt2);this.addWindowListener(this);//添加窗體監(jiān)聽器this.setJMenuBar(caidan);this.add(p,BorderLayout.NORTHthis.add(mp);this.add(newJLabel(""),BorderLayout.WES)Tthis.setSize(335,385);this.setResizable(false);this.setLocation(300,150);this.setTitle("MyPaint");this.setVisible(true);}publicvoidsetDS(inta,intb){bt1.setText("長度:”+a);bt2.setText("移動:”+b);}publicvoidsetChu(){chu.setSelected(true);mp.setSD(300,110);this.setDS(0,305-300);chu.setEnabled( true);zhong.setEnabled( true);gao.setEnabled(true);chao.setEnabled(true);}publicvoidsetNanDu(){chu.setEnabled( false);zhong.setEnabled( false);gao.setEnabled( false);chao.setEnabled(false);}publicvoidactionPerformed(ActionEvente){if(e.getSource()==zanting){mp.setZanTing();}elseif(e.getSource()==kaishi){mp.setKaiShi();}elseif(e.getSource()==tuichu){mp.setTuiChu();}elseif(e.getSource()==guanyu){JLabelgy=newJLabel("小游戲貪吃蛇V1.0");gy.setFont(f);JOptionPane.showMessageDialoqthis,gy);}elseif(e.getSource()==chu){mp.setSD(300,110);this.setDS(0,305-300);}elseif(e.getSource()==zhong){mp.setSD(250,80);this.setDS(0,305-250);}elseif(e.getSource()==gao){mp.setSD(200,50);this.setDS(0,305-200);}elseif(e.getSource()==chao){mp.setSD(150,30);this.setDS(0,305-150);}}publicstaticvoidmain(String[]args){newShe();}*MethodwindowOpened*@parame*/publicvoidwindowOpened(WindowEvente){// TODOAddyourcodehere}publicvoidwindowClosing(WindowEvente){System.exit(0);}publicvoidwindowClosed(WindowEvente){// TODOAddyourcodehere}publicvoidwindowlconified(WindowEvente){// TODOAddyourcodehere}publicvoidwindowDeiconified(WindowEvente){// TODOAddyourcodehere}publicvoidwindowActivated(WindowEvente){// TODOAddyourcodehere}publicvoidwindowDeactivated(WindowEvente){// TODOAddyourcodehere}}classMyPaintextendsJPanelimplementsRunnable,KeyListener,FocusListener{Shes;Fontf=newFont(”宋體",Font.PLAIN12);intx=150;inty=0;Randomr=newRandom();intsjx=r.nextlnt(300)/10*10;intsjy=r.nextlnt(300)/10*10;intfx=:2;intsw=0;intsd:=300;intcs:=0;
intd=150;String[]zx= newString[1000];booleanzanting=false;booleanzanting1=false;booleansiwang=false;booleanshenti=false;publicMyPaint(){Threadt=newThread(this);t.start();this.addKeyListener(this);this.setFocusable(true);this.addFocusListener(this);}publicvoidsetShe(Shess){s=ss;}publicvoidsetZanTing(){if(zanting){zanting= false;}else{zanting= true;}}publicvoidsetKaiShi(){JLabelks=newJLabel("是否重新開始?");ks.setFont(f);inta=JOptionPane.showConfirmDialog(s,ks);if(a==0){x=150;y=0;sjx=r.nextInt(300)/10*10;sjy=r.nextInt(300)/10*10;fx=2;sw=0;sd=300;cs=0;zanting= false;siwang= false;shenti= false;s.setChu();s.setDS(sw,305-sd);}}publicvoidsetTuiChu(){JLabeltc=newJLabel("確定退出嗎?");tc.setFont(f);inta=JOptionPane.showConfirmDialog(s,tc);if(a==0){s.dispose();System.exit(0);}}publicvoidsetSD(inta,intb){sd=a;d=b;}publicvoidpaint(Graphicsg){zx[cs]=x+"/"+y;super.paint(g);g.setColor(Color.BLACKg.drawRect(0,0,300,300);g.setColor(Color.BLACKg.fillRect(sjx,sjy,10,10);g.setColor(Color.BLUEg.setColor(Color.REDfor(inti=1;i<=sw;i++){g.setColor(Color.REDfor(inti=1;i<=sw;i++){intj=cs-i;if(j<0){j=cs-i+999+1;}String[]s=zx[j].split("/");if(x==Integer. parselnt(s[0]) &&y==Integer. parseInt(s[1])){//蛇撞到自己身上了siwang=true;true;shenti=true;}if(sjx==Integer. parseInt(s[0])&&sjy==Integer.parselnt(s[1])){//食物在蛇身體上g.setColor(Color. BLACKg.fillRect(sjx,sjy,10,10);g.setColor(Color. REDcontinue;}g.fillRect(Integer. parseInt(s[0]),Integer.parseInt(s[1]),10,10);}}publicvoidrun(){while(true){cs++;if(cs==1000){cs=0;}switch(fx){case1:y-=10;//上break;case2:y+=10;〃 下break;case3:x-=10;//左break;case4:x+=10;//右break;}this.repaint();
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 挖掘機平整地面施工方案
- 錨固樁施工方案
- 惠州市潤根電器有限公司 AC 電源線及插頭的生產(chǎn)建設(shè)項目環(huán)評報告表
- 初中半期考答案數(shù)學試卷
- 仿玉石樓梯扶手施工方案
- 小學校園內(nèi)管網(wǎng)施工方案
- 房建地下連續(xù)梁施工方案
- 別墅的專項施工方案
- 農(nóng)田排水降水施工方案
- 黃桃高產(chǎn)栽培技術(shù)的高效應(yīng)用及科學推廣措施分析
- DBJ∕T 15-104-2015 預(yù)拌砂漿混凝土及制品企業(yè)試驗室管理規(guī)范
- 裝配式建筑疊合板安裝技術(shù)交底
- 2022年HTD-8M同步帶輪尺寸表
- 皮帶滾筒數(shù)據(jù)標準
- 腳手架操作平臺計算書
- 內(nèi)科學第八版循環(huán)系統(tǒng)教學大綱
- 煤礦供電系統(tǒng)及供電安全講座方案課件
- 綠色建筑及材料分析及案列
- 實用中西醫(yī)結(jié)合診斷治療學
- 幕墻工程技術(shù)標范本
- 《施工方案封面》
評論
0/150
提交評論