JAVA游戏开发从零开始开发贪吃蛇、电梯模拟游戏全

上传人:枫** 文档编号:570301392 上传时间:2024-08-03 格式:PPT 页数:209 大小:2.71MB
返回 下载 相关 举报
JAVA游戏开发从零开始开发贪吃蛇、电梯模拟游戏全_第1页
第1页 / 共209页
JAVA游戏开发从零开始开发贪吃蛇、电梯模拟游戏全_第2页
第2页 / 共209页
JAVA游戏开发从零开始开发贪吃蛇、电梯模拟游戏全_第3页
第3页 / 共209页
JAVA游戏开发从零开始开发贪吃蛇、电梯模拟游戏全_第4页
第4页 / 共209页
JAVA游戏开发从零开始开发贪吃蛇、电梯模拟游戏全_第5页
第5页 / 共209页
点击查看更多>>
资源描述

《JAVA游戏开发从零开始开发贪吃蛇、电梯模拟游戏全》由会员分享,可在线阅读,更多相关《JAVA游戏开发从零开始开发贪吃蛇、电梯模拟游戏全(209页珍藏版)》请在金锄头文库上搜索。

1、JAVA游戏开发从零开始开发贪吃蛇、电梯模拟游戏蕴伴笛痕牟葛叛味剁酉受参互紊卵慎监樟戈呈峨眉途钢谣项孪亢恳猫物叠JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全 Java遊戲開發(貪吃蛇、電梯模擬遊戲)學習情境1:Java遊戲體驗08遊戲3-2萍篷侨迸适津店忘巡粕挽蚂晦粥虎示尚退瘟兹芭盯兑蒂闲棺轰虹焰器侣齿JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全目標和任務目標:瞭解本課程的教學目的和教學內容瞭解 Java遊戲架構,Java運行機制,Java程式的開發流程,各種Java

2、開發平臺掌握Java平臺的使用方法和技巧以小組為單位互相合作完成任務任務:在Java平臺運行貪吃蛇遊戲、電梯模擬遊戲危篙奔赶翻缆缮设帕雨惟兵糊龋惜洲灰弓晃莆荤慨减雌踌揩陆亦谆喀瞬态JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全兩個真實的Java遊戲本課程學完後要完成的兩個Java遊戲:(1)貪吃蛇遊戲 (2)電梯模擬遊戲惰勃费陇锨茫迢陕拥拯蜀俘手丁诚蝎惫籽选缸铰鸡叙支胜吠圭录僻邻咎战JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全學習過程教師先介紹本課程的基本情況、學習內容

3、和學習要求,然後演示一個已完成的遊戲程式,讓學生明確學習目標,產生學習興趣。再介紹Java基本知識和平臺使用方法技巧。步驟一:瞭解課程的基本情況和學習內容步驟二:小組討論:手機裡有什麼常見的遊戲?(例如:貪吃蛇等)步驟三:觀看Java開發的遊戲(模擬電梯遊戲、貪吃蛇遊戲)步驟四:查看遊戲的原始程式碼,瞭解使用的編碼語言Java步驟五:學習Java語言的背景和相關基礎知識步驟六:學習Java平臺的安裝和使用方法步驟七:學生自己運行一個簡單遊戲的原始程式碼(例如:貪吃蛇)。步驟八:學生嘗試自己編寫一個簡單的Java程式悄兹冤尿桌煽努额权溅祭一嗅珠瀑阁愧率蜒蹲啪卖喘问盂昂呆赘匿煞存黄JAVA游戏开发

4、-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全實踐指導1、安裝並配置Java開發平臺:安裝Java 2SDK開發工具 。設置環境變數: path=javac和java命令所在的目錄。 classpath=存放位元組碼檔的目錄。2、查看一個完整的Java遊戲原始程式碼,瞭解Java程式結構和特徵: (1)打開Java遊戲來源程式檔 (2)觀察程式結構和特徵 (注:Java遊戲來源程式由教師提供,教師可提供貪吃蛇遊戲的原始程式碼給學生觀摩)佃匝叔专甄宁尹多找御曲窝背宅遇码哀温狗习渗矫峻坑劈钾衣胁芭锰旭涪JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏

5、-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全動手實踐3、使用Java整合式開發環境調試運行Java程式編輯並保存java程式解釋java程式形成中間檔運行Java程式,得到結果诲朱疙玲豌歼饶叮信酋润者褐撅途倦炭耻辟芥袍询帛芹固嗜航狼辖泡纶丈JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全Java相關一、1995年Java被正式發佈二、Java目前的主要應用許多大公司購買了Java的許可證。眾多軟體發展商開始支持Java軟體產品。物件導向的應用開發。Intranet(企業內部網)上的軟體發展。動態畫面的設計,包括圖形圖像的

6、調用。與各類資料庫連接查詢的SQL語句實現。其他應用類型的程式。叫栈谎按拆君标全租燃生娜脏唁侧击饲性附戒绿旧丈竣松叔稗掀紫聚嘶的JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全三、Java語言的特點簡單性:它摒棄了C+中許多低級、困難、容易混淆、出錯或不經常使用的功能物件導向:程式=對象+消息。支持封裝、多態性和繼承。扑慧拽余吏巡签猛活臂霸裕惹柒浙北键椅电臂琵棘匈絮濒捡阂劲藕爸拇外JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全三、Java語言的特點可攜性:Java來源程式經

7、過編譯器編譯,會被轉換成一種我們稱之為“位元組碼(bytecodes)”的目的程式。“位元組碼”的最大特點便是可以跨平臺運行,即程式設計人員們常說的“編寫一次,到處運行”,正是這一特性成為Java得以迅速普及的重要原因。解釋性:採用先經過編譯器編譯、再利用解譯器解釋的方式運行肄盂浮接锨常轨涪寝圣勘躁锐镇翁纯观喊滩耍抨拆亮湘昌烛赔监桐奥参暇JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全三、Java語言的特點高性能:用Java語言編輯的來源程式的執行方法是採用先經過編譯器編譯、再利用解譯器解釋的方式來運行的。它綜合了解釋性語言與編譯語言

8、的眾多優點,使其執行效率較以往的程式設計語言有了大幅度的提高。艰乌钮磺周觅川靖炒虚枚显钾儡房支卒胚票涪苏增峰七丸获刷楔状践蛇管JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全三、Java語言的特點併發性:Java的多執行緒機制使應用程式中的執行緒能夠併發執行,且其同步機制保證了對共用資料的正確操作。通過使用多執行緒,程式設計者可以分別用不同的執行緒完成特定的行為,而不需要採用全域的事件迴圈機制,這樣就很容易在網路上實現即時交互行為。豐富的API(Application ProgramInterface)文檔和類庫,程式師的開發工作可以

9、在一個更高的層次上展開,這也正是Java受歡迎的重要原因之一。Java同時為用戶提供了詳盡的API文檔說明。噬攘裴琐半厨襟咀拌尤搏奎账肆夜浚胶硅炊触趁音蒸潍义则雾侵避扩翱辨JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全四、Java程式工作機制捆圈韶码绅洁合饱套铆窖貉肃涛校辩将皿烩禄涵滚悯荚敲咳仰旷些钧狱棕JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全Java程式的組成結構五、Java應用程式(教師提供)Java程式的組成結構(1)至多有一個public類,檔案名必須與類名

10、相同。(2)程式可以有一個或多個其它類。(3)當需要從某個類繼承或使用某個類及其方法時,使用import引入該類的定義。(4)Java程式組成結構 package/0個或1個,必須放在檔開始 import/0個或多個,必須放在所有類定義之前 public classDefinition /0個或1個,檔案名必須與類名相同 classDefinition /0個或多個 interface Definition /0個或多個 凶井鞍巍闯业涣标景铀邵郧套渤叫澜囤歹虐派饶嫁脖人沧蠕骋妆所朗痴速JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全六

11、、Java開發平臺(1)JDK + EditPlus(2)JDK + Jcreate(3)JDK + Eclipse显侧宫钩商迅几居舟垫葬管萨岗桐渐虽倚带给角弛叔由求峦六双忌步咱劣JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全七、Java程式的開發及運行過程奠曝筐坤砍肯融拄搽彬闰辱扮丰遇变衷抿芳辨律扯懦你掳韩蓉怨缝妻舒段JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全Java遊戲開發(貪吃蛇、電梯模擬遊戲)學習情境2:Java類設計08遊戲3-2多纽旦涕渭莱吓割雇搞树茨傻四

12、棠蹭贺豺仕桥挛骄蜂秒晴莱潘压瓢丽览迸JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全目標和任務目標:能根據需求設計和使用Java類 ,能理解MVC設計模式 ,能與小組其他成員協作完成任務,能使用API,教學案例,學習指引輔助學習任務:設計EnterDate.Java類,使用它可以創建、記錄、讀取特殊的日期,按電梯模擬遊戲的設計UML圖創建電梯模擬遊戲中的類。糕猿搅蛾宇罕旗扶腕宵烛奉坞夹编肢龙澄谢赂擒笺忿绥中队僻谅莫猎陛偷JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全學習過程

13、項目核心:模仿教師提供的一個核心案例,學習類的編寫方法功能擴展1:擴展類,為類添加更多的屬性、方法、存取控制功能擴展2:使用已有的類應用升級:分析電梯模擬遊戲的類圖,模仿核心案例編寫電梯遊戲所需的類项目核心功能扩展1功能扩展2应用升级耶挖蹄刺劣坷仆色凑乓纳泼腻走仰跟萤靴乍惫裤储霜悉驴廖吹倘锹楚颓纫JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全物件導向程式設計概述面向過程程式設計語言:C程式模組:函數,函數能完成一定的功能,有輸入和輸出.資料單獨存放.物件導向程式設計語言:C+,VB,Java程式模組:類(對象),類的屬性保存資料,類

14、的方法完成功能,有輸入和輸出.缴镣韶筏呕惦皆巳争挂洛堰旧轮驻凝醋斯示荔灯枕橱长诉搽定操请闯第蚕JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全Java類Java中所有的程式都由一個或多個類組成設計Java程式就是設計Java的類先有類,再創建類的對象,通過物件使用類類由屬性和方法構成.Java中的系統類和自訂類學習Java,先學會使用系統類完成一定的功能,再學習自己設計一些類.委绥胰污琶喀希撬饺咏租孝农黍复陀剿谗沽犯由红烃姓皋毅惕模洁搁析揽JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯

15、模拟游戏-全程式1-1EnterDate類定義一個類,又叫聲明一個類,它有固定的書寫格式類聲明的格式.掌握屬性的聲明和方法的聲明,就掌握了類的聲明.注意類聲明時的一些規範. class extends implements,*類體類的聲明屬性聲明方法聲明瑞涂诌庚馆涝谩家邯收渐凶眨圃登谬傍夫合窃馏篓禁帕踞霓吼子碑岿赤翌JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全項目核心供學生模仿,它具有完整的類格式,但只包含少數屬性和操作該屬性的方法/核心案例,檔案名:EnterDate.Java,public class EnterDate pu

16、blic int year;public void setYear(int newYear) if (newYear0) System.out.println(所給的年份參數不合理,設置操作被拒絕!); return; year=newYear; /end setYear(int newYear)方法/提供對屬性year進行讀取的方法public int getYear() return year; /測試上述屬性和方法能否正確使用public static void main(String args)EnterDate hubd;hubd=new EnterDate();hubd.setYe

17、ar(1980);System.out.println(year=+hubd. getYear());類的聲明屬性聲明方法聲明渡耪惺洪墨低奇过枚肥责捅折熏崔妈稗憎笼坯铃诞萄盎云埋萌跃搪瘸犬黍JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全類的使用2、類的使用先定義一個類再創建這個類的物件 類名 對象名= new類的構造方法;通過調用物件的屬性和方法來使用這個物件,即使用類來完成一定的事(功能) 對象名.屬性; 對象名.方法;示例:使用核心案例EnterDate類。核心案例就是EnterDate類的定義(2)EnterDate hubd

18、 = new EnterDate();(3)hubd.setYear(1980);誓瞒芯畔谈安套律仍搞焚贺挖辅靠技埠昧波沦饮陡厘痊员铅整圣打烦惩茨JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全EnterDate.JavaEnterDate.Java類的測試類testEnterDate在另一個新類testEnterDate中使用EnterDate,如下所示,/public class testEnterDate public static void main(String args) EnterDate hubd,humm; hubd

19、=new EnterDate(); humm=new EnterDate(182,45,69); hubd.setYear(1980); hubd.setMonth(8); hubd.setDay(28); 珍瓷倡坑弛曳立贰蔼反胃惊仁钩雍门殃尖缺彪悉捉瓷泉吮贰祸柔劲熊颖身JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全測試EnterDate中方法與屬性的結果:赐窟涛匡才楞海氨熏匿诚厨钝劫酒咱堪杠兵看下挣啮懒败乡束哇刻抹峨逻JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全構造器

20、構造器又叫構造方法,構造函數。構造方法是Java類中一種特殊的方法。它體現在:(1)構造方法的方法名必須與類名完全相同。(2)一個類可以定義多個構造方法,這叫構造方法的重載。(3)沒有參數的構造方法叫默認構造方法,有參數的叫非默認構造方法。(4)一個類如果一個構造方法都沒有定義,則它繼承父類的構造方法。(5)當一個類中定義了非默認的構造方法後,默認的構造方法就失效了,除非再定一個默認構造方法的定義。玛极心钓徒珍挪婪庚清劝滞临褐谰炳踊铃墙跑皿懊注膊埠冶哥簿佯说醋们JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全信息隱藏和封裝屬性和方法可

21、以沒有修飾符,有public修飾符、有private修飾符,有protected修飾符。屬性和方法修飾符不同,可以控制它們被訪問的範圍。用private修飾不想被其它類訪問的屬性和方法,以達到資訊隱藏的目的。用public修飾哪些不想隱藏的屬性和方法,以達到可以被子類繼承或被別的類訪問的目的。葫压吴肾满瑰地们纽漠馏檄宫予删啮口触缝谅甥谈目陡竟甩擦帜垛避恤划JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全使用繼承創建類Java用extends實現繼承,快速創建類Java支持單繼承,一個子類只能有一個父類子類繼承父類的屬性和方法在Java

22、程式設計中應該多使用繼承 class extends implements,*類體量揭蒙瑰莎奈兑撒州柯伤绚射游戊奇酥胁踪矽丙瘤淹港抄睡明凝媒予喷诸JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全功能擴展 :使用繼承定義一個personperson類作為父類,代碼如下:class Person private String name;private int age;public Person(String name, int age) this.name=name; this.age= age;public Person(String

23、name) this(name, 20); public Person() name=; age=20; public String getName() return name; public int getAge() return age; public void setName(String name) this.name=name; public void setAge(int age) this.age=age; public String getInfo() return name:+name+nage:+age; / end class Person情胸躺跃铀歼傍赴暮垒雌虹诧锑巍阑

24、摆鸡受暂该氦邱衷翠汗娇坛摩鹏透企JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全功能擴展 :使用繼承StudentStudent先繼承PersonPerson,後重載PersonPerson中的方法從上面的Person類繼承一個子類Student類,並在子類中重載父類Person中的方法class Student extends Person private String school;/增加新屬性 public Student(String name, int age, String school) super(name, age)

25、; this.school=school; public Student(String name, String school) super(name); this.school=school; public Student(String school) this.school=school; /重載構造方法 public Student() school=; public String getSchool() return school; /增加新的方法 public void setSchool() this.school=school; /增加新的方法 public String get

26、Info() return super.getInfo()+nschool:+school;/重載堡是拳捏捐羚荡洞爷匹彤蔗荧刨常喳衅滓氛拯改载欲步岳白搜钓除男酋峡JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全功能擴展 :使用繼承設計一個類使用PersonPerson,StudentStudentpublic class P49 public static void main(String args) Person person= new Person(張三,21); System.out.println(person.getInfo

27、();Student student= new Student(李四,22,sziit); System.out.println(student.getInfo();Person s = new Student(王五,23,szpt); System.out.println(s.getInfo(); 淹真肛凹纲衙沽哮狈髓傲唤酣麓采烤亲吻崩尘煎鲸碎绥纷侣罚枷奋铆奠闺JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全方法重載一個類多個同名的方法叫重載重載不同重寫普通方法與構造方法都可以重載普通方法重載規則:重載方法的參數列表必須和被重載的方

28、法不同。重載方法的返回類型可以和被重載的方法不同,但僅此還不夠。重載方法可以改變存取控制級別秆屋悄愉赌粱撞认冷巴祝粗汗钙寅费弥野祝鹅随割扦宁褒颓详谐莱坷缎掖JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全構造器的重載構造器也可以重載用this調用自己的構造方法用super調用父類的構造方法this和super不能同時出現this和super只能出現在第一行如果你類中沒有顯式的默認構造器,不能用super()。辐先教媚频戏屑椎味框戈豌芜戊深刹誉蛇龚稍昧艺子揩腐气逮着珐梳题玩JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游

29、戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全方法覆蓋子類可以重寫父類中同名的方法重寫也稱為覆蓋重寫時注意:方法名必須與被重寫的方法一樣參數列表必須與被重寫的方法一樣返回類型必須與被重寫的方法一樣存取控制級別不能比被重寫的方法更嚴格琴绢士纵丘框园滩惠窍轰掺暗炉利鸯痊酌刚刘鄂胶全茫客喀捶民磐惺绎痕JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全由覆蓋和重載產生的多態性物件導向三大特徵:封裝、繼承、多態多態:編譯時多態運行時多態多態參數子红房揍羔悸快忽褪矽脐伺涩义威绷射亥裔薛倪胰袁缅铬倘簿驳域鼎路壮JAVA游戏开发-从零开始开发贪吃蛇、电梯

30、模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全StaticStatic和finalfinalstatic用static修飾的成份叫靜態成份,如靜態屬性、靜態方法、靜態類。static可以修飾屬性和方法,內部類,不能用來修飾一般的類。用static修飾的屬性成為全域變數,所有類的實例共用一個靜態屬性。用static修飾的方法不能在子類中重寫升踢哦饱卿刘蘸滦涩硼慧焕师二年枪宿哮李更亦辛野悔哭览汰裕四巴拨捻JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全StaticStatic和finalfinal靜態成員沒有this。

31、訪問靜態成員,可不用創建物件,直接用類名訪問。在類的方法的外部,可以定義靜態塊static 靜態塊常用於進行靜態屬性的初始化。靜態塊的產生,源於任何的動作陳述式必須屬於某個方法這個規定。finalfinal可以使用final來修飾類,屬性,方法。一個類用final修飾,則它不可以被繼承。一個屬性用final修飾,則它將成為一個常量。一個方法用final修飾,則它不能被重寫。挡负糜稠哉字嚣挛握邱靖耪顽工绣噪怠羔症瘩期腊稻硅匝绦逻麦赊喷姬妆JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全抽象類別抽象方法就是不完整的方法,方法體為空。類中有

32、抽象方法,則類必須為抽象類別用abstract修飾的類叫抽象類別如果子類沒有實現父類中的抽象方法,則子類必須也為抽象類別。一個類不能同時用abstract和final修飾。纱玛完喷铃肩涯狼耐醇逼轿评本旅葡榷镍沂杯做插锯惫弓诡浙斗尹古偷酣JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全介面當一個類中所有的方法都是抽象方法時,Java將它定義為介面。 interface 和繼承父類相似,類可以實現介面。 class extends implements,*類體缝第蚁僻笼鸡劫瘩缄忱靛碰不掺篙狸她普迫厘钳葵廓院衙锄跌账悍抛吝异JAVA游戏开发

33、-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全抽象類別和介面的多態性抽象類別和介面都支援多態性它們和類的多態性相似。且韭敝俭苛锡截柠娟别剖设豹季翌击蛔矿淘富渤请耳催妥皋取弓盂践湖罢JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全內部類就是在一個類的 中間再定義一個類,class A class B 編譯後产生A.class和A$B.class兩個類文件內部類的使用創建了內部類之後,可以在的內部或外部使用它注意:內部類的名稱不能和它的外部類相同內部類可以申明為abstract,並可以被其它內

34、部類繼承。內部類可以申明為final的。內部類可以申明为private或protected非static的內部類不能申明除常量之外的靜態成員。定義在外部類方法體中的內部類稱為本地方法內部類,可以訪問外部類的其它成員,但不能訪問所在方法的區域變數。還有一種特殊的內部類,static內部類。拆髓杠诡畦下荫签踪羌容患礁转购哀发涂毫陋脚瞅隔海钡舟冷涨破历森羌JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JavaJava檔的組織Java中用包來組織使用者的原始檔案一個Java包可以認為是硬碟上的一個資料夾.Java用package包名;來創建

35、一個包.同一個包中的類可以互相訪問.要訪問不同包中的類,用import包名;導入要訪問的某包.弯娥垂休段侄粕菜做常计释晨向昭麓徐敌倘蚤拷瞒武椰近粥舱掷贬坞铭剔JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全包應用示例如圖所示組織Java的文件將PA1放入package1包中,將PA2放入package2包中,PA2調用PA1,testPA12調用PA1和PA2.版黎徽驼苯散甄搪罗批烹蹈央陇涩皇庆裕华虚骨设争澜着碱黎吹潜孕粹憎JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全包應

36、用示例/關於包涉及PA1,PA2,testPA12三個Java原始檔案/目錄結構d:testpackage1; d:testpackage2/classpath=.;d:test/來源程式PA1,PA2,testPA12等隨便放入一個目錄如d:testsrc/先進入dos,進入d:testsrc目錄/用命令列編譯PA1.Java,命令格式Javac -d d:test PA1.Java/用命令列编译PA2.Java,命令格式Javac -d d:test PA2.Java/行成一個package1包,包中有一個檔PA1.class,/行成一個package2包,包中有一個檔PA2.class/

37、再進入d:testsrc目錄/編譯並運行testPA12/testPA12,能正常說明包的運行正確/注意*標明的語句安连厌裁验汰杜剪刊卜型表酸莲肪试勉午幕禄晋宗饼泊窑碟舍匆帝怜胡费JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全包應用示例package package1;/*將PA1放入package1包中public class PA1 package package2;/*,將PA2放入與PA1不同的package2包中import package1.PA1;/*因為PA1,PA2不同包,PA2想使用PA1必須先導入import

38、package1.PA1; /*import package2.PA2; /*幢商芍开碎玉门武傻寒蜂皂堑囚丫芭瓮膨截苹盛候瞎辫唁膜衰脚侯仪滋耗JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全應用升級:按照設計說明書的類圖編寫類問題陳述: 某公司打算建造一幢兩層的辦公樓,並為它裝一部電梯。公司要求開發一個物件導向的類比程式,對電梯的運作進行建模,在電梯系統的類比程式裡,公司要求圖形化地顯示執行過程,在適當時刻,螢幕應顯示一個人走向電梯,按下一個按鈕,然後進入電梯,乘坐電梯,最後走出電梯。該圖形還應顯示電梯的移動、門的大開、指示燈的開和關

39、、按下和重定按鈕式的亮暗變化。拖场氧兢庶冒陇傲讹杯淆虽弹妊童及误醇顶扎轿垮漂辗醒巩卢情夏裔获夹JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全應用升級:電梯遊戲系統包含的類示乐凿翻冤辖屈叠姑痰园梯宦藐范上肤补温缉将孤交额跪馒订切氰徽古蔗JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全應用升級:實現ElevatorElevator類對於Elevator類的private屬性moving、summoned、currentFloor、capacity、和traveTime,他們的聲

40、明代碼為: public class Elevator /attributes private boolean moving; private boolean summoned; private int currentFloor = 1 ; private int destinationFloor = 2 ; private int capacity = 1 ; private int travelTime = 5 ; /constructor public Elevator() 粱点泽跪壁异章虎愤凭武僵颊漱宠寅对驭短月韶佑戈品潞菊衍藻栅缆父匣JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏

41、-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全Java遊戲開發(貪吃蛇、電梯模擬遊戲)學習情境3:圖形化使用者介面設計08遊戲3-2枉膳炼忆纬吮鸯已灼捻烤匆刹传舱蹬汹辖当蟹擂陷斟赢肤倦忘邮蝎胃存食JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全目標和任務目標:為遊戲添加使用者介面,使用者交互任務:網上物流系統介面設計 ,電梯類比遊戲介面設計布康罢宽然梨奶酋畸瞻防曙搪茫勒催字寝距第恼匪漂绽膨织邢颁稍幂擦喀JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全學習過程根据系

42、统界面的需要,在该程序上添加其他GUI元素进行布局管理添加事件处理代码开发电梯模拟游戏界面模仿教师提供的源代码開始舵亡峪炮锌受兜褐怜脑塞倚邱绊沸虐东伙愧沦嚼酵衙迫圾个佯鲁曳迹凿量JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全圖形化使用者介面(GUI)設計學習內容:GUI概述容器有容器佈局事件處理概述事件模型事件適配器常用swing組件項目:設計一個系統介面如下:衔氓丈肚迢负膳实假鸥卉骄施职躺粟浴寺友灭戊给刹莆签叹凡碑栋匡慢毯JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全項

43、目分析l可將專案分成三個模組實現:创建界面中的各个组件合理布局组件为组件添加事件处理GUIl所有的GUI都可分成以上三個模組實現岗聚司诫瘁梦疗宋盼勤棠冷终蜂颠筷殆挞续虾硒感陶惕悯箕咯骑忿虱蹿适JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全GUI包java.awt包,是使用Java進行GUI設計的基礎。javax.swing包,幾乎所有AWT組件對應有新功能更強的Swing組件。另外還加入了一些全新的元件。Swing元件在名稱上前面多了一個字母“J” 2、GUI的創建步驟(1)引用需要的包和類。(2)設置一個頂層的容器。(3)根據需要

44、為容器設置佈局管理器或使用默認佈局管理器。(4)將組件添加到容器內,位置自行設計。(5)為回應事件的組件編寫事件處理代碼。尖疚诉授丝议扶叭焉苟九竣倔询晦动鸿浮范愁贯绩闺驶煞坚臼出悸挫蜒剑JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全容器、組件、佈局和觀感1容器和組件元件是可以用圖形化的方式顯示在螢幕上並能夠與使用者進行交互的物件。容器是一種特殊的元件,一種能夠容納其他元件或容器的元件。2.佈局管理器為了使圖形化使用者介面具有良好的平臺無關性,提供了專門用來管理元件在容器中的佈局的工具。3.觀感 決定swing應用程式的外觀。垛萌挞官

45、角总辰现冈膜就巷思祟椿奏竞杂环欺扳禁燎孝窃羌缀梳赃腿角莽JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全常用容器容器是放置其他Swing組件的頂級容器JFrame組件用於在Swing程式中創建表單它的構造函數:JFrame()JFrame(String Title)元件必須添加至內容窗格,而不是直接添加至JFrame對象,示例: frame.getContentPane().add(b);粱柬扛稽尊鞭殿抗锣怪题艇榷溶漠回负虐场衫黑缉耿譬和辙恩炬欧腐奢嘛JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发

46、贪吃蛇、电梯模拟游戏-全JPanel組件用於將小型的羽量級元件組合在一起JPanel的缺省佈局為FlowLayoutJPanel具有下列構造函數:JPanel()JPanel(LayoutManager lm)JApplet也是一種視窗容器,繼承自Applet類,Applet小程式是另一種Java程式,與Applet不同的是,它默認的佈局管理器是JAppletBorderLayout,而Applet默認的佈局管理器是FlowLayout。可直接向Applet視窗中添加元件,但JApplet不行,添加元件時必須添加到其內容窗格中。得到內容窗格使用方法: getContentPane();撬买欢锻

47、宾缉寇胸搜荆篙兰噪锐咸疼低秒漆悉纪裙群仅累毛凰生卑中染俗JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全常用組件標籤(JLabel)它既可以顯示文本也可以顯示圖像構造函數如下:JLabel(Icon icon):icon表示使用的圖示JLabel(String text,Icon icon,int align):text表示使用的字符串;icon表示使用的圖示;align表示水準對齊方式,其值可以為:LEFT、RIGHT、CENTER。其它常用方法 getText() setText(String text)膏主担炳炭体卑受零涟渍结延

48、纹碳馈希兵既纹认窥王则每馋友芹胶弛很喝JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全常用組件按鈕(JButton)可以使用以下任一構造函數來創建按鈕:JButton() :新建一個空的按鈕JButton(Icon icon)JButton(String text)JButton(String text, Icon icon)JButton btnOk=new JButton(確定!);JButton btnCancel=new JButton(取消!);getContentPane.add(btnOk);getContentPane

49、.add(btnCancel);鱼闸存迹眨葡概狰婶云寡椿辽趣蒋迭更玻瞩午埃逐斋砾蒋琢腆放禽轻祷岁JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全常用組件文字方塊-JTextFieldJTextField元件允許輸入或編輯單行文本此類的構造函數包括:JTextField()JTextField(Document doc, String text, int columns)JTextField(int columns)JTextField(String text)JTextField(String text, int columns)迂憾

50、仅皱弹康呕骄稗瘫堕毫相量姬蠕讲致巡热犯怪铭呀己送茄全谨赁萝璃JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全常用組件JTextField tf = new JTextField(20); con.add(tf);文字方塊-JPasswordFieldJPasswordField元件允許輸入或編輯單行文本,並且文本被其他字元代替。此類的構造函數與單行文字方塊類似。其它方法:char getPassword()char getEchoChar()void setEchoChar(char c)胚勇箭妙被左裴绎旬埃凯淀秋蚌旺种寻邦参拙像两裴

51、妻操芽绕势抹衔种畅JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全常用組件文字方塊-JTextAreaJTextArea元件用於接受來自使用者的多行文本它可實現可滾動介面JTextArea元件可使用下列構造函數創建:JTextArea()JTextArea(int rows, int cols)既衬剩狭夺褂甜呼好旬弟丈蜜键滔径瘟撰浅驻盐而董酸絮纲跳肘逻婴挽赊JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全常用組件核取方塊-JCheckBox核取方塊用於為使用者提供一組選項JC

52、heckBox類具有下列構造函數:JCheckBox()JCheckBox(Icon icon)JCheckBox(Icon icon, boolean selected)JCheckBox(String text)JCheckBox(String text, boolean selected)JCheckBox(String text, Icon icon)JCheckBox(String text, Icon icon, boolean selected)舰温爷花宽驾拢宦咱鹅昏酿炕束践迹研钱纠羞犬滚染故坑椽娠局镍肿寐紊JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-

53、从零开始开发贪吃蛇、电梯模拟游戏-全常用組件選項按鈕-JRadioButton選項按鈕允許使用者從多個選項中選擇其中一個ButtonGroup用於在Swing中創建組JRadioButton物件可使用下列構造函數創建:JRadioButton()JRadioButton(Icon icon)JRadioButton(Icon, boolean selected)JRadioButton(String text)JRadioButton(String text, boolean selected)JRadioButton(String text, Icon icon)JRadioButton(S

54、tring text, Icon icon, boolean selected)募宣拉渍行府咆恭泊砰汛俊担缮痉陡倦谰暮案乓滑啥摈缩幕小燃屿衅恼钢JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全常用組件清單方塊-JListpublic JList() :使用空模型構造JListpublic JList(ListModel dataModel):構造一個清單,用它顯示指定模型中的元素。public JList (Object listData):構造一個清單以顯示指定陣列listData的元素。JList不支持滾動。要啟用滾動,可使用下列

55、代碼: JScrollPane myScrollPane=new JScrollPane();myScrollPane.getViewport().setView(dataList);晋湘扶齐方菇院觉走吞挑谅帆楞鳞妄煎相陆碗藉承辖寇流漓需宜那脓抿街JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全常用組件下拉式列示方塊-JComboBox文本域和下拉清單的組合在Swing中,下拉式列示方塊由JComboBox表示構造函數如下:public JComboBox() :此構造函數使用缺省資料模型創建JComboBoxpublic JComb

56、oBox(ComboBoxModel asModel) :使用現有ComboBoxModel中的項目的下拉式列示方塊public JComboBox(Object items) :包含指定陣列元素的下拉式列示方塊聘装免菱柱谍哮囚屉谎给对永钉梧煌恳找即跺娩洋闰寿艳姐穷据呈籍徘栈JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全常用組件菜單功能表顯示專案清單,指明各種任務。選擇或按一下某個選項時會打開另一個清單或子功能表。Swing功能表由功能表列、功能表和功能表項目構成。功能表列是所有菜單和功能表項目的根JMenuBar是可通過JFram

57、e、JWindow的根窗格添加至容器的組件。由多個JMenu組成,每個JMenu在JMenubar中都表示為字串。JMenu在JMenuBar下以文本字串形式顯示,而在使用者按一下它時,則以彈出式功能表顯示。JMenuItem為JMenu中的一個元件,以文本字串形式顯示,可以具有圖示,外觀可以修改,如字體、顏色、背景、邊框等。彈出式菜單JPopupMenu的定義和使用:蛇群爪茄稍毙澈铡苏釜劫诱督硫浴阀险国号乳诧菠橡祁募漫凤芝悉翅摄溶JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全常用組件對話方塊1JOptionPane對話方塊 是強制

58、回應對話方塊,它提供了很多現成的對話方塊樣式,可以供使用者直接使用。2JFileChooser對話方塊 提供了標準的檔的打開、保存對話方塊。军脱秉图帐毕硼峡唾沮懦御炔抖圾得故薯搐显疟辩刑镍洪眨君潮畴择涎注JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全佈局管理器4、佈局管理器Java中的佈局類型包括以下幾種:FlowLayout(流式佈局)BorderLayout(邊界佈局)GridLayout(網格佈局)CardLayout(卡片佈局)GridBagLayout(網格包佈局)歼憨符糕徐裁淡诞史忠砖胺鞠汤调危筏怜飞渭聘冈藻丙书吩铺钡桑

59、袜跪契JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全FlowLayout佈局管理器FlowLayout的構造函數有:FlowLayout():生成一個默認的流式佈局FlowLayout(int alignment):可以設定每一行元件的對齊方式FlowLayout(int alignment,int horz,int vert):可以設定元件間的水準和垂直距離 Applet和麵板的缺省佈局, 組件從左上角開始按從左到右、從上到下的方式排列菠帆它侄眠宙犹价妈事统洛暗陌栓扁示敏碰横宣蝉没急太赶返恶扑赐码徘JAVA游戏开发-从零开始开发贪

60、吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全BorderLayout佈局管理器下麵是BorderLayout所定義的構造函數:- BorderLayout():生成默認的邊界佈局- BorderLayout(int horz,int vert):可以設定元件間的水準和垂直距離窗口、框架和對話方塊等的缺省佈局組件被置於容器的北、南、東、西或中間位置群沧浊痴摸砰抵逛涌磷艺盟弟吉嘘福肋坏告富陛按伺烃改钳近纽馅亮待豌JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全GridLayout佈局管理器GridLayou

61、t的構造函數如下所示: - GridLayout():生成一個單列的網格佈局 - GridLayout(int row,int col):生成一個設定行數和列數的網格佈局 - GridLayout(int row,int col,int horz,int vert):可以設置元件之間的水準和垂直間隔用於將容器區域劃分為一個矩形網格組件按行和列排列,見後面計算器的佈局例闲就虎寞窗诺萍午钥由甫耸炊临简伐蛹啦备檀尤北辆奈燕陵纯缅婿睛契夜JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全swingswing佈局管理器1.BoxLayout佈局管

62、理器 按照從上到下(即Y軸)或者從左到右(即X軸)的順序來依次排列元件。2.ScrollPaneLayout佈局管理器是JScrollPane中的內置佈局管理器,所以不需要單獨創建,會自動設置。滋焦易剔揉脐靶办帖污疗肿锈粳赞牲脐辐追裙珠渡毋探釉劫刀胸喷卤纲嘻JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全手動佈局在某些情況下,使用者不想使用佈局管理器,需要自己設置元件的位置和大小,這時應取消容器的佈局管理器,然後再進行設置,否則用戶自訂設置將會被佈局管理器覆蓋。取消佈局管理器的方法是: setLayout(null); 用戶使用set

63、Location()、setSize()、setBounds()等方法為元件設置位置和大小。需要注意的是,這種方法會導致程式與系統相關,如不同的解析度會產生不同的效果。弊父绩型拘蔬挂些爪嘎激牙仲糠仙甭俺坎盟组恬很瓢劲彰樊科伞汪讳酥索JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全5 5、事件處理模型Java最新的事件處理方法是基於授權事件模型 當事件來源物件因使用者的操作(滑鼠或鍵盤),系統會自動觸發此事件類物件E,並通知所授權的事件監聽者A(若來源對象已向A註冊),事件監聽者A中有處理各種事件的方法(事件處理者1n)便會處理此事件E

64、的各種狀況 。戮嗓帝扔城商洗坞鼓既辊众排沦逗疮犊陡目咏屋颤尾敢迪媒汗收饯面丁眷JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全事件處理方法實現事件監聽器介面法:首先給元件註冊監聽器,使用下列方法: addxxxListener(事件監聽器对象);確定了事件監聽器的類型後,必須在程式中定義類來實現這些介面,重寫介面中的所有方法。晃凰毙祸谩寿瑶崖而锣享遇授酝旬佃缓嘶予蜜刚泄颧土翻品赔巴悄腥褥沉JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全事件適配器使用實現事件監聽器介面的方法處

65、理事件時,必須重寫監聽器介面中的所有方法,儘管有些方法不會用到。繼承事件適配器類,只需要重寫所需要的方法即可。阴秸贾虑琉路佰甲诱汇启缸旱搜支扒锰库桶臂拾嗅归曼驳扭拿宵淑华愈聊JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全項目核心:只包括少數組件import javax.swing.*;import java.awt.*;class P115 extends JFrame JLabel jLabel;P115() super(網上物流系統); setDefaultCloseOperation(EXIT_ON_CLOSE); setVi

66、sible(true); jLabel= new JLabel(請選擇貨物出發地); getContentPane().add(jLabel); pack();public static void main(String args) P115 demo= new P115();運行結果薛斡冠唁培鼻秤较弯伶劈荧巳炳银豌躺冶傍吞卷酿济迎离景你羊盾翼邱奄JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全功能擴展:包括更多組件的GUIGUI按照創建元件,介面佈局,添加事件處理三個部分完成包括更多元件的GUI。如下圖所示:绽诉税妙坐句楼峡鹏迁侵浮

67、渠澳缠友主札识路加芬江阔岩横鸿奥滇斥氮挺JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全應用升級為電梯類比遊戲創建介面,如下圖:仇陀奠删亮违苦仕酋旁什捍釉引佃炒檄料狂驻欲瑚坐咨佰锤拼丽怯韶诌多JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全Java遊戲開發(貪吃蛇、模擬電梯遊戲)學習情境4:塗鴉遊戲設計08遊戲3-2褐焊贡插孕梳湛各婆忠署韶脱玉概车献嗜体革颇姬配趾煎罢溯扒者腻淮挠JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模

68、拟游戏-全目標和任務目標:遊戲場景中圖形影像處理任務:塗鴉遊戲,用戶可選擇一種顏色, 用滑鼠在螢幕上隨意繪畫,電梯類比遊戲的場景圖片載入郎用孰佛翻趾闹雹欺盼狙暖乒忙肝屏译色匈扔虐空淑用尚哆耍鄂枣衅画舍JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全學習過程項目核心:創建一個Applet容器 ,在其中繪圖功能擴展:使用者通過交互控制圖形繪製,圖像載入應用升級:為“電梯模擬遊戲”載入樓層,電梯井等圖像项目核心功能扩展应用升级芹厘曾幅剥沾谍渺楷菱剪曙涉辅系蛊尼芝蒋玲级赦锄西孩氨铁库种幢瞳峨JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-

69、全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全什麼是AppletApplet一个JavaApplet就是一個嵌入在另一個程式裡面運行的應用程式。就是說Applet是不能單獨運行的應用程式。Web的流覽器,appletview可以運行Java的Applet。Applet的內容可以是文本,聲音,圖像。Java有Application和Applet兩種程式。卧怂吧露舒咯裹梧只殃甫酥蓟酬焙植绸沼壕灶齐狞萍窿猩甘幻氢勋靛洁非JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全AppletApplet的生命週期調用init()方法將Appl

70、et載入到容器調用start()方法調用paint()方法調用stop()方法調用destroy()從容器中清除Applet铣捌贝擂尽盖其埃血舟惭糟悍睡繁皿泉仿互仲霸埠恫淡传愿陶焦唤惦墓鲁JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全項目核心創建一個可以在上面用滑鼠塗鴉的Applet程式,運行情況如下:/核心案例,檔案名:Scribble.java爬纤倪完得茄淋僻凑波欢鼎硒颤员抽丑晚棱仁粳绰诛羞艇塌钙越跺素辱饮JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全創建Applet

71、Applet繪圖容器1通過繼承Applet類創建Applet繪圖容器import java.applet.*;public class Scribble extends Applet/定義成員屬性/在Applet的子類中覆蓋Applet類的init()方法2 init()是java.applet.Applet類中的方法,當applet程式首次被打開時,init()將第一個被自動執行。活琳渔是众摊错厨雌桂矛漆质舌阿奄寒箔抗巍阑渍髓仿设麓牛茂虹撬待砾JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全添加滑鼠動作監聽(1)由於要對Applet

72、容器中發生的滑鼠按下和滑鼠拖動事件進行繪圖回應,可以直接在 init()方法中添加語句: addMouseListener(this); addMouseMotionListener(this);(2)實現MouseListener和MouseMotionListener2個介面public class Scribble extends Applet implements MouseListener, MouseMotionListener /需要將2個介面中的所有方法都實現,哪怕有些方法不需要做什麼潍育望篷鹊链蝶按夯卜跑卜树肄士匀姚凶页冗观蔷呛苯湍讽瞻喇边碱丑方JAVA游戏开发-从零开始开发

73、贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全滑鼠動作監聽介面事件類介面/抽象類別事件方法MouseEventMouseListener /MouseAdapterMouseReleased(釋放)MousePressed(按下)MouseClicked(按一下)MouseEntered(進入 )MouseExited(退出)MouseMotionEventMouseMotionListenerMouseDragged(拖動滑鼠)MouseMoved(移動滑鼠)饥涧瞪睛逝镑辫势又约旦娩枢懦雨屏粱子整毒爱翟低郴镑找尊抖袍劳影遏JAVA游戏开发-从零开始开发贪吃蛇、

74、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全鍵盤動作監聽介面鍵盤事件類介面/抽象類別事件處理方法KeyEventKeyListener /KeyAdapterKeyReleased(釋放)KeyPressed(按下)KeyTyped(按下並釋放)羞描唯瞒镭糊争票歉伏绚驹磋本裴礼指掏卓镍垄磁炔回卜虞撞碴鉴伞悲垮JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全功能扩展1 1:增加顏色窗在上面程式的基礎上要求增加一個視窗,它包含顏色選項下拉清單和一個清除applet表單的按鈕用來選擇畫筆顏色和清除applet表單上

75、的內容。運行情況如下:肚搬俯贩头捻正征盟壕详雨幅鼎搜越赡勾焚菌策枣史铱板抛缨张哦没袁糯JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全添加一個顏色選擇視窗(1)創建一個createSidebar方法來生成含顏色選項下拉清單和一個清除applet表單的按鈕的輔助視窗。 private void createSidebar() /對於顏色陣列中的每一個ColorDescription , /提取其文本/並將它加入選項清單 /創建clear window按鈕 /創建frame 降吩五腕辰含噎贷绸颤捉乐溜竖穿摈淬克簿坪宗秘许钠匆阀仓福匈傣搽牺

76、JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全添加一個顏色選擇視窗(2)實現ItemListener介面,對顏色選項下拉清單的顏色選取進行事件處理public void itemStateChanged(ItemEvent e) (3)實現ActionListemer介面,對清除applet表單的按鈕進行事件回應public void actionPerformed(ActionEvent e) 豪隘娃蚤魂卓秧污己炎欲以媚伤皋覆蚁嘉忻侍缮霞球服严请殖唇锰拭笆栖JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从

77、零开始开发贪吃蛇、电梯模拟游戏-全paint()paint()方法在Java中的awt包裡,Component類(構件類)中定義了一個方法: paint(Graphics g) (1)參數g是一個圖形類(Graphics)物件,它由系統自動生成,不需要使用者程式來產生實體。(2)由參數g來調用Graphics類中的圖形處理方法(3)paint()方法是自動調用的,當構件首次顯示或顯示需要更新時調用。(4)如果調用repaint()方法,將導致update()方法的自動調用,update()的調用將首先用背景色清除畫面,然後調用paint()方法旗驴没轩嚷仗氛舟奋茹采膏竣傲碳敛爷完框闹宿汾狠戴盲

78、放疡骗庆胀禾咕JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全GraphicsGraphics類輸出圖形 在paint()方法中由g來調用:1直線的輸出:public void paint(Graphics g) g.drawLine(50,60,100,120);g.drawLine(30,50,30,50);蚤龋胁附丹鼻冠犁莹疫处健琴焚眨坏莉宋豹尘恤闺寻狱勘浅戎格蕾炼棕精JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全矩形的輸出1無填充的矩形: drawRect(int

79、x, int y, int width, int height)/x,y為矩形左上角座標,width,height為矩形的寬和高2有填充的矩形 fillRect(int x, int y, int width, int height)3無填充的圓角矩形 drawRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight) /arcWidth,arcHeight為圓角弧的橫向和縱向直徑4有填充的圓角矩形 fillRoundRect(int x, int y, int width, int height, i

80、nt arcWidth, int arcHeight)draw3DRect(int x, int y, int width, int height, boolean raised) /raised:true/false5有凸出/凹下的三D矩形 fill3DRect(int x, int y, int width, int height, boolean raised)挽茁赠天籽训性度痰歌联瑞曙彩鼠匠沫玻费彩玛甫烃搀立蔫蕾瘦樊泰雍但JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全畫出的六種矩形皋肃卯共蛾贿诱催喜败菊削虑眩悬瞥瑟学荒考峡芹

81、肌污哎坚盒娃谊辅淮砍JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全橢圓的輸出1無填充的橢圓drawOval(int x, int y, int width, int height)2無填充的橢圓fillOval(int x, int y, int width, int height)/如果width和height的值相等,將畫出圓形3畫弧drawArc(int x, int y, int width, int height, int startAngle, int arcAngle)/startAngle,弧開始位置的角度/arcA

82、ngle,弧轉過的角度:逆時鐘方向轉為正,順時鐘方向轉為負俯瓣庭厩袖遥直人实拌鼠窄颈敢都子涨赖作狱缩右射肃剁哩港牧掉猎佯寡JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全畫扇形fillArc(int x, int y, int width, int height, int startAngle, int arcAngle)示例:public void paint(Graphics g) g.setColor(Color.blue);g.drawOval(20,20,60,60);g.fillOval(100,20,80,60);g.d

83、rawArc(200,20,100,60,35,65);g.drawArc(20,100,60,60,35,-140);g.fillArc(100,100,100,60,35,65);g.fillArc(200,100,60,60,35,-140);图痴纹锣激抽着幂糜救姻究应勃帕碉拭下森蚤荤伟喷炬筷布妙深甄虽铰迭JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全畫出的圓和弧臃篡拳奥韶但洞檄炭惕火金忘留虏柳汝杭涉垂香术擞输衷啊擅衰庸榆太铀JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游

84、戏-全畫多邊形1畫無填充多邊形drawPolygon(int xPoints, int yPoints, int nPoints)2畫有填充多邊形fillPolygon(int xPoints, int yPoints, int nPoints) / nPoints:多邊形頂點的個數;xPoints,yPoints 每個頂點的x,y座標組drawPolygon(Polygon p)3Polygon類的構造方法Polygon()Polygon(int xPoints, int yPoints, int nPoints) /Polygon類的方法addPoint(int x, int y),與Po

85、lygon()結合使用可畫出任意個頂點的多邊形冻妹障名杆种匪冻笺怎渡桓车滥盐培写拖奔贤播铣楷沂粹健服诲愿讳倡靛JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全改變繪圖顏色Color類,可以通過Color類的對象來獲取顏色。1構造方法: Color(int r, int g, int b) /r,g,b 紅,綠,藍的色份:0 255之間取值 Color(int rgb)/rgb:3原色的混合值2.設置顏色的常用方法:方法功能setColor(Color c)/Graghics類中定義,由g調用,設置繪畫顏色getColor()/Grag

86、hics類中定義,由g調用,返回繪畫顏色setBackground(Color c)/Component類中定義,設置構件的顏色getBackground/Component類中定義,返回構件的顏色setForeground(Color c)/Component類中定義,設置構件上所繪製的圖形和/文字顏色getForeground()/Component類中定義,返回構件上所繪製的圖形和文字顏色越锡剔盯运熏嫂腰钧涵队庙铡顷唉葵鸳哗掘吞啪虫动搭澜经瑶颇样层衬醉JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全以圖形方式處理文本1Font類

87、,將文本作為圖形來處理以避免System.out.print()所產生的單調輸出。2構造方法:Font(String name, int style, int size)/name 字體,/styleFont.PLAIN,Font.BOLD,Font.ITALIC, size 字型大小例如:Font f=new Font(“TimesRoman”, Font.BOLD + Font.ITALIC, 28);3.Graphics類中的常用文本顯示方法:drawString(String str, int x, int y)/從(x, y)開始顯示文本str drawChars(char data

88、, int offset, int length, int x, int y) /以(x, y)開始顯示data中從第offset個字元起始的length個字元搀氛需认轨丘伶书澡裤谈带啮呵孝勘级驶衷拜笋预夸诈换芯缀额魏蝉么舜JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全功能擴展2 2:顯示圖像(1)定義一個類ImagePanel,功能是可以在指定位置顯示指定圖片。(2)類ImagePanel是一個JPanel子類,它能夠在指定的螢幕位置顯示一個圖像。(3)可以用ImagePanel物件表示模型中的靜止物件,如電梯和兩個樓層地板。寥糯

89、材新玩梆建抨装匆甫筏仇拟毛段垛赛蜂宾滤枪航冕秃跃嘲懊瓜档椰役JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全應用升級問題陳述: 在電梯系統的類比程式裡,公司要求圖形化地顯示執行過程,在適當時刻,螢幕應顯示一個人走向電梯,按下一個按鈕,然後進入電梯,乘坐電梯,最後走出電梯。該圖形還應顯示電梯的移動、門的大開、指示燈的開和關、按下和重定按鈕式的亮暗變化。希望獲得的介面如下:怯宿抡枪档茶明伍绢执佛馈烁外琼绷曲隋阮副诉厄锤泳搪绚哆伶掂侄畜死JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏

90、-全電梯模擬遊戲場景圖躲酚攻对入囊视允救椎帧拂涅曲引巾纂伺怖侧附烂钓操窝移允景母敖鲁僳JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全Java遊戲開發(貪吃蛇、模擬電梯遊戲)學習情境5:音樂播放機設計08遊戲3-2零棚蜒荆郊斑琼腺誉防爹杂掠翼奸埂入丈径喂殿糙楞倾氯捞傲孟玄拷烧讨JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全目標與任務 目標:為遊戲添加音效,能夠用Java載入、播放遊戲中的音效檔,並按要求控制播放。 任務:用Java設計一個播放多種聲音的程式。為電梯類比遊戲添

91、加背景音樂。并彪恿罐棍肪蛹寸职锦鹃坠忌饶姨蓉次牌孰鞋烽供恫妊盂酵疙讣标锰婉祥JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全學習過程項目核心功能擴展應用升級教師學生提供:聲音播放案例模仿完成:聲音播放案例提供:多個聲音列表播放關鍵代碼協作完成:多個聲音列表播放提供:電梯遊戲的聲音和介面協作完成:電梯遊戲的音效處理假钙武嘲降套鹏船蝎枚串炯焊倔悸靠炙显壮伟挪叠窜萎拭哨局拾滚敌镜引JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全Java支援的音訊檔案格式AU檔案格式WAV檔案格式A

92、IFF檔案格式MIDI檔案格式音效檔有很多格式信醛粗第纠跳懊奋玫根剃制馅绩彻芯籍蜂边暴梗氦义恶绦碍昨氦链幌骇农JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全AUAU音效檔 這是Java語言最早的聲音格式,副檔名為AU或SND,適用於短的音效檔。AU類型檔使用的三種典型音訊格式為:8位元單聲道採樣頻率為8KHz的-law類型、8位元線性類型以及16位元線性類型。排闰吠软翻题镊脓滤局惯计耶豁吭寻冒奈醇史猿竹缸男说膘帖荫泊驻冯鳞JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全WA

93、VWAV音效檔 副檔名為WAV,由Microsoft和IBM共同開發,Windows9X系統都支援此格式。颊仿昆织犀圣烫方申蛋膜掠驾厉架鲍卫妻刊耻后白豁地扳狼屎春尺标趣爷JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全AIFFAIFF音效檔 副檔名為AIF或IEF,是Macintosh公司和SGI公司所共用的標準音頻檔案格式。痴荒栽晕讼榆膀剐妙在管挛富其唇岸榜逆砰怂析贪就憾烙浑锤帐措钝壮颗JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全MIDIMIDI音效檔 副檔名為MID,

94、是音樂製造業所認可的標準,主要用於控制諸如合成器和音效卡之類的設備。Java2平臺支援三種類型的MIDI檔公式,它們分別為MIDI檔案類型O、MIDI檔案類型1以及RMF。眠劝鞠咒堤丫曰寸笨恢暗撮乍涉圈轮爬算药吟浦蔬累彭似青皂竟起菇曳穿JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全與聲音處理有關的包和類java.applet.Appletjavax.sound.midijavax.sound.midi.spijavax.sound.sampledjavax.sound.sampled.spi昂献乔御旅咨剖窘彭驳玛叔秩怠抑怖轮十样腹妮

95、赣婿态螟违敷鹊去缺霍初JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全 javax.sound.midi包,為I/O、序列化和MIDI資料的合成提供介面和類。javax.sound.midi.spi包,為新MIDI設備、MIDI檔閱讀器和編寫器等的實現提供介面。javax.sound.sampled包,為捕獲、處理和播放音訊資料提供介面和類。javax.sound.sampled.spi包,為新音訊設備、音效檔閱讀器和編寫器或音訊格式轉換提供抽象類別。與聲音處理有關的包和類歼座隙仑庆添片豫挞砒孝蹲帐抨渐鬃瓶巩糟礁卤聊鹅饰抵鹿景臣那崩酸

96、涸JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全在Applet類播放聲音使用play()方法裝載與播放聲音。格式如下:1、void play(URL url) 2、void play(URL url,String name) 一旦play()方法裝載了音效檔就立即播放。如果找不到,play()方法不返回出錯資訊,反應到使用者端就是聽不到聲音。 play()方法只播放一遍音效檔歇悍娱耽屎萝脐拉膝设清号锅尚盛脐贼痞湃敲潦迁怂体遵呸毙蜘羊胞帝巨JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯

97、模拟游戏-全重複播放聲音如果需要重複播放某個音效檔,就需要使用AudioClip介面提供的方法。AudioClip介面提供播放聲音片段的方法。多個AudioClip項可以在同一時間播放,從而產生聲音混合的效果。提锑嘎敲禄集当碎铬溺脉推瘴膏累鬼厨尽庭能疾风缝锗抖畏促讽湛湾钓诛JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全項目核心一個基本的使用Applet類提供的方法播放音效檔的例子,運行結果如圖所示:残渤嗅悲眶粱烃腑旁谋引涛驮睬茧们该酸顽椅焚业饿代蹿焚狸支献鹿溶邑JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-

98、从零开始开发贪吃蛇、电梯模拟游戏-全步驟一:創建一個Applet小程式(1)通過繼承Applet類來創建一個有三個按鈕的容器import java.applet.*;public class mAudio extends Applet(2)定義成員屬性包含3個成員屬性,分別表示播放的聲音的URL相對位址,當前播放的音訊流和聲音播放狀態。浚擦家筷耍赘聪硷连会酋笆扣影回以秃挟谚韶骨阅香战痕邢桨跋摆粥啥茅JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全步驟一:創建一個Applet小程式(3)在Applet的子類中覆蓋Applet類的init

99、()方法init()是java.applet.Applet類中的方法,當applet程式首次被打開時,會執行此方法定義的程式碼。當applet程式首次被打開時,init()將第一個被自動執行。在其中調用getAudioClip來初始化當前要播放的音訊流:audio=getAudioClip(new URL(getDocumentBase(),hurl);妒鸟时纵裸卤棕枢素脏蚊缸嚎捶悬帧皂沽珐扫森陛填钠只挨碱茧郭橇茬有JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全步驟二:對Applet容器中的按鈕動作進行事件處理(1)為Applet容

100、器添加按鈕動作監聽器由於要對Applet容器中發生的三種按鈕按下事件進行分別回應,可以直接在init()方法中對三個按鈕添加語句:addActionListener(this);(2)實現ActionListener介面public class mAudio extends Applet implements ActionListenerpublic void actionPerformed(ActionEvent e) 吞罕烤米诸避街沂绣灰著霜檬垂募绑阂痈评踪先蚕厢吝伯趴侣彭席他返侧JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全步

101、驟一:創建一個Applet小程式這裡需要根據事件源即按鈕的不同作出分別動作,可以通過e.getActionCommand()來判斷是哪個按鈕被按下。AudioClip類中的play,stop,loop方法分別對應播放、停止和迴圈播放功能。邪宽售彝洼驮也检咨访吴栗专氯胜磷脚粟架兹害穷叁重洋昼便垣屯炎端锈JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全功能擴展在上面程式的基礎上要求增加一套按鈕用於播放另一個音樂,2個音樂可以同時播放,製造一種混音效果。運行情況如下:腐诽你穆络炽簇积刁顷测戚伦翌先活刽韧衔超沮缓鹊隘佛粱窑尚仍昨燕皮JAVA游

102、戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全擴展步驟一:增加一套按鈕定義令一組成員屬性包含新的3個成員屬性,分別表示播放的第二段聲音的URL相對位址,當前播放的音訊流和聲音播放狀態。改寫init()方法在其中調用getAudioClip來初始化另一個要播放的音訊流:Audio2=getAudioClip(new URL(getDocumentBase(),hurl2);並且添加一套新按鈕,重新佈局。禄麓组份贤朗篮惫卿生症执韩腋帽汇惫锌坞放熟门瘸纯逆江壁彩脊烛怔囤JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始

103、开发贪吃蛇、电梯模拟游戏-全擴展步驟二:對Applet容器中的按鈕重新進行事件處理為Applet容器中的新按鈕添加事件監聽器由於要對Applet容器中發生的三種按鈕按下事件進行分別回應,可以直接在init()方法中對三個按鈕添加語句:addActionListener(this);(4)實現ActionListener介面,在actionPerformed方法中對六個事件源作出相應public class mAudio extends Applet implements ActionListenerpublic void actionPerformed(ActionEvent e) 枫慨落年欧

104、槐淖铅坝顽询噬纺跋丫零审拂消译拐请剪枣缩仪钙悉丙炸挞值JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全完成情況評價標準完成(1)-(4),得到最終結果的正確輸出,100分。 完成(1)-(3),正確生成菜單,80分。完成(1)-(2),正確生成菜單,60分。 县泡窟亥戍暮乞淳潞续陇梅朝宇半车让租净劲伸凸有帽臆缮涪舞郴哦鲜绑JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全功能擴展之案例二編寫一個applet讓用戶從幾個音訊片段中選擇來播放,程式運行畫面如下:医什夷职噪嫁欢矩殊酌

105、掇白确骚同钩向雷鸭纪颂那太买扎譬萝檀哗芹腕漓JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全功能擴展之案例二/程式中聲音的名字 public final String AUDIO = ping, pop, return, salvation, shuffle, squish ; /包含上述字串陣列的下拉清單 private Choice choice; /真實的音訊片段資料 private AudioClip clips;偏疑殃文啃题蒂倚祥惦飘童冻绘锑挽便亿梗碑繁他寓侧恭腰蛙骨句卉谩抒JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏

106、-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全功能擴展之案例二 /控制播放停止的按鈕 private Button playClip; private Button loopClip; private Button stopClip; private Button stopAllClips; /跟蹤當前哪些音訊片段在播放 private boolean clipsPlaying;析噬胃虹汀瞧麻弓帝妮宴睬檬挂颓什凝贰拒渣些逛憋仲卯尿芒樱逊站板熬JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全應用升級問題陳述:在電梯系統的類比

107、程式裡,公司要求在模擬中加入聲音。例如,當一個人走路時,應能聽到腳步聲。每當按下或者重定一個樓層按鈕或者電梯按鈕時,應當聽到按一下聲。電梯到達時鈴聲應當響起,且在門打開時或者關上時,門應當吱吱作響。最後,當電梯在樓層間運行時,應播放“電梯音樂”。角犹嵌蜗嗽焰牧哭幂操噪讼窗冬粟吱厨聚障案劲耳翻南医涯似勒膛旧厕些JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全應用升級解決思路:編寫類SoundEffects,將音效檔轉換成java.applet.AudioClip對象晴手昼听伸辊如键蛇号巫泪捻哉抵朵辅臼铭墨邱腕堆拯撑锨咳饥近帛旬薛JAVA

108、游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全關鍵代碼 try return Applet.newAudioClip( getClass().getResource( prefix + soundFile ) ); / return null if soundFile does not exist catch ( NullPointerException nullPointerException ) return null; 尚擞框免诞霄岩摹峪络翔疥卫承用核班罐哑堑营焊善奉娄祸拴或扶桅淆详JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-

109、全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全應用升級類SoundEffects包含方法getAudioClip,該方法通過參數soundFiled調用類java.applet.Applet的static方法.newAudioClip返回一個AudioClip對象。方法setPathPrefix允許改變音效檔的目錄(如果我們需要把聲音分配到多個目錄中,該方法很有用)。永盈获肺靖裔抹得豆诧陈硒磕明梢刘嘉窘模咆与剖纲惊吻匝整搜泣析抗扬JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全應用升級(2)編寫一個類,通過播放AudioCl

110、ip物件來產生聲音。(學生自主完成) 宣竣甜椰烫旨欣屉澳抖萨至旭陀很港珍晒嘎况抨咸酌潭蝴浴驰阁驻葛纯穴JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全Java遊戲開發(貪吃蛇、電梯模擬遊戲)學習情境6:小蟲動畫程式設計08遊戲3-2豪僵耸寝锥孙笛角缎壕痛目蔫槐涤卸浙皋臂蓬扛榜漳屯遂速灿茎校迄镀乃JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全目標與任務目標:用Java多執行緒為遊戲添加動畫,掌握多執行緒的實現、控制方法。掌握通過雙緩衝消除圖像閃爍的方法。任務:創建一個燃燒的火

111、焰動畫,為“電梯模擬遊戲”添加人行走,電梯運行的動畫了由坚疽兹胀膏慨膘昧汛肚警癣必数驮老镁盯涟融润耶缮月园确合舶崖门JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全學習過程項目核心功能擴展應用升級教師學生提供:繪製圖像案例模仿完成:繪製圖像案例提供:執行緒控制圖像間歇顯示協作完成:執行緒控制圖像間歇顯示成動畫提供:電梯遊戲的動畫和介面協作完成:電梯遊戲的場景動畫載入矽娃后输商赃钦贤烩沮私沧毡庚哈定朔堰党娱纬趟胡输素耶最烫耶泰枢螺JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全

112、詳細步驟步驟一:用屏外繪製技術在一個表單上顯示圖像步驟二:創建執行緒實現圖像的間歇顯示步驟三:多個圖形順序顯示形成動畫步驟四:為“電梯模擬遊戲”添加人行走,電梯運行的動畫步驟五:課後創新作業:自主設計一個程式實現:顯示滾動的字幕伙卓汰姜胸盐芹烬男惠丹稠拍小秒椽台度挚子洪计钡痈墟钱款墓捅欣娇龋JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全Java在螢幕上畫圖的方法paint,repaint,update,superpaint都可在螢幕上畫圖注意幾個方法的區別repaintsuperpaintupdatepaint面窝脉安腻棵题暇迷锋更

113、条契穗霓郭都曰旅硝膛赊廉钮课验刁行彬照苟蜀JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全幾個方法的區別 paint在當前容器中繪製圖形,要這個類中存在這個方法則自動載入。repaint重繪當前圖形,會先執行update中的方法,再執行paint中的方法。update更新當前圖形,通過repaint來調用。superpaint是隱式調用,當繼承一個容器後會自動調用此方法,用於顯示當前容器中的元件。檬溉舷噎渭绊涧氯拒郡刑泻氯贺婪氏剃二宅乎蠕帮摇尔姥焚衍堡声致购萄JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零

114、开始开发贪吃蛇、电梯模拟游戏-全屏外繪製緩衝器前面介紹的技術都是通過Graphics2D容器直接把物件繪製到表單上。屏外緩衝就是創建一個虛擬的applet來緩衝存放將要繪製的圖形。屏外緩衝繪圖的目的是加快圖形的繪製,消除屏閃。緩衝螢幕真實螢幕妊持运梅鞠廓咙捞杭饿报施同君饿柿跋沽载阐胞估根沁畔锄措糜摇须逞彩JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全項目核心:屏外緩衝繪圖屏外緩衝繪圖步驟:Image memoryimage,pic; /1創建兩個Image對象,一個用於屏外繪圖,一個用於屏內繪圖Graphicsmemoryg;/2創

115、建一個屏外繪圖的畫筆memoryimage = createImage(x,y);/3在記憶體中創建屏外繪圖區的大小memoryg = memoryimage.getGraphics();/4獲取屏外繪圖區的畫筆学锄挺七勾莹芽异赔拎秀沟搬悯喂有与茂衍酝丈条云桃担号才森洋咋妻狱JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全項目核心:屏外緩衝繪圖 繪圖的paint方法: paint(Graphics g) memoryg.drawImage(pic,x,y,null); /5在記憶體中畫出pic物件的圖像 g.drawImage(mem

116、ory) /6在螢幕上畫出記憶體中的圖像 例:一個在表單飛動的物體, 運行結果如圖所示:侥伐唁拄宵湍卓慧做午淄料睹键笋曰沛怯皋松裁泉筛迪蔷糙赢诛这犹魁拂JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全動畫和執行緒動畫是遊戲開發中常用的技術。動畫是一幀接一幀的連續播放圖像。用執行緒控制連續變化的一系列圖像間歇顯示就能形成動畫。蔡压舞览豪塑恿姻诡磕辖颗午妊戏报粪辈莉晚枣秸铝兆邀钢琼佃乘芒鄂疲JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全執行緒相關概念程式:靜態的電腦高階語言編寫

117、的代碼。進程:程式的一次執行。執行緒:程式中的部分代碼的一次執行過程。多進程:作業系統中多個程式併發執行。多執行緒:程式中多個片斷併發執行。Java通過繼承Thread類和實現Runnable介面創建執行緒。假麓歼拿匙氓猪杖校薯疤妹呕雏夸省房厚渝罕埋垄建泄魔腑规帮穿胜圃茁JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全執行緒的狀態和生命週期新建狀態就緒狀態阻塞狀態運行狀態死亡狀態酝臆僻浓托景资蓖蔑两挠纤忌挽卜趋药打赴烫努垮筐艳渤奇瘁颐饲辑煎靶JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电

118、梯模拟游戏-全執行緒的狀態和生命週期新建:新建的執行緒處於新建狀態就緒:在創建執行緒後,它將處於就緒狀態,等待start()方法被調用執行:執行緒在開始執行時進入運行狀態阻塞:在執行緒等待一個事件時(例如輸入/輸出操作),就稱其處於阻塞狀態。死亡:在run()方法已完成執行或其stop()方法被調用之後,執行緒就處於死亡狀態。陨祸景壕袋闻顶餐签万笋胁告鹅炎淀瞅喧气货崭拳晕篙抉哦桩啸瑟僳咨略JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全執行緒的調度和優先順序Java中的執行緒優先順序是在Thread類中定義的常量NORM_PRIORI

119、TY :值為5MAX_PRIORITY :值為10MIN_PRIORITY :值為1缺省優先順序為NORM_PRIORITY有關優先順序的方法有兩個:final void setPriority(int newp) :修改執行緒的當前優先順序final int getPriority() :返回執行緒的優先順序样患公赞叙帐惯烘乓窿宾样标妓惯晕惜箭拂婪蒸喇古消漾程巴镊戳顾咸拉JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全多執行緒的實現方法通過以下兩種方法創建Thread對象:1.聲明一個Thread類的子類,並覆蓋run()方法。 c

120、lass mythread extends Thread public void run( ) /*覆蓋該方法*/ 2.聲明一個實現Runnable介面的類,並實現run()方法。class mythread implements Runnable public void run( ) /*實現該方法*/ 帐时净刨创伯冕踢桌燃剖镁婆茵塌挛没鸽哇日老届烂寥勺律勋葡至三棱瞻JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全多執行緒的控制1.終止執行緒 stop()方法。2.測試執行緒狀態 isAlive()方法。3.執行緒的暫停和恢復 sl

121、eep() suspend()和resume() join() stop()resume()sleep()新建狀態就緒狀態阻塞狀態運行狀態死亡狀態join()run()椭蚀馒章桅莹翅硬炙俯芒赡啼涯佰点撇拆潭这色岁肝亢律丙蔑隋栈苗痴经JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全多執行緒的互斥有時兩個或多個執行緒可能會試圖同時訪問一個資源例如,一個執行緒可能嘗試從一個檔中讀取資料,而另一個執行緒則嘗試在同一檔中修改資料在此情況下,資料可能會變得不一致為了確保在任何時間點一個共用的資源只被一個執行緒使用,使用了“互斥”兩種方式實現互斥:

122、使用互斥方法synchronized void methodA() 使用互斥塊synchronized(object) /要互斥的語句圆啮丧缅靡履今斗颊灾潜瑰目陨统迁卧遥治扇旨满拷卡捶劣呻喷蛛拷单准JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全多執行緒的同步為避免輪流檢測,Java提供了一個執行緒間通信機制,使用wait()、notify()和notifyAll()方法 。這些方法僅在synchronized方法中才能被調用。wait()方法告知被調用的執行緒退出監視器並進入等候狀態,直到其他執行緒進入相同的監視器並調用notify

123、( )方法。彰褥篆伙孕燃袒酱诊夹桅聋矮舶忱货及阿素除重犬陡编虏炯挝膨辙象铂拓JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全執行緒的鎖死當兩個執行緒迴圈依賴於一對同步物件時將發生鎖死。例如: 一個執行緒進入物件ObjA上的監視器,而另一個執行緒進入對象ObjB上的監視器。如果ObjA中的執行緒試圖調用ObjB上的任何synchronized方法,就將發生鎖死。鎖死很少發生,但一旦發生就很難調試镐籽嚎帕途虐两乡才条筑额券常洗灶眩蕴合垃剩攀漳鳞谣嗅鲤榷瓢斋瓜圃JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始

124、开发贪吃蛇、电梯模拟游戏-全使用執行緒來創建動畫一幀就是指動畫中的一幅圖像動畫就是由一定時間間隔播放的幀圖像構成的。幀更換的速度直接影響動畫的效果幀速與進程調度間的關係。夸角坷弥肿郭龄臃烫舵糠俐棱营平影漫钡雹挂品田柔橡横块巾动祭搬疗总JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全功能擴展:燃燒的火焰動畫通過屏外緩衝方式,利用執行緒間隔顯示連續變化的圖像,形成動畫,程式運行結果如圖所示。帅檬枢枫杠樊闹夸豫恤袁艳阳凿罢朝攻翟咐焚绵赔取涉只闻仟沃诡汝挝诉JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪

125、吃蛇、电梯模拟游戏-全用執行緒實現圖形的間歇顯示例二程式運行結果如圖所示,螢幕中有一個移動的方塊,當它與其它方塊重合(遊戲中叫碰撞)時,會用不同的顏色顯示重合部分扭酝溜淖业婪黔憋贡五箱钱蛔寄团选罪蹲疮棘尾穆搜撰祥咆忘翌妈佛女椅JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JavaJava動畫中消除屏閃的兩招(1)通過覆蓋update(Graphics g)來消除閃爍 在動畫的實現中,經常用到repaint()函數來重畫螢幕,實現動畫的載入,其實在java中repaint()是通過兩個步驟來實現刷新功能的,首先它調用public vo

126、id update()來刷新螢幕,其次再調用paint(Graphcis g)來重畫螢幕,這就容易造成閃爍,特別是一些需要重畫背景的程式,如果下一楨圖像可以完全覆蓋上一楨圖像的話,便可以重寫update函數如下來消除閃爍:(2)通過雙緩存消除閃爍 為了防止螢幕重畫出現的閃爍,先創建一個屏外繪圖區,重畫完畢,直接將成品再繪製到小程式螢幕上去。offScreenImage=createImage(w,h);/創建屏外繪圖區offScreen=offScreenImage.getGraphics();/取得繪圖環境壳横质泰臆众傅灵遣曲腋弧傲绰痔芹剑谆航堵笔桐案确记毫契涩蹈售济雌JAVA游戏开发-从零

127、开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全應用升級:為“電梯模擬遊戲”添加人行走,電梯運行的動畫 電梯模擬遊戲中,人走向、離開電梯;電梯開、關門;燈閃爍;電梯上、下運行;都是動畫,它們只在遊戲劇情需要時才播放,我們將使用多執行緒和synchronized方法,保證這些動畫符合遊戲規定的邏輯正確播放。怖徊汞幕倍郧牟伴汪敝贩彩狂盯捎编嚼编稚庄育祭状腮刽邮皆缝吼吓滋尚JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全應用升級:為“電梯模擬遊戲”添加人走進電梯,電梯運行的動畫(事件處理方法之一 ) p

128、ublic void personEntered( PersonMoveEvent personEvent ) public void personEntered( PersonMoveEvent personEvent ) / find Panel associated with Person that issued event / find Panel associated with Person that issued event AnimatedPanel panel = getPersonPanel( personEvent ); AnimatedPanel panel = getP

129、ersonPanel( personEvent ); if ( panel != null ) if ( panel != null ) / determine velocity / determine velocity double time = TIME_TO_ELEVATOR / ANIMATION_DELAY; double time = TIME_TO_ELEVATOR / ANIMATION_DELAY; double distance = double distance = elevatorPanel.getPosition().getX() - elevatorPanel.ge

130、tPosition().getX() - panel.getPosition().getX() + 2 * OFFSET; panel.getPosition().getX() + 2 * OFFSET; panel.setVelocity( distance / time, -1.5 ); panel.setVelocity( distance / time, -1.5 ); / Person starts walking / Person starts walking panel.setMoving( true ); panel.setMoving( true ); panel.playA

131、nimation( 0 ); panel.playAnimation( 0 ); panel.setLoop( true ); panel.setLoop( true ); / end method personEntered / end method personEntered范吵悼屑芋实斟帘旱捂韶疥刀垃哨菲届佃登削池铺育矣口佃条屹咏谗葬珊JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全應用升級:為“電梯模擬遊戲”添加電梯關門的動畫 / invoked when Door has closed in model public voi

132、d doorClosed( DoorEvent doorEvent ) / get DoorEvent Location String location = doorEvent.getLocation().getLocationName(); / play animation of Door closing doorPanel.playAnimation( 1 ); doorPanel.setAnimationRate( 2 ); doorPanel.setDisplayLastFrame( true ); / play sound clip of Door closing if ( door

133、CloseClip != null ) doorCloseClip.play(); / end method doorClosed斯噎轻憋榴圣濒赢掘停们耸沼茵倔啄栈污存浙羌津鬼啤丽痞众匣侨乏胁迷JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全應用升級:為“電梯模擬遊戲”添加按鈕被按下的動畫 / invoked when Button has been pressed in model public void buttonPressed( ButtonEvent buttonEvent ) / get ButtonEvent Locat

134、ion String location = buttonEvent.getLocation().getLocationName(); / press Elevator Button if from Elevator if ( location.equals( ELEVATOR_NAME ) ) elevatorButtonPanel.playAnimation( 0 ); elevatorButtonPanel.setDisplayLastFrame( true ); 腋磋春臂裕敛岔脯煮潦践吕猛贬鹏悠须褒添迎峪跌囤歌抚躇违棍需狠沽常JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA

135、游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全課後創新作業。自主設計一個程式實現:顯示向左滾動的字幕 。前一幀後一幀丹炕械蜡谆婆幸厄汉绿嚣设屁氟欧杂勋檄锅帧戍仗蔑椿绕葵榆钩扣体碧辱JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全Java遊戲開發(貪吃蛇、電梯模擬遊戲)學習情境7:網路對弈程式08遊戲3-2浚赔停衫继旭妆轰嘱江淫蚀迂挖傅殖匠蔡簧抛韦汕涯反尽犀赐铀纠挟虎氮JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全目標與任務目標:為遊戲添加網路通信功能和遊戲邏輯 ,利用Soc

136、ket進行網路通信,C/S架構伺服器端和用戶端編寫,B/S架構實現。任務:開發網路對弈程式泌澎挫烈捐绢环啃坑捍榴柴悔锄扰荤杂缘移吃聘吐揣董志午硒受胚南涛札JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全目的程式完成專案開發:程式運行時,有兩個用戶端通過網路進行對奕。纶澡及漱零沙淬投蔓凹捎包蛹瞬淤雪借酉肚须疏讥惶蓬曰辩蜜进腮樱锰达JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全學習過程步驟一:先完成簡單的C/S架構步驟二:再完成第二個例,實現一個伺服器與多個用戶端通信步驟三:再

137、為伺服器端創建執行緒,實現多執行緒伺服器步驟四:最後加入分析兩用戶端通信的資訊,實現遊戲規則的代碼以依迅播档沈国饲务嘿譬茹历拥烹汲赏风遣总羹裙姿剔和痕感魂瞻泽抉穆JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全網路通信基礎網路通信就是通過某種方法讓一台電腦與其它電腦交換資料。通信就是給其它電腦傳資料,或者接收其它電腦發來的資料。對網路的任何形式的訪問最後都歸結為從網卡接收資料或向網卡傳送資料。網路通信解決兩個問題:(1)如何識別不同的電腦。(2)如何傳送資料。陨哥嚣兄屹吭昧贴狗枝尼篆菲猩含剂酶局胡泳抒乌存蛔慢涩犹训哩颇茨兼JAVA游戏

138、开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全網路通信問題網路中的兩台電腦靠協定進行通信網路中用IP標識不同的通信實體IP:219.123.14.110IP:116.123.214.108httpftpmail互捕篆思据宽张彼炊只帽垄喇当啃坊愧鸡失蔷伎胃玻互鲍呼愧公铅叙靶择JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全網路通訊協定在兩台電腦間傳送資料時,傳送或接收資料的先後順序,資料的格式等內容的約定構成通信的協議。Internet網的資料傳送有很多協定,如TCP/IP,UDP,FT

139、P等,協定不同,具體到網路通信程式,接收和發送資料部分的代碼會有不同。本次的例子都是採用TCP/IP協議。连丽昌悉赊庄来张穴岛咕遗未沦规茧厉销饶爪级硅报膛慈傍据拳海凋某硝JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全用IPIP識別網路中的電腦網路上不同的電腦用IP來標識。實際上一個IP對應一張網卡。如果一台電腦上有多張網卡,那麼就需要多個IP來標識每一張網卡。每個網卡有多個埠,供應用程式採用不同的通信協定傳輸資料。每種協定都採用不同的埠號,埠號可以設置,如設置某網卡用8080號埠進行TCP/IP協定方式的資料傳輸。讲蜗俐贤川铡搏解猫

140、妙湍狸贿素公怒亮礼降赚梢屑僳伯耸臼帖尔吸风徊埂JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全網路程式的架構一般網路上程式都是一個伺服器,一個用戶端,這種程式的總體結構叫架構,如上圖所示這種總體結構叫C/S架構(即客戶/伺服器)架構。C/S架構中,提出資料訪問要求的程式叫用戶端,被提出資料訪問要求的程式叫伺服器端。一個用戶端可能是一台配置很高的電腦,一個伺服器端可能只是一台普通電腦。用戶端和伺服器端可以是同一台電腦。CSCSCS蓬其滔净陈反骗赤钦噪瞳劳肥陈胺烟豁悟猜敛波铰销累友舵皇喝扩殴竣厚JAVA游戏开发-从零开始开发贪吃蛇、电梯模

141、拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全網路程式設計工具網路很普遍,所以,幾乎所有的程式設計語言都提供網路程式設計的元件。Java提供Socket元件供網路程式設計使用。Socket是一個類。在用Java進行網路程式設計時,只需使用Socket的有關方法 ,按照一定步驟編寫出接收資料,處理資料,或處理資料,發送資料的代碼即可。匿早镜确翠剔桅朔碧滦唱恶评蔓巡夕型学鞭亨喻戎藤柿阑给畦锨钮筏瓦励JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JavaSocketJavaSocket程式設計事實上網路程式設計簡單的理解

142、就是兩台電腦相互通訊資料而已,對於程式師而言,去掌握一種程式設計介面並使用一種程式設計模型相對就會顯得簡單的多了,JavaSDK提供一些相對簡單的API來完成這些工作。Socket就是其中之一,對於Java而言,這些API存在于這個包裡面,因此只要導入這個包就可以準備網路程式設計了。者鸭岗改鸽券觅碟爽朴竹忙松毗碌斩尼丧蚊奠筹惕帝争苑聚打支堕情炒轧JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全Socket程式設計步驟Java提供了對TCP通訊端的良好的支持,有兩種通訊端類: .Socket; .ServerSocket;當編寫連接到已

143、有服務的用戶端軟體的時候使用Socket類。當編寫綁定到本地埠以提供服務的伺服器軟體的時候使用ServerSocket類。這是與DatagramSocket的UDP工作方式不同的地方-在TCP中,連接伺服器地和從用戶端接收資料的函數被分為兩個獨立的類。遗呻蜘肪足颅垫鸳呢扯呀崔讨育蚊腆藻隅赚猪拨陕里丈乙合滇嫡湖财赋袍JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全SocketSocket程式設計步驟Java中Socket可以理解為用戶端或者伺服器端的一個特殊的物件,這個物件有兩個關鍵的方法,一個是getInputStream方法,另一個

144、是getOutputStream方法。getInputStream方法可以得到一個輸入流,用戶端的Socket對象上的getInputStream方法得到的輸入流其實就是從伺服器端發回的資料流程。GetOutputStream方法得到一個輸出流,用戶端Socket對象上的getOutputStream方法返回的輸出流就是將要發送到伺服器端的資料流程,(其實是一個緩衝區,暫時存儲將要發送過去的資料)。弊盖寻衬群冯疏刽仁蹈车头抢摸沧锐蘑筋捎轻留玉穆友筒舞不彭腰严拴激JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全Socket程式設計步驟要

145、完成這個工作,需要完成三個部分的工作,以下依次說明: 1、建立伺服器類 2、建立用戶端代碼 3、建立使用者介面士晦寥憨阉写紧偷咙贵酗隙醚综酞桌起凡撤忱葬在每满冠蹭咽诡钮恩邻剧JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全1 1、建立伺服器類創建伺服器物件:ServerSocket server = new ServerSocket(9998)建立一個Socket連接:Socket incoming = server.accept()輸入流和輸出流: BufferedReader in = new BufferedReader(new

146、 InputStreamReader(incoming.getInputStream(); PrintWriter out = new PrintWriter(incoming.getOutputStream(),true); 隨後,就可以使用in.readLine()方法得到用戶端的輸入,也可以使用out.println()方法向用戶端發送資料。關閉這兩個資料流程 out.close(); in.close();绿上嗽党遇肢员伟堡廓焙沫让嗓舶泳急盯它衡埋养矛月弧移负吮中永垣靛JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全2 2、建

147、立用戶端代碼創建一個Socket對象:Socket socket = new Socket(168.160.12.42,9998);資料的輸入和輸出in = new BufferedReader(new InputStreamReader(socket.getInputStream();out = new PrintWriter(socket.getOutputStream(),true);拜乡版搂香刹磷晌禄挺幌触慢膊橱下酮燥集皆澎认尚湍仪亿晶烈盆护驶最JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全項目核心:簡單的C/SC/S架構客

148、戶機/伺服器的典型通信過程: 1、伺服器監聽相應埠的輸入; 2、客戶機發出一個請求; 3、伺服器接收到此請求; 4、伺服器處理這個請求,並把結果返回給客戶機; 5、重複上述過程,直至完成一次會話過程。曰吕薯毒粘南亿利贯洁辈总逝恢医庸戌橇逼踏赫拾霹树骄淆湛绣浑驶呢凛JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全項目核心:簡單的C/SC/S架構服務方:import java.io.*;import .*;public class MyServer public static void main(String args) throws I

149、OExceptionServerSocket server=new ServerSocket(5678);Socket client=server.accept();BufferedReader in=new BufferedReader(new InputStreamReader(client.getInputStream();PrintWriter out=new PrintWriter(client.getOutputStream();while(true)String str=in.readLine();System.out.println(str);out.println(has r

150、eceive.); out.flush();if(str.equals(end)break; client.close(); 脊爽抱责纸牢娘翠兔拐孽嘉振哺蜕倪耽鸦阂雍岿败粤杆戍暖倔等粘凡班从JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全項目核心:簡單的C/SC/S架構這個程式的主要目的在於伺服器不斷接收客戶機所寫入的資訊只到,客戶機發送End字串就退出程式,並且伺服器也會做出Receive為回應,告知客戶機已接收到消息。翔鞠纂麓铭墩俞亲少脐勇桓尤涧解轰型旬奏嘛美是套鸥融湃沉墒陋茸门谊JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏

151、-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全項目核心:簡單的C/SC/S架構客戶機代码:import .*;import java.io.*;public class Client static Socket server;public static void main(String args)throws Exceptionserver=new Socket(InetAddress.getLocalHost(),5678);BufferedReader in=new BufferedReader(new InputStreamReader(server.getInputStre

152、am();PrintWriter out=new PrintWriter(server.getOutputStream();BufferedReader wt=new BufferedReader(new InputStreamReader(System.in);while(true)String str=wt.readLine();out.println(str);out.flush();if(str.equals(end) break;System.out.println(in.readLine();server.close(); 怂腿咽区垫辉唆沤营洛娥韧衅唆臭姜迈谈勋勘摆宦博沃凭似债瑞押

153、鞘吴迅JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全項目核心:簡單的C/SC/S架構客戶機代碼則是接受客戶鍵盤輸入,並把該資訊輸出,然後輸出End用來做退出標識。 這個程式只是簡單的兩台電腦之間的通訊,如果是多個客戶同時訪問一個伺服器呢?你可以試著再運行一個用戶端,結果是會拋出異常的。那麼多個用戶端如何實現呢?莱畴都麻袒淘乒厘诗介幅犊后乐您谰危烛胞拦吟宿璃恢羊宪晶蔡辩幕吁虹JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全一對一的C/S一個Server一個Client一對多的

154、C/S一個server多個ClientCSCSCSCC移嫌颊提台曰盒哟丘梯蛾蔗滋压卢窥戍悉绘杭东占堕秆揖摔汾千联祈烫关JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全功能擴展:將用戶端改成Java Java AppletApplet,即B/SB/S架構,為用戶端設計符合需求的GUIGUI。 網路通信模型B/S架構:如果用戶端是流覽器,則通信程式的架構叫流覽器/伺服器架構(即Browser/Server架構,簡稱B/S架構)。用戶端是通用的流覽器,省掉了用戶端升級的麻煩。BSBB厅冉舔振巧氓疫糯痪慨亮桅句潜肥柒依遣鄂玄匡羚从戈坡徘博堵氛

155、筑荤十JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全功能擴展:將伺服器端改進為多執行緒伺服器一個伺服器為多個用戶端服務其實,簡單的分析一下,就可以看出客戶和服務通訊的主要通道就是Socket本身,而伺服器通過accept方法就是同意和客戶建立通訊.這樣當客戶建立Socket的同時。伺服器也會使用這一根連線來先後通訊,那麼既然如此只要我們存在多條連線就可以了。那麼我們的程式可以變為如下:译费沉蹦那钨樱枕撵蕊园申范字猪誊督涌锯痰集愚皆卤拳猛碉广镀今旧零JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪

156、吃蛇、电梯模拟游戏-全功能擴展:將伺服器端改進為多執行緒伺服器改進為多執行緒伺服器: try file:/建立伺服器ServerSocket server = new ServerSocket(9998);int i=1;for(;)Socket incoming = server.accept();new ServerThread(incoming,i).start();i+;catch (IOException ex) ex.printStackTrace(); 谁临第马撑溺狐淋雾组椒每膊尔抉殷筒殖打薄诉胯枷敛肘吃邻克涩批廖路JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游

157、戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全功能擴展:將伺服器端改進為多執行緒伺服器這裡僅僅只是加了一個外層的While迴圈,這個迴圈的目的就是當一個客戶進來就為它分配一個Socket直到這個客戶完成一次和伺服器的交互,這裡也就是接受到客戶的End消息.那麼現在就實現了多客戶之間的交互了。妮皑案鹏宵缔忆滓忘稗尉连幸讫建瞥腐贯侣枫洞瓮娩区待竿蚂麓铬何嗽沏JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全功能擴展:將伺服器端改進為多執行緒伺服器但是.問題又來了,這樣做雖然解決了多客戶,可是是排隊執行的。也就是說當一個客戶和伺服器完成一次通訊

158、之後下一個客戶才可以進來和伺服器交互,無法做到同時服務,那麼要如何才能同時達到既能相互之間交流又能同時交流呢?很顯然這是一個並存執行的問題了。所以執行緒是最好的解決方案。砾零镁撑暇谜弃瑟折伊药糖摔轮斥佰搔灿呼领宇税槛筛喊僻说芽袱彼蜒哗JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全功能擴展:將伺服器端改進為多執行緒伺服器那麼下面的問題是如何使用執行緒.首先要做的事情是創建執行緒並使得其可以和網路連線取得聯繫。然後由執行緒來執行剛才的操作,要創建執行緒要麼直接繼承Thread要麼實現Runnable介面,要建立和Socket的聯繫只要傳

159、遞引用就可以了.而要執行執行緒就必須重寫run方法,而run方法所做的事情就是剛才單執行緒版本main所做的事情,因此我們的程式變成了multiThread.java 简韵营绚乏隶勒宠康鉴跌丈瑰蕉隐峙咆宜隘景窖榆侮辙蘸槽嘎彰酝喊钨繁JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全應用升級:網路對奕遊戲本程式實現的是基於B/S模式的網路對奕遊戲,實現了多執行緒程式設計,實現多客戶對奕。並且實現了伺服器端管理用戶端的功能,包括用戶端和伺服器端。實現功能:用戶上線包括新使用者上線和已使用過該系統的使用者上線每位線上的用戶將會收到該用戶上線的

160、通知肠捻梯头耶芹苯仕朽毁绽繁晌庞硬挎戒陪韩战念围慰桔蓄惊甲圭恿兜创距JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全應用升級:網路對奕遊戲該使用者會收到所有已線上的使用者的資訊朋友下線 伺服器端刪除該使用者資訊每位線上的用戶將會收到該用戶下線的通知,同時刪除改用戶的資訊聊天終止,檔案傳輸終止修改用戶名字用戶可以在對應的文字方塊內直接修改名稱婉豢嘻丰忘倡谦揽饿挺屑黎码婿皱方篓荐薄茵舍玖沫蛾震泊媒宜烈尹祷汀JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全應用升級:網路對奕遊戲用戶

161、可以在保存的Myinfo.txt中直接修改名稱聊天功能:公聊:所有線上的用戶都可以看到你的發言私聊:能和所有以線上的用戶進行私聊,其他用戶看不到私聊物件之間的聊天檔案傳輸能給所有的已線上用戶發送檔(先打開私聊視窗)網路對弈功能。實現棋局邏輯設計,實現遊戲邏輯程式設計。祥上闲划掺拉咋豪趣肢数寻跪卵扼寺彰棋冕浊砌地渝拍貉精价诫胀壶遍装JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全應用升級:網路對奕遊戲原始程式碼:用戶端TicTacToeClient.java伺服器端TicTacToeServer.java阀氛靡养币畦逊恍建馆呢笨遍息捆筷

162、渣漓披渝嗜碴仓帚疯躯帕寿瘪匿惋凝JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全Java遊戲開發(貪吃蛇、電梯模擬遊戲)情境8遊戲的集成與發佈08遊戲3-2店羊盐置费砖殴禾些休律褐检相涟钻鸳杉桐意卸巍菊查圈赞膀你藕皮袒裕JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全學習任務已經完成的進度完成了7個情境的學習有一個完整的可以執行的電梯遊戲新的挑戰 ?:每次都要在DOS下輸入一系列命令才 可以玩遊戲嗎 ?:遊戲產生的這麼多個檔,用戶到底 執行哪個好呢解決方法:集成打包為一個可執

163、行檔女匪塞弯脯逊史哥汀才豪肖迄翁蓬孜兼玫沮遁讲留盎被察笺赣铣桨赃泛菲JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全學習內容核心技術:DOS下生成JAR文件JAVA中jar文件的編寫和應用內容清單manifest.fm功能擴展:DOS下生成貪吃蛇遊戲可執行檔應用升級:使用ECLIPSE開發環境打包發佈電梯遊戲導入電梯遊戲項目打包發佈成可執行檔道狰锡揩焉钵曾昂晕厘幕艰旨哟滔力驻吴将抹莱谊勉黄盾武宜玉辈滞潮懒JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全核心技術DOS下生成JA

164、R文件JAR:(Java ArchiveFile)顧名思意,它是Java的一種文檔格式。幾乎可以说JAR檔就是ZIP檔,它們的區別是在JAR檔的內容中,包含了一个META-INF/MANIFEST.MF檔,這個檔可以是在生成JAR檔的時候自動創建的;也可以是自己書寫的座豺肪针挚伎酪桓跋波湾吩鄂石单锥涎衔扇革它卧嫡列凿沦悼裙幸袒孰肾JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全核心技術例如有如下程式:HelloWorld.class可以通過如下方法來進行打包:jar cvf HelloWorld.jar HelloWorld.clas

165、s其中cvf是參數,如下文jar的用法所示。public class HelloWorld public static void main(String args) System.out.println(Hello, World!); 建捧碗茸旱胯宗镭炉股桥刺匝双贴孵金抚坝潍呆仅震话惮邢诺晋支状葱永JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全核心技術用法:jar ctxuvfm0Mi jar-文件 manifest-文件 -C目錄檔案名.選項: -c創建新的存檔 -t列出存檔內容的清單 -x展開存檔中的命名的(或所有的文件 -u更

166、新已存在的存檔 -v生成詳細輸出到標準輸出上 -f指定存檔檔案名 -m包含來自標明檔的標明資訊 -0只存儲方式;未用ZIP壓縮格式 -M不產生所有項的清單(manifest文件 -i為指定的jar檔產生索引資訊 -C改變到指定的目錄,並且包含下列檔:如果一個檔案名是一個目錄,它將被遞迴處理。蔽镰晾器凯解泊摩寡自瘁精墓代庞柏褒宜蜡碗鹏辞盂予霹渍偶嘎悼缺观狂JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全核心技術示例1:將HelloWorld打包成JAR文件執行演示垫帅涧扫喜倍曲隔玖蕾湃层我缉旁气姆化疹镣击侠湖伪村恤戈笺数混驮鸥JAVA游

167、戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全核心技術示例2:為HelloWorld修改清單檔清單(manifest檔案名和存檔檔案名都需要被指定,按m和f標誌指定的相同順序。如果使用winrar打開HelloWorld.jar看看,可以發現裡面除了HelloWorld.class之外,還有META-INF/MANIFEST.MF文件。泉汤失钟曾架儒灵委阻袜体兆鸣袍替驹贪簧茫位坠箩躇乓操奇您魁廓洽盎JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全核心技術我們可以修改manifest.

168、mf文件,在裡面添加Main-Class用於指明主方法,這樣,我們可以通過java -jar jarname.jar來直接運行程式了。對上例中manifest.mf文件加入Main-Class: HelloWorld刚骇盎每墅彼耸焊糜俊乾奋辫辖捌羚横馋立展卞召苔郭摊去伞台扣备某几JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全核心技術示例3:運行HelloWorld.jar現在我們就可以在DOS下通過输入java jarHelloWorld.jar來運行程式了。幕贰韭型拳嘴纷正娘球吓锤坐撵纵晤棱橙曳坡疆料瘪造衰瓦壬颅儿蹦癣螟JAVA游

169、戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全功能擴展擴展:我們要對貪吃蛇遊戲進行打包了:這是一個由兩個.java代碼檔組成的程式我們已經在之前的情境練習中成功對其編譯並得到了Node.class、SnakeModel.class和GreadSnake.class三個類文件步驟:1、編輯清單檔2、對檔進行打包井廖眯春旱呸周脯充带知羹郭壶覆啪市掉燎汲账科造酚条猾哉趾丈赫翰波JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全功能擴展其實,我們可以自己編寫manifest.mf文件,在裡面添

170、加Main-Class或Class-Path,這樣,我們可以對一個大的程式進行打包,並且可以通過java -jar jarname.jar來直接運行程式了。以貪吃蛇遊戲為例:此遊戲的主方法處於GreadSnake.class中故編輯如下清單檔:说八睦肃丽淄添成武妇忧廓篷政剁甄烤酸襄蹦岗獭仆片巾弦足坊絮暂库倪JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全功能擴展示例4:打包產生snake.jar可執行檔現在我們就可以在DOS下通過輸入打包命了。在DOS中輸入:jar cfm snake.jar manifest.mf GreadSnake.class SnakeModel.classNode.class;此操作將多個class檔存檔到一個名為snake.jar的存檔文件中請看執行結果址磁雌嗓祟椿唐纽碱柿智陷等吁衅紫长笨景苞风旬甚魄抉秸北苏绿恒逆辜JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全JAVA游戏开发-从零开始开发贪吃蛇、电梯模拟游戏-全

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号