




已阅读5页,还剩204页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JAVA游戏开发从零开始开发贪吃蛇 电梯模拟游戏 Java遊戲開發 貪吃蛇 電梯模擬遊戲 學習情境1 Java遊戲體驗 08遊戲3 2 目標和任務 目標 瞭解本課程的教學目的和教學內容瞭解Java遊戲架構 Java運行機制 Java程式的開發流程 各種Java開發平臺掌握Java平臺的使用方法和技巧以小組為單位互相合作完成任務任務 在Java平臺運行貪吃蛇遊戲 電梯模擬遊戲 兩個真實的Java遊戲 本課程學完後要完成的兩個Java遊戲 1 貪吃蛇遊戲 2 電梯模擬遊戲 學習過程 教師先介紹本課程的基本情況 學習內容和學習要求 然後演示一個已完成的遊戲程式 讓學生明確學習目標 產生學習興趣 再介紹Java基本知識和平臺使用方法技巧 步驟一 瞭解課程的基本情況和學習內容步驟二 小組討論 手機裡有什麼常見的遊戲 例如 貪吃蛇等 步驟三 觀看Java開發的遊戲 模擬電梯遊戲 貪吃蛇遊戲 步驟四 查看遊戲的原始程式碼 瞭解使用的編碼語言 Java步驟五 學習Java語言的背景和相關基礎知識步驟六 學習Java平臺的安裝和使用方法步驟七 學生自己運行一個簡單遊戲的原始程式碼 例如 貪吃蛇 步驟八 學生嘗試自己編寫一個簡單的Java程式 實踐指導 1 安裝並配置Java開發平臺 安裝Java2SDK開發工具 設置環境變數 path javac和java命令所在的目錄 classpath 存放位元組碼檔的目錄 2 查看一個完整的Java遊戲原始程式碼 瞭解Java程式結構和特徵 1 打開Java遊戲來源程式檔 2 觀察程式結構和特徵 注 Java遊戲來源程式由教師提供 教師可提供貪吃蛇遊戲的原始程式碼給學生觀摩 動手實踐 3 使用Java整合式開發環境調試運行Java程式編輯並保存java程式解釋java程式形成中間檔運行Java程式 得到結果 Java相關 一 1995年Java被正式發佈二 Java目前的主要應用許多大公司購買了Java的許可證 眾多軟體發展商開始支持Java軟體產品 物件導向的應用開發 Intranet 企業內部網 上的軟體發展 動態畫面的設計 包括圖形圖像的調用 與各類資料庫連接查詢的SQL語句實現 其他應用類型的程式 三 Java語言的特點 簡單性 它摒棄了C 中許多低級 困難 容易混淆 出錯或不經常使用的功能物件導向 程式 對象 消息 支持封裝 多態性和繼承 三 Java語言的特點 可攜性 Java來源程式經過編譯器編譯 會被轉換成一種我們稱之為 位元組碼 byte codes 的目的程式 位元組碼 的最大特點便是可以跨平臺運行 即程式設計人員們常說的 編寫一次 到處運行 正是這一特性成為Java得以迅速普及的重要原因 解釋性 採用先經過編譯器編譯 再利用解譯器解釋的方式運行 三 Java語言的特點 高性能 用Java語言編輯的來源程式的執行方法是採用先經過編譯器編譯 再利用解譯器解釋的方式來運行的 它綜合了解釋性語言與編譯語言的眾多優點 使其執行效率較以往的程式設計語言有了大幅度的提高 三 Java語言的特點 併發性 Java的多執行緒機制使應用程式中的執行緒能夠併發執行 且其同步機制保證了對共用資料的正確操作 通過使用多執行緒 程式設計者可以分別用不同的執行緒完成特定的行為 而不需要採用全域的事件迴圈機制 這樣就很容易在網路上實現即時交互行為 豐富的API ApplicationProgramInterface 文檔和類庫 程式師的開發工作可以在一個更高的層次上展開 這也正是Java受歡迎的重要原因之一 Java同時為用戶提供了詳盡的API文檔說明 四 Java程式工作機制 Java程式的組成結構 五 Java應用程式 教師提供 Java程式的組成結構 1 至多有一個public類 檔案名必須與類名相同 2 程式可以有一個或多個其它類 3 當需要從某個類繼承或使用某個類及其方法時 使用import引入該類的定義 4 Java程式組成結構package 0個或1個 必須放在檔開始import 0個或多個 必須放在所有類定義之前publicclassDefinition 0個或1個 檔案名必須與類名相同classDefinition 0個或多個interfaceDefinition 0個或多個 六 Java開發平臺 1 JDK EditPlus 2 JDK Jcreate 3 JDK Eclipse 七 Java程式的開發及運行過程 Java遊戲開發 貪吃蛇 電梯模擬遊戲 學習情境2 Java類設計 08遊戲3 2 目標和任務 目標 能根據需求設計和使用Java類 能理解MVC設計模式 能與小組其他成員協作完成任務 能使用API 教學案例 學習指引輔助學習任務 設計EnterDate Java類 使用它可以創建 記錄 讀取特殊的日期 按電梯模擬遊戲的設計UML圖創建電梯模擬遊戲中的類 學習過程 項目核心 模仿教師提供的一個核心案例 學習類的編寫方法功能擴展1 擴展類 為類添加更多的屬性 方法 存取控制功能擴展2 使用已有的類應用升級 分析電梯模擬遊戲的類圖 模仿核心案例編寫電梯遊戲所需的類 物件導向程式設計概述 面向過程程式設計語言 C程式模組 函數 函數能完成一定的功能 有輸入和輸出 資料單獨存放 物件導向程式設計語言 C VB Java程式模組 類 對象 類的屬性保存資料 類的方法完成功能 有輸入和輸出 Java類 Java中所有的程式都由一個或多個類組成設計Java程式就是設計Java的類先有類 再創建類的對象 通過物件使用類類由屬性和方法構成 Java中的系統類和自訂類學習Java 先學會使用系統類完成一定的功能 再學習自己設計一些類 程式1 1 EnterDate類定義一個類 又叫聲明一個類 它有固定的書寫格式類聲明的格式 掌握屬性的聲明和方法的聲明 就掌握了類的聲明 注意類聲明時的一些規範 classextends implements 類體 項目核心 供學生模仿 它具有完整的類格式 但只包含少數屬性和操作該屬性的方法 核心案例 檔案名 EnterDate Java publicclassEnterDate publicintyear publicvoidsetYear intnewYear if newYear 0 System out println 所給的年份參數不合理 設置操作被拒絕 return year newYear endsetYear intnewYear 方法 提供對屬性year進行讀取的方法publicintgetYear returnyear 測試上述屬性和方法能否正確使用publicstaticvoidmain Stringargs EnterDatehubd hubd newEnterDate hubd setYear 1980 System out println year hubd getYear 類的使用 2 類的使用先定義一個類再創建這個類的物件類名對象名 new類的構造方法 通過調用物件的屬性和方法來使用這個物件 即使用類來完成一定的事 功能 對象名 屬性 對象名 方法 示例 使用核心案例EnterDate類 核心案例就是EnterDate類的定義 2 EnterDatehubd newEnterDate 3 hubd setYear 1980 EnterDate Java類的測試 類testEnterDate在另一個新類testEnterDate中使用EnterDate 如下所示 publicclasstestEnterDate publicstaticvoidmain Stringargs EnterDatehubd humm hubd newEnterDate humm newEnterDate 182 45 69 hubd setYear 1980 hubd setMonth 8 hubd setDay 28 測試EnterDate中方法與屬性的結果 構造器 構造器又叫構造方法 構造函數 構造方法是Java類中一種特殊的方法 它體現在 1 構造方法的方法名必須與類名完全相同 2 一個類可以定義多個構造方法 這叫構造方法的重載 3 沒有參數的構造方法叫默認構造方法 有參數的叫非默認構造方法 4 一個類如果一個構造方法都沒有定義 則它繼承父類的構造方法 5 當一個類中定義了非默認的構造方法後 默認的構造方法就失效了 除非再定一個默認構造方法的定義 信息隱藏和封裝 屬性和方法可以沒有修飾符 有public修飾符 有private修飾符 有protected修飾符 屬性和方法修飾符不同 可以控制它們被訪問的範圍 用private修飾不想被其它類訪問的屬性和方法 以達到資訊隱藏的目的 用public修飾哪些不想隱藏的屬性和方法 以達到可以被子類繼承或被別的類訪問的目的 使用繼承創建類 Java用extends實現繼承 快速創建類Java支持單繼承 一個子類只能有一個父類子類繼承父類的屬性和方法在Java程式設計中應該多使用繼承classextends implements 類體 功能擴展 使用繼承 定義一個person類作為父類 代碼如下 classPerson privateStringname privateintage publicPerson Stringname intage this name name this age age publicPerson Stringname this name 20 publicPerson name age 20 publicStringgetName returnname publicintgetAge returnage publicvoidsetName Stringname this name name publicvoidsetAge intage this age age publicStringgetInfo return name name nage age endclassPerson 功能擴展 使用繼承 Student先繼承Person 後重載Person中的方法從上面的Person類繼承一個子類Student類 並在子類中重載父類Person中的方法classStudentextendsPerson privateStringschool 增加新屬性publicStudent Stringname intage Stringschool super name age this school school publicStudent Stringname Stringschool super name this school school publicStudent Stringschool this school school 重載構造方法publicStudent school publicStringgetSchool returnschool 增加新的方法publicvoidsetSchool this school school 增加新的方法publicStringgetInfo returnsuper getInfo nschool school 重載 功能擴展 使用繼承 設計一個類使用Person StudentpublicclassP49 publicstaticvoidmain Stringargs Personperson newPerson 張三 21 System out println person getInfo Studentstudent newStudent 李四 22 sziit System out println student getInfo Persons newStudent 王五 23 szpt System out println s getInfo 方法重載 一個類多個同名的方法叫重載重載不同重寫普通方法與構造方法都可以重載普通方法重載規則 重載方法的參數列表必須和被重載的方法不同 重載方法的返回類型可以和被重載的方法不同 但僅此還不夠 重載方法可以改變存取控制級別 構造器的重載 構造器也可以重載用this調用自己的構造方法用super調用父類的構造方法this和super不能同時出現this和super只能出現在第一行如果你類中沒有顯式的默認構造器 不能用super 方法覆蓋 子類可以重寫父類中同名的方法重寫也稱為覆蓋重寫時注意 方法名必須與被重寫的方法一樣參數列表必須與被重寫的方法一樣返回類型必須與被重寫的方法一樣存取控制級別不能比被重寫的方法更嚴格 由覆蓋和重載產生的多態性 物件導向三大特徵 封裝 繼承 多態多態 編譯時多態運行時多態多態參數 Static和final static用static修飾的成份叫靜態成份 如靜態屬性 靜態方法 靜態類 static可以修飾屬性和方法 內部類 不能用來修飾一般的類 用static修飾的屬性成為全域變數 所有類的實例共用一個靜態屬性 用static修飾的方法不能在子類中重寫 Static和final 靜態成員沒有this 訪問靜態成員 可不用創建物件 直接用類名訪問 在類的方法的外部 可以定義靜態塊static 靜態塊常用於進行靜態屬性的初始化 靜態塊的產生 源於任何的動作陳述式必須屬於某個方法這個規定 final可以使用final來修飾類 屬性 方法 一個類用final修飾 則它不可以被繼承 一個屬性用final修飾 則它將成為一個常量 一個方法用final修飾 則它不能被重寫 抽象類別 抽象方法就是不完整的方法 方法體為空 類中有抽象方法 則類必須為抽象類別用abstract修飾的類叫抽象類別如果子類沒有實現父類中的抽象方法 則子類必須也為抽象類別 一個類不能同時用abstract和final修飾 介面 當一個類中所有的方法都是抽象方法時 Java將它定義為介面 interface 和繼承父類相似 類可以實現介面 classextends implements 類體 抽象類別和介面的多態性 抽象類別和介面都支援多態性它們和類的多態性相似 內部類 就是在一個類的 中間再定義一個類 classA classB 編譯後产生A class和A B class兩個類文件內部類的使用創建了內部類之後 可以在 的內部或外部使用它注意 內部類的名稱不能和它的外部類相同內部類可以申明為abstract 並可以被其它內部類繼承 內部類可以申明為final的 內部類可以申明为private或protected非static的內部類不能申明除常量之外的靜態成員 定義在外部類方法體中的內部類稱為本地方法內部類 可以訪問外部類的其它成員 但不能訪問所在方法的區域變數 還有一種特殊的內部類 static內部類 Java檔的組織 Java中用包來組織使用者的原始檔案一個Java包可以認為是硬碟上的一個資料夾 Java用package包名 來創建一個包 同一個包中的類可以互相訪問 要訪問不同包中的類 用import包名 導入要訪問的某包 包應用示例 如圖所示組織Java的文件將PA1放入package1包中 將PA2放入package2包中 PA2調用PA1 testPA12調用PA1和PA2 包應用示例 關於包涉及PA1 PA2 testPA12三個Java原始檔案 目錄結構d test package1 d test package2 classpath d test 來源程式PA1 PA2 testPA12等隨便放入一個目錄如d test src 先進入dos 進入d test src目錄 用命令列編譯PA1 Java 命令格式Javac dd test PA1 Java 用命令列编译PA2 Java 命令格式Javac dd test PA2 Java 行成一個package1包 包中有一個檔PA1 class 行成一個package2包 包中有一個檔PA2 class 再進入d test src目錄 編譯並運行testPA12 testPA12 能正常說明包的運行正確 注意 標明的語句 包應用示例 packagepackage1 將PA1放入package1包中publicclassPA1 packagepackage2 將PA2放入與PA1不同的package2包中importpackage1 PA1 因為PA1 PA2不同包 PA2想使用PA1必須先導入importpackage1 PA1 importpackage2 PA2 應用升級 按照設計說明書的類圖編寫類 問題陳述 某公司打算建造一幢兩層的辦公樓 並為它裝一部電梯 公司要求開發一個物件導向的類比程式 對電梯的運作進行建模 在電梯系統的類比程式裡 公司要求圖形化地顯示執行過程 在適當時刻 螢幕應顯示一個人走向電梯 按下一個按鈕 然後進入電梯 乘坐電梯 最後走出電梯 該圖形還應顯示電梯的移動 門的大開 指示燈的開和關 按下和重定按鈕式的亮暗變化 應用升級 電梯遊戲系統包含的類 應用升級 實現Elevator類 對於Elevator類的private屬性moving summoned currentFloor capacity 和traveTime 他們的聲明代碼為 publicclassElevator attributesprivatebooleanmoving privatebooleansummoned privateintcurrentFloor 1 privateintdestinationFloor 2 privateintcapacity 1 privateinttravelTime 5 constructorpublicElevator Java遊戲開發 貪吃蛇 電梯模擬遊戲 學習情境3 圖形化使用者介面設計 08遊戲3 2 目標和任務 目標 為遊戲添加使用者介面 使用者交互任務 網上物流系統介面設計 電梯類比遊戲介面設計 學習過程 開始 圖形化使用者介面 GUI 設計 學習內容 GUI概述容器有容器佈局事件處理概述事件模型事件適配器常用swing組件 項目 設計一個系統介面如下 項目分析 可將專案分成三個模組實現 所有的GUI都可分成以上三個模組實現 GUI包 java awt包 是使用Java進行GUI設計的基礎 javax swing包 幾乎所有AWT組件對應有新功能更強的Swing組件 另外還加入了一些全新的元件 Swing元件在名稱上前面多了一個字母 J 2 GUI的創建步驟 1 引用需要的包和類 2 設置一個頂層的容器 3 根據需要為容器設置佈局管理器或使用默認佈局管理器 4 將組件添加到容器內 位置自行設計 5 為回應事件的組件編寫事件處理代碼 容器 組件 佈局和觀感 1容器和組件元件是可以用圖形化的方式顯示在螢幕上並能夠與使用者進行交互的物件 容器是一種特殊的元件 一種能夠容納其他元件或容器的元件 2 佈局管理器為了使圖形化使用者介面具有良好的平臺無關性 提供了專門用來管理元件在容器中的佈局的工具 3 觀感決定swing應用程式的外觀 常用容器 容器是放置其他Swing組件的頂級容器JFrame組件用於在Swing程式中創建表單它的構造函數 JFrame JFrame StringTitle 元件必須添加至內容窗格 而不是直接添加至JFrame對象 示例 frame getContentPane add b JPanel組件 用於將小型的羽量級元件組合在一起JPanel的缺省佈局為FlowLayoutJPanel具有下列構造函數 JPanel JPanel LayoutManagerlm JApplet也是一種視窗容器 繼承自Applet類 Applet小程式是另一種Java程式 與Applet不同的是 它默認的佈局管理器是JAppletBorderLayout 而Applet默認的佈局管理器是FlowLayout 可直接向Applet視窗中添加元件 但JApplet不行 添加元件時必須添加到其內容窗格中 得到內容窗格使用方法 getContentPane 常用組件 標籤 JLabel 它既可以顯示文本也可以顯示圖像構造函數如下 JLabel Iconicon icon表示使用的圖示JLabel Stringtext Iconicon intalign text表示使用的字符串 icon表示使用的圖示 align表示水準對齊方式 其值可以為 LEFT RIGHT CENTER 其它常用方法getText setText Stringtext 常用組件 按鈕 JButton 可以使用以下任一構造函數來創建按鈕 JButton 新建一個空的按鈕JButton Iconicon JButton Stringtext JButton Stringtext Iconicon JButtonbtnOk newJButton 確定 JButtonbtnCancel newJButton 取消 getContentPane add btnOk getContentPane add btnCancel 常用組件 文字方塊 JTextFieldJTextField元件允許輸入或編輯單行文本此類的構造函數包括 JTextField JTextField Documentdoc Stringtext intcolumns JTextField intcolumns JTextField Stringtext JTextField Stringtext intcolumns 常用組件 JTextFieldtf newJTextField 20 con add tf 文字方塊 JPasswordFieldJPasswordField元件允許輸入或編輯單行文本 並且文本被其他字元代替 此類的構造函數與單行文字方塊類似 其它方法 char getPassword chargetEchoChar voidsetEchoChar charc 常用組件 文字方塊 JTextAreaJTextArea元件用於接受來自使用者的多行文本它可實現可滾動介面JTextArea元件可使用下列構造函數創建 JTextArea JTextArea introws intcols 常用組件 核取方塊 JCheckBox核取方塊用於為使用者提供一組選項JCheckBox類具有下列構造函數 JCheckBox JCheckBox Iconicon JCheckBox Iconicon booleanselected JCheckBox Stringtext JCheckBox Stringtext booleanselected JCheckBox Stringtext Iconicon JCheckBox Stringtext Iconicon booleanselected 常用組件 選項按鈕 JRadioButton選項按鈕允許使用者從多個選項中選擇其中一個ButtonGroup用於在Swing中創建組JRadioButton物件可使用下列構造函數創建 JRadioButton JRadioButton Iconicon JRadioButton Icon booleanselected JRadioButton Stringtext JRadioButton Stringtext booleanselected JRadioButton Stringtext Iconicon JRadioButton Stringtext Iconicon booleanselected 常用組件 清單方塊 JListpublicJList 使用空模型構造JListpublicJList ListModeldataModel 構造一個清單 用它顯示指定模型中的元素 publicJList Object listData 構造一個清單以顯示指定陣列listData的元素 JList不支持滾動 要啟用滾動 可使用下列代碼 JScrollPanemyScrollPane newJScrollPane myScrollPane getViewport setView dataList 常用組件 下拉式列示方塊 JComboBox文本域和下拉清單的組合在Swing中 下拉式列示方塊由JComboBox表示構造函數如下 publicJComboBox 此構造函數使用缺省資料模型創建JComboBoxpublicJComboBox ComboBoxModelasModel 使用現有ComboBoxModel中的項目的下拉式列示方塊publicJComboBox Object items 包含指定陣列元素的下拉式列示方塊 常用組件 菜單功能表顯示專案清單 指明各種任務 選擇或按一下某個選項時會打開另一個清單或子功能表 Swing功能表由功能表列 功能表和功能表項目構成 功能表列是所有菜單和功能表項目的根JMenuBar是可通過JFrame JWindow的根窗格添加至容器的組件 由多個JMenu組成 每個JMenu在JMenubar中都表示為字串 JMenu在JMenuBar下以文本字串形式顯示 而在使用者按一下它時 則以彈出式功能表顯示 JMenuItem為JMenu中的一個元件 以文本字串形式顯示 可以具有圖示 外觀可以修改 如字體 顏色 背景 邊框等 彈出式菜單JPopupMenu的定義和使用 常用組件 對話方塊1 JOptionPane對話方塊是強制回應對話方塊 它提供了很多現成的對話方塊樣式 可以供使用者直接使用 2 JFileChooser對話方塊提供了標準的檔的打開 保存對話方塊 佈局管理器 4 佈局管理器Java中的佈局類型包括以下幾種 FlowLayout 流式佈局 BorderLayout 邊界佈局 GridLayout 網格佈局 CardLayout 卡片佈局 GridBagLayout 網格包佈局 FlowLayout佈局管理器 FlowLayout的構造函數有 FlowLayout 生成一個默認的流式佈局FlowLayout intalignment 可以設定每一行元件的對齊方式FlowLayout intalignment inthorz intvert 可以設定元件間的水準和垂直距離Applet和麵板的缺省佈局 組件從左上角開始按從左到右 從上到下的方式排列 BorderLayout佈局管理器 下麵是BorderLayout所定義的構造函數 BorderLayout 生成默認的邊界佈局 BorderLayout inthorz intvert 可以設定元件間的水準和垂直距離窗口 框架和對話方塊等的缺省佈局組件被置於容器的北 南 東 西或中間位置 GridLayout佈局管理器 GridLayout的構造函數如下所示 GridLayout 生成一個單列的網格佈局 GridLayout introw intcol 生成一個設定行數和列數的網格佈局 GridLayout introw intcol inthorz intvert 可以設置元件之間的水準和垂直間隔用於將容器區域劃分為一個矩形網格組件按行和列排列 見後面計算器的佈局例 swing佈局管理器 1 BoxLayout佈局管理器按照從上到下 即Y軸 或者從左到右 即X軸 的順序來依次排列元件 2 ScrollPaneLayout佈局管理器是JScrollPane中的內置佈局管理器 所以不需要單獨創建 會自動設置 手動佈局 在某些情況下 使用者不想使用佈局管理器 需要自己設置元件的位置和大小 這時應取消容器的佈局管理器 然後再進行設置 否則用戶自訂設置將會被佈局管理器覆蓋 取消佈局管理器的方法是 setLayout null 用戶使用setLocation setSize setBounds 等方法為元件設置位置和大小 需要注意的是 這種方法會導致程式與系統相關 如不同的解析度會產生不同的效果 5 事件處理模型 Java最新的事件處理方法是基於授權事件模型當事件來源物件因使用者的操作 滑鼠或鍵盤 系統會自動觸發此事件類物件E 並通知所授權的事件監聽者A 若來源對象已向A註冊 事件監聽者A中有處理各種事件的方法 事件處理者1 n 便會處理此事件E的各種狀況 事件處理方法 實現事件監聽器介面法 首先給元件註冊監聽器 使用下列方法 addxxxListener 事件監聽器对象 確定了事件監聽器的類型後 必須在程式中定義類來實現這些介面 重寫介面中的所有方法 事件適配器 使用實現事件監聽器介面的方法處理事件時 必須重寫監聽器介面中的所有方法 儘管有些方法不會用到 繼承事件適配器類 只需要重寫所需要的方法即可 項目核心 只包括少數組件 importjavax swing importjava awt classP115extendsJFrame JLabeljLabel P115 super 網上物流系統 setDefaultCloseOperation EXIT ON CLOSE setVisible true jLabel newJLabel 請選擇貨物出發地 getContentPane add jLabel pack publicstaticvoidmain Stringargs P115demo newP115 運行結果 功能擴展 包括更多組件的GUI 按照創建元件 介面佈局 添加事件處理三個部分完成包括更多元件的GUI 如下圖所示 應用升級 為電梯類比遊戲創建介面 如下圖 Java遊戲開發 貪吃蛇 模擬電梯遊戲 學習情境4 塗鴉遊戲設計 08遊戲3 2 目標和任務 目標 遊戲場景中圖形影像處理任務 塗鴉遊戲 用戶可選擇一種顏色 用滑鼠在螢幕上隨意繪畫 電梯類比遊戲的場景圖片載入 學習過程 項目核心 創建一個Applet容器 在其中繪圖功能擴展 使用者通過交互控制圖形繪製 圖像載入應用升級 為 電梯模擬遊戲 載入樓層 電梯井等圖像 什麼是Applet 一个JavaApplet就是一個嵌入在另一個程式裡面運行的應用程式 就是說Applet是不能單獨運行的應用程式 Web的流覽器 appletview可以運行Java的Applet Applet的內容可以是文本 聲音 圖像 Java有Application和Applet兩種程式 Applet的生命週期 調用init 方法將Applet載入到容器調用start 方法調用paint 方法調用stop 方法調用destroy 從容器中清除Applet 項目核心 創建一個可以在上面用滑鼠塗鴉的Applet程式 運行情況如下 核心案例 檔案名 Scribble java 創建Applet繪圖容器 1通過繼承Applet類創建Applet繪圖容器importjava applet publicclassScribbleextendsApplet 定義成員屬性 在Applet的子類中覆蓋Applet類的init 方法 2init 是java applet Applet類中的方法 當applet程式首次被打開時 init 將第一個被自動執行 添加滑鼠動作監聽 1 由於要對Applet容器中發生的滑鼠按下和滑鼠拖動事件進行繪圖回應 可以直接在init 方法中添加語句 addMouseListener this addMouseMotionListener this 2 實現MouseListener和MouseMotionListener2個介面publicclassScribbleextendsAppletimplementsMouseListener MouseMotionListener 需要將2個介面中的所有方法都實現 哪怕有些方法不需要做什麼 滑鼠動作監聽介面 鍵盤動作監聽介面 功能扩展1 增加顏色窗 在上面程式的基礎上要求增加一個視窗 它包含顏色選項下拉清單和一個清除applet表單的按鈕用來選擇畫筆顏色和清除applet表單上的內容 運行情況如下 添加一個顏色選擇視窗 1 創建一個createSidebar方法來生成含顏色選項下拉清單和一個清除applet表單的按鈕的輔助視窗 privatevoidcreateSidebar 對於顏色陣列中的每一個ColorDescription 提取其文本 並將它加入選項清單 創建 clearwindow 按鈕 創建frame 添加一個顏色選擇視窗 2 實現ItemListener介面 對顏色選項下拉清單的顏色選取進行事件處理publicvoiditemStateChanged ItemEvente 3 實現ActionListemer介面 對清除applet表單的按鈕進行事件回應publicvoidactionPerformed ActionEvente paint 方法 在Java中的awt包裡 Component類 構件類 中定義了一個方法 paint Graphicsg 1 參數g是一個圖形類 Graphics 物件 它由系統自動生成 不需要使用者程式來產生實體 2 由參數g來調用Graphics類中的圖形處理方法 3 paint 方法是自動調用的 當構件首次顯示或顯示需要更新時調用 4 如果調用repaint 方法 將導致update 方法的自動調用 update 的調用將首先用背景色清除畫面 然後調用paint 方法 Graphics類輸出圖形 在paint 方法中由g來調用 1 直線的輸出 publicvoidpaint Graphicsg g drawLine 50 60 100 120 g drawLine 30 50 30 50 矩形的輸出 1無填充的矩形 drawRect intx inty intwidth intheight x y為矩形左上角座標 width height為矩形的寬和高2有填充的矩形fillRect intx inty intwidth intheight 3無填充的圓角矩形drawRoundRect intx inty intwidth intheight intarcWidth intarcHeight arcWidth arcHeight為圓角弧的橫向和縱向直徑4有填充的圓角矩形fillRoundRect intx inty intwidth intheight intarcWidth intarcHeight draw3DRect intx inty intwidth intheight booleanraised raised true false5有凸出 凹下的三D矩形fill3DRect intx inty intwidth intheight booleanraised 畫出的六種矩形 橢圓的輸出 1無填充的橢圓drawOval intx inty intwidth intheight 2無填充的橢圓fillOval intx inty intwidth intheight 如果width和height的值相等 將畫出圓形3畫弧drawArc intx inty intwidth intheight intstartAngle intarcAngle startAngle 弧開始位置的角度 arcAngle 弧轉過的角度 逆時鐘方向轉為正 順時鐘方向轉為負 畫扇形 fillArc intx inty intwidth intheight intstartAngle intarcAngle 示例 publicvoidpaint Graphicsg g setColor Color blue g drawOval 20 20 60 60 g fillOval 100 20 80 60 g drawArc 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 畫出的圓和弧 畫多邊形 1畫無填充多邊形drawPolygon intxPoints intyPoints intnPoints 2畫有填充多邊形fillPolygon intxPoints intyPoints intnPoints nPoints 多邊形頂點的個數 xPoints yPoints 每個頂點的x y座標組drawPolygon Polygonp 3Polygon類的構造方法Polygon Polygon intxPoints intyPoints intnPoints Polygon類的方法addPoint intx inty 與Polygon 結合使用可畫出任意個頂點的多邊形 改變繪圖顏色 Color類 可以通過Color類的對象來獲取顏色 1構造方法 Color intr intg intb r g b 紅 綠 藍的色份 0 255之間取值Color intrgb rgb 3原色的混合值2 設置顏色的常用方法 以圖形方式處理文本 1Font類 將文本作為圖形來處理以避免System out print 所產生的單調輸出 2構造方法 Font Stringname intstyle intsize name 字體 style Font PLAIN Font BOLD Font ITALIC size 字型大小例如 Fontf newFont TimesRoman Font BOLD Font ITALIC 28 3 Graphics類中的常用文本顯示方法 drawString Stringstr intx inty 從 x y 開始顯示文本strdrawChars chardata intoffset intlength intx inty 以 x y 開始顯示data中從第offset個字元起始的length個字元 功能擴展2 顯示圖像 1 定義一個類ImagePanel 功能是可以在指定位置顯示指定圖片 2 類ImagePanel是一個JPanel子類 它能夠在指定的螢幕位置顯示一個圖像 3 可以用ImagePanel物件表示模型中的靜止物件 如電梯和兩個樓層地板 應用升級 問題陳述 在電梯系統的類比程式裡 公司要求圖形化地顯示執行過程 在適當時刻 螢幕應顯示一個人走向電梯 按下一個按鈕 然後進入電梯 乘坐電梯 最後走出電梯 該圖形還應顯示電梯的移動 門的大開 指示燈的開和關 按下和重定按鈕式的亮暗變化 希望獲得的介面如下 電梯模擬遊戲場景圖 Java遊戲開發 貪吃蛇 模擬電梯遊戲 學習情境5 音樂播放機設計 08遊戲3 2 目標與任務 目標 為遊戲添加音效 能夠用Java載入 播放遊戲中的音效檔 並按要求控制播放 任務 用Java設計一個播放多種聲音的程式 為電梯類比遊戲添加背景音樂 學習過程 項目核心 功能擴展 應用升級 教師 學生 提供 聲音播放案例 模仿完成 聲音播放案例 提供 多個聲音列表播放關鍵代碼 協作完成 多個聲音列表播放 提供 電梯遊戲的聲音和介面 協作完成 電梯遊戲的音效處理 Java支援的音訊檔案格式 AU檔案格式WAV檔案格式AIFF檔案格式MIDI檔案格式 音效檔有很多格式 AU音效檔 這是Java語言最早的聲音格式 副檔名為AU或SND 適用於短的音效檔 AU類型檔使用的三種典型音訊格式為 8位元單聲道採樣頻率為8KHz的 law類型 8位元線性類型以及16位元線性類型 WAV音效檔 副檔名為WAV 由Microsoft和IBM共同開發 Windows9X系統都支援此格式 AIFF音效檔 副檔名為AIF或IEF 是Macintosh公司和SGI公司所共用的標準音頻檔案格式 MIDI音效檔 副檔名為MID 是音樂製造業所認可的標準 主要用於控制諸如合成器和音效卡之類的設備 Java2平臺支援三種類型的MIDI檔公式 它們分別為MIDI檔案類型O MIDI檔案類型1以及RMF 與聲音處理有關的包和類 java applet Appletjavax sound midijavax sound midi spijavax sound sampledjavax sound sampled spi javax sound midi包 為I O 序列化和MIDI資料的合成提供介面和類 javax sound midi spi包 為新MIDI設備 MIDI檔閱讀器和編寫器等的實現提供介面 javax sound sampled包 為捕獲 處理和播放音訊資料提供介面和類 javax sound sampled spi包 為新音訊設備 音效檔閱讀器和編寫器或音訊格式轉換提供抽象類別 與聲音處理有關的包和類 在Applet類播放聲音 使用play 方法裝載與播放聲音 格式如下 1 voidplay URLurl 2 voidplay URLurl Stringname 一旦play 方法裝載了音效檔就立即播放 如果找不到 play 方法不返回出錯資訊 反應到使用者端就是聽不到聲音 play 方法只播放一遍音效檔 重複播放聲音 如果需要重複播放某個音效檔 就需要使用AudioClip介面提供的方法 AudioClip介面提供播放聲音片段的方法 多個AudioClip項可以在同一時間播放 從而產生聲音混合的效果 項目核心 一個基本的使用Applet類提供的方法播放音效檔的例子 運行結果如圖所示 步驟一 創建一個Applet小程式 1 通過繼承Applet類來創建一個有三個按鈕的容器importjava applet publicclassmAudioextendsApplet 2 定義成員屬性包含3個成員屬性 分別表示播放的聲音的URL相對位址 當前播放的音訊流和聲音播放狀態 步驟一 創建一個Applet小程式 3 在Applet的子類中覆蓋Applet類的init 方法init 是java applet Applet類中的方法 當applet程式首次被打開時 會執行此方法定義的程式碼 當applet程式首次被打開時 init 將第一個被自動執行 在其中調用getAudioClip來初始化當前要播放的音訊流 audio getAudioClip newURL getDocumentBase hurl 步驟二 對Applet容器中的按鈕動作進行事件處理 1 為Applet容器添加按鈕動作監聽器由於要對Applet容器中發生的三種按鈕按下事件進行分別回應 可以直接在init 方法中對三個按鈕添加語句 addActionListener this 2 實現ActionListener介面publicclassmAudioextendsAppletimplementsActionListener publicvoidactionPerformed ActionEvente 步驟一 創建一個Applet小程式 這裡需要根據事件源即按鈕的不同作出分別動作 可以通過e getActionCommand 來判斷是哪個按鈕被按下 AudioClip類中的play stop loop方法分別對應播放 停止和迴圈播放功能 功能擴展 在上面程式的基礎上要求
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年地下室防水保温一体化合同
- 二零二五年度商铺租赁合同补充协议
- 2025年度国际旅游包车客运入境合同
- 2025版智能一体化建设工程围墙施工合作协议
- 2025年度木方模板在线购销平台合作协议
- 2025版煤矿资产评估与转让合同样本
- 二零二五年度智能家居产业多方投资担保合同
- 2025版抗静电地板砖研发、生产与市场推广合同
- 快递行业短途运输代理合同范本
- 二零二五年度车库车位租赁收益权转让合同
- 南京社区工作者考试题库2023
- 《人才池 人才培育的靶心战略》读书笔记思维导图
- 2021届高考英语887核心词(打印、词频、出处、例句、背诵)
- JJG 10-2005专用玻璃量器
- GB/T 5907.4-2015消防词汇第4部分:火灾调查
- BB/T 0019-2000包装容器方罐与扁圆罐
- 超市生鲜蔬菜培训资料
- 2020浙江高考英语一轮复习课件:专题十二-文章
- 新编物理基础学(上下册)课后习题详细答案 王少杰 顾社主编
- 2022年开封市中医院医护人员招聘笔试试题及答案解析
- 氢气泄露控制表
评论
0/150
提交评论