Greenfoot 的特色有以下四點 : (1) 容易上手 :Greenfoot 的操作環境很簡單, 就是在一個微世界中安排幾個演員, 然後想辦法用程式碼讓這些演員動起來 初學者能夠很快地熟悉它的操作介面 (2) 變化萬千 : 你可以使用 Greenfoot 來開發各式各樣具有聲光效果的遊戲, 也能

Size: px
Start display at page:

Download "Greenfoot 的特色有以下四點 : (1) 容易上手 :Greenfoot 的操作環境很簡單, 就是在一個微世界中安排幾個演員, 然後想辦法用程式碼讓這些演員動起來 初學者能夠很快地熟悉它的操作介面 (2) 變化萬千 : 你可以使用 Greenfoot 來開發各式各樣具有聲光效果的遊戲, 也能"

Transcription

1 Greenfoot 入門課程 (12 小時 ) 主講 : 南港高中高慧君老師 時間 :2012 年 7 月 26, 27 日 地點 : 臺北市立教育大學 koma@mail.nksh.tp.edu.tw Hour 1: Introduction 認識 Greenfoot 隨著時代的發展, 電腦硬體設備日新月異, 而軟體工程的發展更是一日千里 70 年代結構化的程式設計概念促進了軟體的快速發展, 而 90 年代興起的物件導向技術的新思維典範更是促進了大型軟體的發展, 它能有效地提高軟體的生產率 縮短軟體發展的時間, 提高軟體品質, 是控制軟體複雜性的有效途徑 1995 年昇陽推出物件導向的 Java 程式語言, 其具有跨平臺功能特點, 使得應用程式開發人員使用 Java 開發企業級應用系統漸漸熱門 然而, 傳統學習 Java 語言的途徑是先從基本語法開始, 再學習物件導向的觀念, 學了這些之後, 學生往往也還不知道如何用 Java 來解決問題 為了提供初學者一個好玩且容易上手的 Java 學習環境, 英國肯特大學開發了 Greenfoot 軟體, 讓 14 歲以上的青少年也能輕鬆地學習 Java 物件導向程式設計的技術, 並且用它來開發各式各樣的互動遊戲 有別於傳統的程式設計教學往往以語法做為學習的切入點,Greenfoot 則是採用物件概念優先的方法來進行學習, 經由預先開發好的範例專案入手, 讓初學者先探索物件與類別的觀念, 透過呼叫物件的方法來與微世界中的物件實體互動, 然後才開始引入程式碼概念, 程式碼是用來控制物件在微世界中的狀態的指令 1

2 Greenfoot 的特色有以下四點 : (1) 容易上手 :Greenfoot 的操作環境很簡單, 就是在一個微世界中安排幾個演員, 然後想辦法用程式碼讓這些演員動起來 初學者能夠很快地熟悉它的操作介面 (2) 變化萬千 : 你可以使用 Greenfoot 來開發各式各樣具有聲光效果的遊戲, 也能夠用它來開發各種模擬程式 只要是 2D 的動畫表現都可以使用 Greenfoot 來開發 (3) 功能強大 :Greenfoot 使用標準的 Java 語言, 也支援其所有的套件 它的功能不會輸給業界常使用的程式設計開發工具 (4) 發展性高 :Greenfoot 不單只是教學軟體而已, 學習 Greenfoot, 就是在學習 Java 物件導向程式語言, 對於未來有志往資訊產業發展的人, 不管是升學或就業都很有幫助 Greenfoot 的下載與安裝 安裝程式可以在 Greenfoot 官網 ( 中免費下載 下載 Greenfoot windows 212.msi 檔案後, 點選該檔案兩下, 依照安裝步驟的 指示, 便可以完成安裝 ( 需注意的是, 在安裝 Greenfoot 之前, 要在你的電腦 系中安裝 JDK 環境 ) 2

3 Greenfoot 案例介紹 案例一 : 小貓咪 案例二 : 袋熊吃樹葉 3

4 案例三 : 沙灘螃蟹 案例四 : 打彈珠 案例五 : 太空探險 4

5 案例六 : 鋼琴模擬 案例七 : 螞蟻模擬 案例八 : 波的行進 5

6 Hour 2: Classes and Objects Greenfoot 操作介面 開啟範例檔案 Wombat 後, 可以看到以下的畫面 其中, 畫面左方是程 式執行結果所顯示的場景, 在右方可以瀏覽所有的物件類別及其關係圖, 在畫面 下方是執行控制列, 可以控制程式的執行與暫停 場景 類別關係圖 執行控制列 在這個範例中, 網格區域所展示的是遊戲的場景 (World), 而網格中可以呈現的物體則被稱為遊戲的演員 (Actor), 每一個 Greenfoot 遊戲都需要繼承場景 (World) 和演員 (Acotr) 類別, 來建立自己的遊戲世界和遊戲角色 從 類別關係圖 中可以看到這個遊戲場景的類別名稱是 WombatWorld, 而遊戲中的兩個演員類別名稱分別為 Wombat( 袋熊 ) 和 Leaf( 樹葉 ) 6

7 物件基本概念 Greenfoot 是物件導向程式設計開發環境 物件導向程式設計的主要概念, 是將日常生活中的物件概念應用在軟體設計裏 在物件導向程式設計中, 程式是由一群物件 (object) 所組成的, 而類別 (class) 是物件的基礎, 用來描述物件的特性 (attribute) 和行為 (behavior) 從 Greenfoot 的 類別關係圖 可以看出 : (1) 目前這個應用程式包含那些類別 (2) 這些類別之間的關係在 Wombat 範例中, 定義了 Wombat( 袋熊 ) 和 Leaf( 樹葉 ) 兩個演員類別, 這兩個類別都繼承了 Actor 類別 因此, Actor 稱為父類別(superclas), 而 Wombat 和 Leaf 稱為子類別(subclass) 繼承(inheritance) 是物件導向程式設計的重要概念, 父類別的資源 ( 特性及行為 ) 其子類別可以繼承使用, 它使得程式碼與程式觀念可以很容易的被再使用 (reuse) 類別定義完成後, 就可以根據類別來產生物件, 根據類別所產生的物件, 稱為實體 (instance) 當我們定義好了 Wombat 類別之後, 就可以根據類別來產生物件實體 現在, 讓我們根據 Wombat 類別來產生袋熊物件 : (1) 指向類別關係圖中的 Wombat 並按下滑鼠右鍵 (2) 從快顯功能表中選取 new Wombat(), 此時螢幕上會出現一隻袋熊 (3) 可將袋熊拖曳至場景中的任何位置, 按下滑鼠左鍵將袋熊置入場景中 7

8 a. 新增物件 b. 移入場景 c. 置放場景中因為類別 (class) 定義物件的特性與行為, 而根據類別所建立的物件就會具備這些特性與行為 以 wombat 物件為例, 牠具備了 move turnleft 等行為 在物件實體上按右鍵可檢視物件所具備的特性與行為 呼叫物件的方法 類別中所定義的行為稱為方法 (method), 試著呼叫 wombat 物件的 move( ) 方法, 看看這個方法的功能是什麼? 再試著呼叫 wombat 物件的 turnleft() 方法, 8

9 看看這方法的功能是什麼? 在方法前面的關鍵字, 如 void boolean int 等, 代表方法的傳回值型態, 即這個方法被呼叫時, 會傳回什麼型態的資訊 void 代表這個方法沒有傳回值 int 代表這個方法將傳回一個整數 boolean 代表這個方法將傳回一個布林值 當呼叫具有傳回值的方法時, 系統會以訊息方塊傳回相關的資訊, 例如 : 呼叫 boolean canmove( ) 方法, 系統將以訊息方塊傳回 true 或 false 如果袋熊的位置是在邊緣, 不能再往前移動, 這時候呼叫 canmove() 方法的傳回值是 false 在方法名稱後面小括弧內的資訊, 稱為參數 (parameter) 當呼叫具有參數的方法時, 系統會以訊息方塊要求你輸入值給這個方法 void act( ): 代表呼叫時, 不需傳遞額外資訊 void setdirection(int direction): 代表呼叫時, 需傳入一個整數資料, 而且 setdirection 方法內部以 direction 這個名稱來代表所接收的參數值 程式的執行 由 執行控制列 也可以呼叫物件中的方法 (1) 按 單步執行 按鈕, 會呼叫每一個物件的 act() 方法一次 (2) 按 執行 按鈕, 會重複呼叫每一個物件的 act() 方法 如果把整個 Greenfoot 的場景視為一個微世界 (microworld), 那麼微世界中的每一個物件就像是演員, 我們程式要操弄的也就是這些演員間的互動方式 放到微世界中的物件 ( 演員 ) 都有 act() 方法 不同類別物件的 act() 方法都各自定義自己的程式功能, 所以執行不同類別物件的 Act 方法將產生不同的結果 以袋熊的 act() 方法為例, 其程式功能如下 : 9

10 (1) 若袋熊剛好坐在樹葉上, 那就吃了樹葉 (2) 若袋熊沒遇到邊界, 那就往前走 ; (3) 若遇到邊界就左轉 建立幾隻袋熊和樹葉, 然後按 單步執行 按鈕, 觀察這些袋熊的行為 按下 執行 按鈕, 觀察產生了什麼結果? 小技巧 : 選取類別關係圖中的 Leaf, 按下鍵盤 shift 鍵不放, 使用滑鼠左鍵在場景上點一下, 可以快速地建立物件實體 Hour 3: Some Code 1. 開啟範例檔案 crab 10

11 下圖為專案中所包含的類別 : (1) Actor 是多數專案均會具備的類別 (2) Animal 與 Actor 間的連結符號代表繼承, 所以 Animal 類別繼承 Actor 類別 同樣地,Crab 繼承 Animal, 繼承階層 (level) 可跨越多個, 故可說 Crab 繼承 Actor 2. 讓螃蟹往前移動 查看 Crab 類別的原始程式碼 (1) Crab extends Animal: 代表 Crab 繼承 Animal (2) 目前整個類別僅含一個空的方法, 即 act 方法 public void act( ): 代表方法的簽名 (signature) (3) 表示此方法的主體敘述 請在當中加入 move( ); (4) 按下 編譯全部 重新編譯 (5) 在世界中建立一個 Crab 物件, 分別按下 單步執行 及 執行 按鈕並觀察 Crab 的行為 (6) 在世界中建立多個 Crab 物件, 分別按 單步執行 及 執行 按鈕, 觀察這些 Crab 物件的行為 11

12 3. 讓螃蟹轉彎 (1) Animal 類別中所定義的另一個與螃蟹動作有關的方法 : void turn (int angle) angle 的值可介於 0~359 之間, 代表螃蟹右轉的角度 (2) 移除 move( ); 改成呼叫 turn( );, 試著傳遞各種不同的值給 turn 方法 (3) 方法的傳入值稱為參數 (parameter) 4. 讓螃移動加上轉彎 在 Act 方法中先呼叫 move( ), 再呼叫 turn( ) 電腦會先執行 move 方法, 再執行 turn 方法, 即指令依由上而下的順序執行, 但因 move 及 turn 動作很快, 視覺效果上會以為同時發生 5. 讓螃蟹遇到邊界能自動轉彎 查看 Animal 類別中有哪些方法可用? 以 Document 的模式檢視 12

13 (1) 建立一隻螃蟹, 從選單選取 atworldedge 方法, 傳回值是什麼? (2) 建立一隻螃蟹並將螃蟹移到邊界, 再從選單選取 atworldedge 方法, 傳回值是什麼? (3) 修正程式, 讓螃蟹遇邊界時轉彎 13

14 程式語法 : 單向選擇結構 if ( 條件式 ) 程式敘述 ; 6. 用鍵盤的方向鍵控制螃蟹的移動 在 Greenfoot 類別中有一個方法, 用於偵測鍵盤按下的事件, 如下 : static boolean iskeydown(string key) (1) 這個方法是一個靜態方法 (2) 傳回值是 boolean, 所以可結合 if statement 中的條件式 (3) 接受一個字串型態的參數判斷使用者是否按下左鍵 Greenfoot.isKeyDown( left ); 判斷使用者是否按下右鍵 Greenfoot.isKeyDown( right ); 在螃蟹的 act 中增加以下的程式碼 : if (Greenfoot.isKeyDown("left")) turn(5); if (Greenfoot.isKeyDown("right")) turn( 5); 7. 增加螃蟹可以吃的蟲 (1) 在 Animal 類別中, 按下滑鼠右鍵, 從選單中選取 新建子類別 (2) 輸入類別名稱 Worm ( 注意 : 類別名稱的命名慣例以大寫字母開始 ), 選取圖片 worm.png 後, 按下 ok 14

15 8. 如何讓螃蟹可以看見並且吃掉的蟲 (1) 以 Document 模式檢視 Animal 類別內容時, 將看到以下兩個方法 : 用於判斷是否遇見特定型態的物件 boolean cansee (java.lang.class clss) 用於吃掉指定型態的物件 void eat (java.lang.class clss) (2) 將以下程式碼加到 Crab 類別 act 方法中 : if ( cansee(worm.class)) eat (Worm. class) ; (3) 試著放幾隻蟲蟲及螃蟹到 World 中, 並觀螃蟹遇蟲蟲時, 是否會吃掉蟲蟲? 9. 增加會吃螃蟹的龍蝦 為了讓遊戲更有趣, 所以增加會吃螃蟹的龍蝦到專案中, 我們希望龍蝦追逐螃蟹, 而螃蟹追逐蟲蟲, 試著將螃蟹的行為複製給龍蝦 當螃蟹被龍蝦抓到時, 結束遊戲 Greenfoot.stop(); 15

16 10. 加入音效, 增加遊戲的趣味性 當龍蝦吃掉螃蟹, 或螃蟹吃掉蟲蟲時, 播放適放的聲音 (1) 從 Greenfoot 類別中, 找到與聲音播放有關的方法 static void playsound(java.lang.string soundfile) (2) 在專案 sounds 資料夾中, 找到兩個有關的聲音檔 au.wav 及 slurp.wav (3) 找到龍蝦吃掉螃蟹那一段程式, 增加音效 Greenfoot.playSound( slurp.wav ); (4) 找到螃蟹吃掉蟲蟲那一段程式, 增加音效 Greenfoot.playSound( wu.wav ); Review 1: 1. Greenfoot 操作環境 2. 物件的基本概念 : 類別 實體 繼承 3. 物件的方法 : 傳回值 參數 4. 程式的執行 5. 程式碼編輯 6. 查看類別的方法 7. 條件式 8. 單向選擇結構 9. 取得亂數 10. 新建類別 11. 自訂方法 12. 取得鍵盤的按鍵 13. 加入音效 16

17 Hour 4: More Code 程式基本結構 Java 是物件導向程式設計的語言, 它是以類別 (class) 為基本單位所組成的, 在類別中再定義物件的方法及屬性 Greenfoot 使用 Java 語言, 它的程式碼基本結構如下 : 第 1 行 import greenfoot.*; 在每個類別中, 均需要此行敘述來匯入 greenfoot 套件庫 在此行 // 後方的灰色文字為單行註解 第 3~8 行 /*.. */ 程式註解, 通常會說明此類別及註明程式碼作者與版本 所謂註解是指該部分只是說明給人看的, 並不會影響程式的編譯結果 當編譯程式在編譯的過程中, 如果遇到這個符號會自動忽視符號後面的文字, 也就是不會執行後面的文字 通常我們會在每程式的最前加一些關於此程式的相關資訊, 以便日後程式維護與修改時, 便於了解而容易上手 17

18 第 9 行 public class Leaf extends Actor 定義 Leaf 類別做為 Actor 的子類別 public 是公開的意思 class 是類別的意思,extends 是延展的意思 這三個字具有特殊意義與用途, 被稱為 保留字 在撰寫程式時, 保留字是不能隨便亂用的, 這些具有特殊意義的字符在程式中所擺放的位置及順序是固定的 而字與字之間要以空白字元隔開 類別名稱的命名規則 ( 此為慣例, 無強制性 ) 如下 : 1. 類別名稱的第一個字母應為大寫 2. 名稱若由兩個以上單字組合, 則每個單字第一個字母都應大寫 3. 若類別名稱為英文縮寫時, 則全部字母應都為大寫 第 10, 16 行. 在 區塊定義了 class 的內容, 注意大括號是會成對出現的 第 11 行 public void act() public 意思是公開的, 是指宣告此方法可被任何類別使用 void 意思是無傳回值 act 是此方法的名稱 () 為傳入的參數, 在此例中不需傳入參數 第 12, 14 行. 在 區塊定義了 act 方法的內容, 注意大括號是會成對出現的 第 13 行 //here you can create the behaviour of your object // 代表此行為註解文字 變數 變數 (variable) 是什麼? 從字面上解釋, 變數就是 可變的數, 也就是其值 可以隨著程式的執行過程而改變 假如用更精確的說法來解釋, 程式設計上的變 數, 代表的就是一個擁有名稱的記憶體儲存空間 18

19 在使用變數前, 要宣告它的存在才能使用, 在宣告時就要告訴電腦這個變數 的的名稱與資料型態, 電腦才能配置適當的記憶體空間來儲存這個變數的值, 常 見的 Java 基本資料型態, 如下表 boolean 布林值, 其值僅有 true( 真 ) 與 false( 假 ) 兩種變化 int 整數 (integer), 使用 4 個 Bytes, 範圍 ~ float 浮點數, 使用 4 個 Bytes, 範圍 e+38 ~ e 45 char 字元, 使用 2 個 Bytes 變數宣告的語法如下 : 資料型態變數名稱 ; 如果兩個變數都屬於相同的資料型態, 則宣告的語法如下 : 資料型態變數名稱, 變數名稱 ; 例如 : 我們宣告兩個整數變數來記錄蟲的 x,y 座標位置 int newx, newy; 變數經過我們上述的宣告後, 就可以指定值給它, 讓變數儲存我們所指定的內容 指定變數值的語法是 : 變數名稱 = 資料值 ; 此處 = 的意思是 指定為, 整句話的意思是 把右邊的資料值指定給左邊的變數 當新的資料值指定給變數後, 該變數原先儲存的資料就會消失 為了讓我們更容易閱讀程式, 通常我們會根據變數所代表的意義, 取一個有意義的名稱, 而且必須符合 Java 命名規定 : 1. 使用英文字母 阿拉伯數字 底線等符號來做為識別字 2. 識別字沒有長度的限制 3. 識別字名稱不能用阿拉伯數字做為開頭 4. 英文字母的大小寫是有所區別的 在變數的命名, 通常我們會採用小駝峰式命名法, 即第一個單字以小寫字母 19

20 開始 ; 第二個單字的首字母大寫, 例如 :firstname lastname 駝峰式 命名 規則可視為一種慣例, 並無絕對與強制, 為的是增加識別和可讀性 取得亂數 從功能表 幫助 /Greenfoot 類別說明文件 可檢閱 Greenfoot 類別的內容 其中, 我們可以找到取亂數的方法 :Greenfoot.getRandomNumber(n), 這個方法呼叫將傳回 0 n 1 間的整數 在沙灘螃蟹的案例中, 若要新增一隻蟲在隨機的位置上 : int newx, newy; newx = Greenfoot.getRandomNumber(560); newy = Greenfoot.getRandomNumber(560); addobject(new Worm(), newx, newy); 計次式迴圈 計次式迴圈的語法如下 : for ( 起始運算式 ; 測試條件式 ; 遞增運算式 ) 程式敘述 ; 在起始運算式中, 設定迴圈變數的起始值, 起始運算式僅在進入迴圈時執行 測試條件式是用來判斷迴圈是否繼續執行的限制情況, 當條件式為 true 時, 則進入迴圈執行程式敘述, 當條件式為 false 時, 則跳出迴圈 而遞增運算式則是每次執行完程式敘述後, 利用此運算式更改迴圈變數的值 例如 : 我們要在起始場景新增 5 隻蟲, 我們不用重複地寫同樣的指令, 如下 : addobject(new Worm(), 100, 100); 20

21 addobject(new Worm (), 100, 200); addobject(new Worm (), 100, 300); addobject(new Worm (), 100, 400); addobject(new Worm (), 100, 500); 利用計次式重複結構, 我們只需要寫一行程式敘述即可, 如下 : for (int i=1; i<=5; i++) addobject(new Worm(), 100, 100*i); 在沙灘螃蟹的案例中, 若我們要產生 20 隻蟲在隨機的位置上 : int newx, newy; for (int i=0; i<20; i++) newx = Greenfoot.getRandomNumber(560); newy = Greenfoot.getRandomNumber(560); addobject(new Worm(), newx, newy); Hour 5: More Code 自訂方法 在沙灘螃蟹的案例中, 我們為螃蟹增加了不少的行為, 所以在 act() 方法中的程式碼愈來愈多, 這樣程式閱讀與維護起來都會變得不容易, 因此, 我們將使用自訂方法來改寫程式碼, 雖然程式的功能不變, 但是程式碼的架構變得更清楚了 import greenfoot.*; // (World, Actor, GreenfootImage, and Greenfoot) 21

22 /** * This class defines a crab. Crabs live on the beach. */ public class Crab extends Animal public void act() move(); turnatedge(); lookforworm(); checkkey(); // 讓螃蟹在邊緣時會轉彎 public void turnatedge() if (atworldedge()) turn(5); // 判斷是否遇到蟲, 若遇到就把它吃掉 public void lookforworm() if (cansee(worm.class)) eat(worm.class); // 使用方向鍵控制螃蟹的方向 public void checkkey() if (Greenfoot.isKeyDown("left")) turn( 5); if (Greenfoot.isKeyDown("right")) turn(5); 22

23 建構子 建構子 (constructor) 是類別以 new 運算子宣告物件時, 將自動呼叫執行的程式區塊, 主要用於執行物件的起始動作, 最常見的起始動作就是設定物件的屬性, 其語法如下 : 修飾詞類別名稱 ( 參數串列 ) 程式敘述 ; 修飾詞一般宣告為 public 從以上語法可看出建構子與方法定義的語法很像, 其差別是 : 1. 建構子名稱即為所屬的類別名稱 2. 建構子不需要使用 return 敘述傳回值 3. 呼叫建構子後, 將傳回完成號立之物件的參考, 故定義時, 不需要加上傳回的資料型別 一個類別可以有好幾個傳入不同參數的建構子, 以便宣告物件時, 依照傳入參數呼叫對應的建構子 若建構子沒有參數串列, 稱為預設建構子, 因為建立類別時, 若我們沒有定義建構子的話,java 預設會建立這種不需要傳入任何參數的建構子 螃蟹動畫 在沙灘螃蟹的案例中, 我們想製作螃蟹走路的動畫, 其技巧是重複地切換二張不同的圖片 我們先定義兩個圖像變數, 在建構子中設定變數指向二張不同的圖片, 然後的 act() 方法中不斷地切換圖片 public class Crab extends Animal private GreenfootImage image1, image2; 23

24 public Crab() image1 = new GreenfootImage("crab.png"); image2 = new GreenfootImage("crab2.png"); setimage(image1); public void act() if (getimage()==image1) setimage(image2); else setimage(image1); move(); turnatedge(); lookforworm(); checkkey(); // 以下程式碼省略 雙向選擇結構 if ( 條件式 ) 程式敘述 1; else 程式敘述 2; 程式會根據條件式的傳回值, 選擇執行程式敘述 1 或程式敘述 2 如果條件式傳回 true 時, 程式會執行程式敘述 1, 否則 (else), 則程式會執行程式敘述 2 兩種情況只有其中一種會被執行 24

25 Hour 6: Piano Case 案例研究 : 鋼琴模擬 1. 開啟範例檔案 Piano 2. 觀察 Piano 類別的程式碼內容 3. 觀察 Key 類別的程式碼內容 4. 按下 G 鍵時, 切換琴鍵的圖片並播放聲音 public void act() if (Greenfoot.isKeyDown("g")) setimage("white key down.png"); 25

26 Greenfoot.playSound("3g.wav"); else setimage("white key.png"); 5. 請指上述程式碼的缺點, 並修改之 當按下 G 鍵不放時, 會一直播放聲音 改進方法 : 使用 isdown 變數來標記 private boolean isdown; public void act() if (!isdown && Greenfoot.isKeyDown("g")) setimage("white key down.png"); Greenfoot.playSound("3g.wav"); isdown = true; if ( isdown &&!Greenfoot.isKeyDown("g")) setimage("white key.png"); isdown = false; 為了解決當放開 g 鍵時,setImage 和 playsound 只執行一次, 而非反覆 執行, 在 Key class 中定義一個資料成員 isdown, 用於記錄琴鍵目前是 否處於被按下的狀態 : 被按下時是 true 放開時是 false 我們必需判斷以下兩個情況 (1) 琴鍵處於正常狀態而使用者按下 g 鍵 : 使用者剛按下 g 鍵 26

27 (2) 琴鍵處於按下狀態而使用者未按 g 鍵 : 使用者剛釋放 g 鍵 6. 產生多個琴鍵, 並指定到不同的音效 (1) 目前這個專案的問題 : 按下鍵盤上的 g 後, 所有的琴鍵都做出相同的回應 問題的原因 : 程式中將對應的鍵盤按鍵及所要播放的聲音檔寫死 (2) 抽象化 (Abstraction) 的程式設計概念 : 程式不只是用於解決特定問題, 而是要能夠解決一般性的問題 例如 : 我們不能設計一個僅能找 1764 的平方根程式, 而應設計可找任意數平方根的程式 同樣地, 我們不能設計一個只能 play a sound 的程式, 而應設計一個可以 play 各個音階的程式 (3) 在抽象化這種設計概念之下, 不同的 Key 物件需對應不同的鍵盤按鍵 ; 同時, 不同的 Key 物件被按下時, 要能播放對應音階 程式作法 : 在 Key 類別中定義兩個資料成員, 分別用於記錄 Key 物件所要回應的鍵盤按鍵, 以及被按下時所要播放的聲音檔 型態 :String 名稱 :key 及 sound 在 Key 類別中定義兩個資料成員 private String key; private String sound; 修改建構子, 使得建立物件時, 可以設定兩個資料成員的初值 public Key(String keyname, String soundfile) key = keyname; sound = soundfile 建構子接受兩個參數, 即建立物件時, 需傳遞兩個參數給建構子, 建構 27

28 子中利用這兩個參數來設定物件的初始狀態 (4) 在場景中自動新增 3 個琴鍵 addojbect(new Key( g, 2a.wav, 300,180); addojbect(new Key( h, 2b.wav, 450,180); addojbect(new Key( j, 2c.wav, 600,180); (5) 修改 Key 類別的 act 方法 public void act() if (!isdown && Greenfoot.isKeyDown(key)) setimage("white key down.png"); Greenfoot.playSound(sound); isdown = true; if ( isdown &&!Greenfoot.isKeyDown(key)) setimage("white key.png"); isdown = false; 7. 自動建立多個白色琴鍵 (1) 為讓所有白鍵在同一個高度, 所有琴鍵的 y 座標均為 180, 而 x 座標則加上琴鍵的寛度 63 (2) 在 Piano 類別的建構子中撰寫程式碼 int i = 0; while (i < 12) addobject(new Key("g","2a.wav"), 54+i*63, 180); i = i + 1; (3) 上述程式碼每個都對應到 g 按鍵及 2a.wav 為了讓不同的琴鍵有不同的按鍵對應及音效, 我們將使用陣列來記錄這些對應關係 28

29 private String[] whitekeys = "a","s","d","f","g","h","j","k","l",";","'","/" pravate String[] whitenotes = "3c","3d","3e","3f","3g","3a","3b","4c","4d","4e","4f","4g" 修改 Piano 建構子的程式碼 int i = 0; while (i < 12) Key key = new Key(whiteKey[i], whitenotes[i]+.wav ); addobject(key, 54+i*63, 180); i = i + 1; 8. 自動建立多個黑色琴鍵 (1) 修改琴鍵的建構子, 讓它可以傳入琴鍵的圖片 private String upimage; private String downimage; public Key(String keyname, String soundfile, String img1, String img2). upimage = img1; downimage = img2; setimage(upimage);. (2) 為讓所有黑鍵在同一個高度, 所有琴鍵的 y 座標均為 140, 而 x 座標則加上琴鍵的寛度 63 (3) 為了讓不同的琴鍵有不同的按鍵對應及音效, 我們將使用陣列來記錄這些對應關係 private String[] blackkeys = "W", "E", "", "T", "Y", "U", "", "O", "P", "", "]" ; private String[] blacknotes = "3c#", "3d#", "", "3f#", "3g#", "3a#", "", "4c#", "4d#", "", "4f#" ; (4) 在 Piano 類別的建構子中撰寫程式碼 // make the white keys 29

30 for(int i = 0; i < whitekeys.length; i++) Key key = new Key(whiteKeys[i], whitenotes[i]+".wav", "white key.png", "white key down.png"); addobject(key, 54 + (i*63), 140); // make the black keys for(int i = 0; i < blackkeys.length 1; i++) if(! blackkeys[i].equals("") ) Key key = new Key(blackKeys[i], blacknotes[i]+".wav", "black key.png", "black key down.png"); addobject(key, 85 + (i*63), 86); 9. 顯示文字 import java.awt.color; public void showmessage() GreenfootImage bg = getbackground(); bg.setcolor(color.white); bg.drawstring(" 在這裡填入你要顯示的文字 ", 25, 320); 觀念回顧 1. 變數 2. 重複結構 3. 自訂方法 4. 建構子 5. 陣列 6. 顯示文字 30

31 Hour 7 8: Brick Case 打磚塊 打磚塊 新增演員 Ball 類別, 設定圖像 ball.png 新增演員 Brick 類別, 設定圖像 brick.png 新增演員 Paddle 類別, 設定圖像 paddle.png 新增場景 BrickWorld 類別, 設定圖像 space1.jpg 建立微世界及物件 修改 BrickWorld 程式碼 : import greenfoot.*; public class BrickWorld extends World public static int SIZEX = 400; public static int SIZEY = 300; public BrickWorld() 31

32 super(sizex, SIZEY, 1); addobject(new Ball(), 200, 150); addobject(new Paddle(), 200, 280); for (int i=0; i< 8; i++) for (int j=0; j< 4; j++) addobject(new Brick(), 50+i*40, 20+j*30); 讓球會移動, 遇到邊緣會反彈 修改 Ball 程式碼 : import greenfoot.*; public class Ball extends Actor private int motionx=2; private int motiony=2; public void act() int newx; int newy; newx = getx() + motionx; newy = gety() + motiony; if (newx > BrickWorld.SIZEX) motionx = 2; else if (newx < 0) motionx = 2; if (newy > BrickWorld.SIZEY) 32

33 motiony = 2; else if (newy < 0) motiony = 2; setlocation(newx, newy); 讓球碰到磚塊會打掉磚塊 新增 Ball 程式碼 act() Actor brick = getoneintersectingobject(brick.class); if (brick!= null) motiony = motiony; getworld().removeobject(brick); 讓板子能跟著滑鼠左右移動修改 Paddle 程式碼 : import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) public class Paddle extends Actor public void act() MouseInfo mouse = Greenfoot.getMouseInfo(); if (mouse!= null) setlocation(mouse.getx(), gety()); 若球遇到下方邊緣, 則遊戲結束 修改 Ball 程式碼 : 33

34 if (newy > BrickWorld.SIZEY) Greenfoot.stop(); else if (newy < 0) motiony = 2; 若打完所有磚塊, 則遊戲結束 修改 Ball 程式碼 : private int brickhit=0; Actor brick = getoneintersectingobject(brick.class); if (brick!= null) motiony = motiony; brickhit++; getworld().removeobject(brick); if (brickhit==32) Greenfoot.stop(); Hour 9: Frog Case 青蛙跳 34

35 新建場景類別 JumpingWorld 新建演員類別 Log 新建演員類別 Frog 編輯 JumpingWorld 類別 importgreenfoot.*; public class JumpingWorld extends World public JumpingWorld() super(300, 300, 1); addobject(new Log(), 163, 260); addobject(new Frog(), 160, 222); 編輯 Frog 類別新增資料成員 private GreenfootImage sitting = new GreenfootImage("frog sitting.png"); private GreenfootImage jumping = new GreenfootImage("frog jumping.png"); private int verticalspeed; 新增方法 public boolean onlog() return (getoneintersectingobject(log.class)!= null); 編輯 act 方法 public void act() 35

36 if (onlog()) setimage(sitting); if (Greenfoot.isKeyDown( space")) verticalspeed = 30; setlocation(getx(), gety() + verticalspeed); else setimage(jumping); verticalspeed = verticalspeed + 3; setlocation(getx(), gety() + verticalspeed); Review 3: 1. 碰撞測試 2. 滑鼠事件 36

37 Hour 10 12: Poke Case 撲克牌發牌 準備 1 張撲克牌的底圖 :blue.png 準備 52 張撲克牌的圖片 :1.png~52.png 新建場景類別 Table, 設定圖像 corkboard.jpg 新建演員類別 Card 新建演員類別 Deck, 設置圖像 blue.png 編輯 Table 的程式碼 importgreenfoot.*; public class Table extends World private Deck deck; public Table() super(600, 400, 1); deck = new Deck(); addobject(deck, 100, 100); 37

38 public void act() if (Greenfoot.mouseClicked(deck)) Card card = new Card(); card.setimage((1+greenfoot.getrandomnumber(52))+".png"); int x = Greenfoot.getRandomNumber(getWidth()); int y = Greenfoot.getRandomNumber(getHeight()) addobject(card, x, y); 滑鼠事件 Greenfoot.mouseClicked() 方法簽名 : public static boolean mouseclicked(java.lang.object obj) 方法說明 : 如果滑鼠在某物件上按完左鍵 ( 按下並放開 ), 則傳回 true 參數 : obj Typically one of Actor, World or null 傳回值 True / False 更多滑鼠事件請參閱 Greennfoot 類別說明文件 : 1. static boolean mousedragended(java.lang.object obj) True if a mouse drag has ended. 2. static boolean mousedragged(java.lang.object obj) True if the mouse has been dragged on the given object. 3. static boolean mousemoved(java.lang.object obj) 38

39 True if the mouse has been moved on the given object. 4. static boolean mousepressed(java.lang.object obj) True if the mouse has been pressed (changed from a non pressed state to being pressed) on the given object. 5. static MouseInfo getmouseinfo() Return a mouse info object with information about the state of the mouse. 問題改進 在上例中, 我們使用亂數來取卡片, 這樣做會有重複發同一張牌的可能性 所以接下來我們要用陣列串列 (ArrayList) 來儲存 52 張牌 增加 Card 類別的程式碼 private int value; public Card(int value) this.value = value; publicint getvalue() return value; 增加 Deck 類別的程式碼 importjava.util.arraylist; privatearraylist<card> cards; public Deck() cards = new ArrayList<Card>(); for (int i=0; i< 52; i++) 39

40 cards.add(new Card(i+1)); public Card getcard() if(getsize()==0) return null; Card card = cards.get(0); cards.remove(card); return card; publicintgetsize() returncards.size(); 修改 Table 類別的程式碼 public void act() if (Greenfoot.mouseClicked(deck) &&deck.getsize()>0) Card card = deck.getcard(); card.setimage(card.getvalue()+".png"); nt x = Greenfoot.getRandomNumber(getWidth()); int y = Greenfoot.getRandomNumber(getHeight()) addobject(card, x, y); ArrayList ArrayList 是 JAVA 當中的一個類別, 與 Array 差在於因為他是一個寫好的類別, 有很多可以直接用的程式, 所以很方便 使用方法 : 1. 建構 ArrayList<String> mylist = new ArrayList<String>(); // 指定是 String 的型態 40

41 ArrayList mylist = new ArrayList(); // 也可以不指定 2. 加入元素 String s = new String(); mylist.add(s); 3. 查詢 list 大小 int thesize = mylist.size(); 4. 查詢特定元素 boolean isin = mylist.contains(s); // 若用上面的例子因為有 s 字串所以回傳 true 5. 查詢特定元素位置 int idx = mylist.indexof(s); // 會回傳 0 表第 0 個位置 6. 判斷 List 是否為空 boolean empty = mylist.isempty(); // 因為有一個元素會回傳 false 7. 刪除特定元素 mylist.remove(s); 問題改進 在上例中, 我們會依序發出 52 張牌, 但實務上, 我們在發牌前會先做洗牌的動 作, 我們可以匯入 Collections 套件, 來做打亂陣列串列內容的動作 在 Deck 類別中增加程式碼 : Import java.util.collections; 在 Deck 的建構子中增加程式碼 : Collections.shuffle(cards); 41

42 問題改進 我們使用數字 1~52 來表示 52 張牌, 雖然可識別出不同的牌, 可是我們從數字無 法得知該張牌的花色及點數, 接下來, 我們要改用列舉 (enumeration) 的方式, 來 儲存不同的牌面資訊, 並對應到相對的圖檔 複製 cards 圖片到專案 images 資料夾中 在 Card 類別中新增程式碼 : /** The suits a card can belong to */ public enum Suit CLUBS, HEARTS, SPADES, DIAMONDS; /** The numbers a card can take */ public enum Value ACE, TWO, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT, NINE, TEN, JACK, QUEEN, KING; private Suit suit; private Value value; 修改程式碼 : public Card(Value value, Suit suit) this.value = value; this.suit = suit; draw(); protected void draw() String filename = "images/cards/"; filename += value; filename += suit; filename += ".png"; filename = filename.tolowercase(); setimage(new GreenfootImage(fileName)); 42

43 在 Deck 類別中修改程式碼 : public Deck() cards = new ArrayList<Card>(); for(card.suit suit : Card.Suit.values()) for(card.value value : Card.Value.values()) cards.add(new Card(value, suit)); Collections.shuffle(cards); 最後, 當我們發完所有的 52 張牌後, 就把發牌的物件刪除, 讓使用者不能再發 牌 在 Deck 類別中修改程式碼 : public Card getcard() if(getsize()==0) return null; Card card = cards.get(0); cards.remove(card); if(getsize()==0) getworld().removeobject(this); return card; 列舉 列舉 (Enum) 可以賦予常數值可讀意義的簡便方法, 基於 Java 語言的特性, Enum 應用在方法的參數傳遞與回傳值上, 具有提高表達能力以及強制內容檢查 的兩種好處 43

44 Review 4: 1. 滑鼠事件 2. ArrayList 套件 3. Collections 套件 4. 列舉 Exercise: 點燈 ( 基本版 ) 本案例由華江高中吳秉鋒主任提供 遊戲方法 : 點亮或關掉一盞燈會影響上下左右及自己五盞燈, 請點亮所有的燈 解題提示 : 取得上下左右的所有燈 44

45 getobjectsinrange(1, Light.class); 解題實作 : 新增演員 Screen Light 類別新增場景 Table 類別 Table 類別的程式碼 import greenfoot.*; import java.util.arraylist; public class Table extends World public ArrayList<Light> lights = new ArrayList<Light>(); public int level = 1; public static int bulb[][]= 1, 1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1; public Table() super(4, 5, 60); for (int i=0; i<4; i++) for (int j=0; j<4; j++) Light light = new Light(bulb[j][i]); addobject(light, i, j); lights.add(light); public void act() int sum = 0; for (Light light: lights) sum += light.status; if (sum == 16) 45

46 addobject(new Screen(), 1, 1); Light 類別的程式碼 import greenfoot.*; import java.util.list; public class Light extends Actor public int status; public Light(int status) this.status = status; public void act() if (Greenfoot.mouseClicked(this)) status *= 1; List<Light> lights = getobjectsinrange(1, Light.class); for (Light light : lights) light.status *= 1; if (status==1) setimage("light_on.png"); else if (status == 1) setimage("light_off.png"); 46

47 Exercise: 點燈 ( 闖關版 ) 本案例由華江高中吳秉鋒主任提供 遊戲方法 : 點亮或關掉一盞燈會影響上下左右及自己五盞燈, 請點亮所有的燈 遊戲總共有五關解題實作 : 新增演員 Screen Level Light 類別新增場景 Table 類別 Table 類別的程式碼 import greenfoot.*; import java.util.arraylist; public class Table extends World 47

48 public ArrayList<Light> lights = new ArrayList<Light>(); public int level = 0; public int levels = 5; // 總關數 public static int bulb[][][]= 1, 1,1,1, // level 1 1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1, // level 2 1,1, 1,1, 1, 1, 1,1, 1,1,1, 1, 1,1, 1,1, // level 3 1,1, 1, 1, 1, 1,1,1, 1, 1,1,1, 1, 1, 1,1, // level 4 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,1, ; 1, 1, 1, 1, // level 5 1, 1,1,1, 1,1, 1,1, 1, 1, 1,1 public Level leveltext= new Level(); public boolean playing=true; /** * Constructor for objects of class Table. * */ 48

49 public Table() // Create a new world with 600x400 cells with a cell size of 1x1 pixels. super(4, 5, 60); Screen screen = new Screen(); addobject(screen, 1, 1); screen.setimage("blankstart.gif"); Greenfoot.start(); public void act() int sum = 0; for (Light light: lights) sum += light.status; if (playing) if (sum == 16) addobject(new Screen(), 1, 1); for (Light light: lights) removeobject(light); removeobject(leveltext); lights.clear(); playing = false; GreenfootImage levelimage = leveltext.getimage(); levelimage.clear(); levelimage.scale(100, 30); levelimage.drawstring(" 第 "+level+" 關 ", 10, 10); public void nextlevel() if (level==levels) Screen screen = new Screen(); addobject(screen, 1, 1); 49

50 screen.setimage("blankend.gif"); Greenfoot.stop(); else addobject(leveltext, 2, 5); level++; for (int i=0; i<4; i++) for (int j=0; j<4; j++) Light light = new Light(bulb[level 1][j][i]); addobject(light, i, j); lights.add(light); playing = true; Light 類別的程式碼 import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) import java.util.list; public class Light extends Actor public int status; public Light(int status) this.status = status; public void act() // Add your action code here. if (Greenfoot.mouseClicked(this)) status *= 1; List<Light> lights = getobjectsinrange(1, Light.class); for (Light light : lights) light.status *= 1; 50

51 if (status==1) setimage("light_on.png"); else if (status == 1) setimage("light_off.png"); Screen 類別程式碼 import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) /** * Write a description of class Screen here. * (your name) (a version number or a date) */ public class Screen extends Actor public void act() // Add your action code here. if (Greenfoot.mouseClicked(this) ) Table table = (Table) getworld(); table.removeobject(this); table.nextlevel(); 51

任務二 : 產生 20 個有炸彈的磚塊, 放在隨機的位置編輯 Block 類別的程式碼 import greenfoot.; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) Write a description of class

任務二 : 產生 20 個有炸彈的磚塊, 放在隨機的位置編輯 Block 類別的程式碼 import greenfoot.; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) Write a description of class 踩地雷遊戲 高慧君南港高中 開啟專案 MineSweep 任務一 : 產生 30X20 個磚塊編輯 Table 類別的程式碼 import greenfoot.; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) import java.util.arraylist; Write a description of class MyWorld

More information

Microsoft Word - Greenfoot-高慧君老師

Microsoft Word - Greenfoot-高慧君老師 壹 課程說明 單元名稱 互動遊戲設計 : 使用 Greenfoot Greenfoot 提供給想學習 Java 語言的學生一個很好的入門環境, 它是針對那些想撰寫遊戲的人所設計的一個功能完整的開發環境, 特別適合 14 歲以上的人單元摘要學習 本單元以 Greenfoot 軟體來實作 Java 程式語言的概念, 其內容涵蓋 : 物件導向程式語言基本概念及互動遊戲創作 設計者高慧君教師 ( 台北市立南港高中

More information

int x = Greenfoot.getRandomNumber(getWidth()); int y = Greenfoot.getRandomNumber(getHeight()); addobject(card, x, y); 程式碼說明 : 滑鼠事件 Greenfoot.mouseClic

int x = Greenfoot.getRandomNumber(getWidth()); int y = Greenfoot.getRandomNumber(getHeight()); addobject(card, x, y); 程式碼說明 : 滑鼠事件 Greenfoot.mouseClic 撲克牌遊戲 簡易接龍 高慧君南港高中 準備一張牌桌的圖片 :porkboard.jpg 準備一張撲克牌的底圖 :blueflip.png 準備一張空的撲克牌 :empty.png 準備 13 張撲克牌的圖片 :1.png~13.png 開啟專案 Poke01 新建場景類別 Table, 設置圖像 porkboard.jpg 新建演員類別 Card 新建演員類別 Deck, 設置圖像 blueflip.png

More information

主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new

主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new ListView 自訂排版 主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new int[]{r.drawable.dog1, R.drawable.dog2,

More information

Microsoft PowerPoint - 13_ClassAndObj.ppt

Microsoft PowerPoint - 13_ClassAndObj.ppt Visual Basic 2005 (VB.net 2.0) 程式設計 講師 : 戴志華 hana@arbor.ee.ntu.edu.tw 國立台灣大學電機工程研究所 第十三章 物件與類別 物件與類別 物件導向程式設計 物件與類別的建立 物件與類別 物件 (object) Ex. 人 屬性 (property) 身高 體重 血型 方法 (method) 走路 跑步 訊息 (message) 交談 事件

More information

單步除錯 (1/10) 打開 Android Studio, 點選 Start a new Android Studio project 建立專案 Application name 輸入 BMI 點下 Next 2 P a g e

單步除錯 (1/10) 打開 Android Studio, 點選 Start a new Android Studio project 建立專案 Application name 輸入 BMI 點下 Next 2 P a g e Android Studio Debugging 本篇教學除了最基本的中斷點教學之外, 還有條件式中斷的教學 條件式中斷是進階的除錯技巧, 在某些特定情況中, 我們有一個函數可能會被呼叫數次, 但是我們只希望在某種條件成立時才進行中斷, 進而觀察變數的狀態 而條件式中斷這項技巧正是符合這項需求 本教學分兩部分 單步除錯 (Page2~11, 共 10) 條件式中斷點 (Page12~17, 共 6)

More information

untitled

untitled 1 Outline 料 類 說 Tang, Shih-Hsuan 2006/07/26 ~ 2006/09/02 六 PM 7:00 ~ 9:30 聯 ives.net@gmail.com www.csie.ntu.edu.tw/~r93057/aspnet134 度 C# 力 度 C# Web SQL 料 DataGrid DataList 參 ASP.NET 1.0 C# 例 ASP.NET 立

More information

Microsoft Word - JAVA Programming Language Homework I ans

Microsoft Word - JAVA Programming Language Homework I ans JAVA Programming Language Homework I - OO concept Student ID: Name: 1. Which of the following techniques can be used to prevent the instantiation of a class by any code outside of the class? A. Declare

More information

雲端 Cloud Computing 技術指南 運算 應用 平台與架構 10/04/15 11:55:46 INFO 10/04/15 11:55:53 INFO 10/04/15 11:55:56 INFO 10/04/15 11:56:05 INFO 10/04/15 11:56:07 INFO

雲端 Cloud Computing 技術指南 運算 應用 平台與架構 10/04/15 11:55:46 INFO 10/04/15 11:55:53 INFO 10/04/15 11:55:56 INFO 10/04/15 11:56:05 INFO 10/04/15 11:56:07 INFO CHAPTER 使用 Hadoop 打造自己的雲 8 8.3 測試 Hadoop 雲端系統 4 Nodes Hadoop Map Reduce Hadoop WordCount 4 Nodes Hadoop Map/Reduce $HADOOP_HOME /home/ hadoop/hadoop-0.20.2 wordcount echo $ mkdir wordcount $ cd wordcount

More information

1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10

1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10 Java V1.0.1 2007 4 10 1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10 6.2.10 6.3..10 6.4 11 7.12 7.1

More information

Microsoft Word - Book9

Microsoft Word - Book9 葬 書 ( 下 ) 佈 陣 十 方 成 立 指 揮 中 心 層 巒 疊 障 千 山 翠 微, 紓 回 連 綿 的 重 山 復 重 山, 侍 朝 衛 迎, 前 後 有 序, 巋 巘 隱 逸 著 一 片 風 水 寶 地, 牛 臥 馬 馳, 鸞 飛 鳳 舞, 滕 蛇 委 蛇, 縈 藟 纏 繞 在 葺 襲 的 斷 續 峰 巒 之 間! 離 正 午 十 二 時 整 還 有 半 個 鐘 頭, 接 近 天 頂 的

More information

untitled

untitled 1 Outline 數 料 數 數 列 亂數 練 數 數 數 來 數 數 來 數 料 利 料 來 數 A-Z a-z _ () 不 數 0-9 數 不 數 SCHOOL School school 數 讀 school_name schoolname 易 不 C# my name 7_eleven B&Q new C# (1) public protected private params override

More information

Python a p p l e b e a r c Fruit Animal a p p l e b e a r c 2-2

Python a p p l e b e a r c Fruit Animal a p p l e b e a r c 2-2 Chapter 02 變數與運算式 2.1 2.1.1 2.1.2 2.1.3 2.1.4 2.2 2.2.1 2.2.2 2.2.3 type 2.2.4 2.3 2.3.1 print 2.3.2 input 2.4 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 + 2.4.6 Python Python 2.1 2.1.1 a p p l e b e a r c 65438790

More information

Microsoft PowerPoint - L17_Inheritance_v4.pptx

Microsoft PowerPoint - L17_Inheritance_v4.pptx C++ Programming Lecture 17 Wei Liu ( 刘 威 ) Dept. of Electronics and Information Eng. Huazhong University of Science and Technology May. 2015 Lecture 17 Chapter 20. Object-Oriented Programming: Inheritance

More information

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc References (Section 5.2) Hsuan-Tien Lin Deptartment of CSIE, NTU OOP Class, March 15-16, 2010 H.-T. Lin (NTU CSIE) References OOP 03/15-16/2010 0 / 22 Fun Time (1) What happens in memory? 1 i n t i ; 2

More information

Lesson 1: Poke Case 撲 克 牌 發 牌 準 備 1 張 撲 克 牌 的 底 圖 :blue.png 準 備 13 張 撲 克 牌 的 圖 片 :1.png~13.png 新 建 場 景 類 別 Table, 設 定 圖 像 corkboard.jpg 新 建 演 員 類 別 Ca

Lesson 1: Poke Case 撲 克 牌 發 牌 準 備 1 張 撲 克 牌 的 底 圖 :blue.png 準 備 13 張 撲 克 牌 的 圖 片 :1.png~13.png 新 建 場 景 類 別 Table, 設 定 圖 像 corkboard.jpg 新 建 演 員 類 別 Ca Greenfoot 進 階 課 程 (8 小 時 ) 主 講 : 南 港 高 中 高 慧 君 老 師 時 間 :2014 年 6 月 16 日 地 點 : 金 門 高 中 主 辦 : 資 訊 學 科 中 心 Greenfoot 進 階 課 程 (8 小 時 )... 1 Lesson 1: Poke Case... 2 撲 克 牌 發 牌... 2 Lesson 2: Simple Solitare...

More information

投影片 1

投影片 1 資料庫管理程式 ( 補充教材 -Part2) 使用 ADO.NET 連結資料庫 ( 自行撰寫程式碼 以實現新增 刪除 修改等功能 ) Private Sub InsertButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles InsertButton.Click ' 宣告相關的 Connection

More information

untitled

untitled 1 Outline 流 ( ) 流 ( ) 流 ( ) 流 ( ) 流 ( ) 狀 流 ( ) 利 來 行流 if () 立 行 ; else 不 立 行 ; 例 sample2-a1 (1) 列 // 料 Console.Write(""); string name = Console.ReadLine(); Console.WriteLine(" " + name + "!!"); 例 sample2-a1

More information

用手機直接傳值不透過網頁連接, 來當作搖控器控制家電 ( 電視遙控器 ) 按下按鍵發送同時會回傳值來確定是否有送出 問題 :1. 應該是使用了太多 thread 導致在傳值上有問題 2. 一次按很多次按鈕沒辦法即時反應

用手機直接傳值不透過網頁連接, 來當作搖控器控制家電 ( 電視遙控器 ) 按下按鍵發送同時會回傳值來確定是否有送出 問題 :1. 應該是使用了太多 thread 導致在傳值上有問題 2. 一次按很多次按鈕沒辦法即時反應 專題進度 老師 : 趙啟時老師 學生 : 陳建廷 2013/10/13 用手機直接傳值不透過網頁連接, 來當作搖控器控制家電 ( 電視遙控器 ) 按下按鍵發送同時會回傳值來確定是否有送出 問題 :1. 應該是使用了太多 thread 導致在傳值上有問題 2. 一次按很多次按鈕沒辦法即時反應 程式碼 : package com.example.phone; import java.util.arraylist;

More information

Microsoft PowerPoint - EmbSys101_Java Basics.ppt [相容模式]

Microsoft PowerPoint - EmbSys101_Java Basics.ppt [相容模式] Java Basics Hi Hsiao-Lung Chan, Ph.D. Dept Electrical Engineering Chang Gung University, Taiwan chanhl@maili.cgu.edu.twcgu 執行環境 - eclipse 點選 eclipse 軟體執行檔 設定工作路徑 eclipse 開啟 2 建置 Java 專案 File New project

More information

Microsoft Word - ch04三校.doc

Microsoft Word - ch04三校.doc 4-1 4-1-1 (Object) (State) (Behavior) ( ) ( ) ( method) ( properties) ( functions) 4-2 4-1-2 (Message) ( ) ( ) ( ) A B A ( ) ( ) ( YourCar) ( changegear) ( lowergear) 4-1-3 (Class) (Blueprint) 4-3 changegear

More information

The golden pins of the PCI card can be oxidized after months or years

The golden pins of the PCI card can be oxidized after months or years Q. 如何在 LabWindows/CVI 編譯 DAQ Card 程式? A: 請參考至下列步驟 : 步驟 1: 安裝驅動程式 1. 安裝 UniDAQ 驅動程式 UniDAQ 驅動程式下載位置 : CD:\NAPDOS\PCI\UniDAQ\DLL\Driver\ ftp://ftp.icpdas.com/pub/cd/iocard/pci/napdos/pci/unidaq/dll/driver/

More information

0 0 = 1 0 = 0 1 = = 1 1 = 0 0 = 1

0 0 = 1 0 = 0 1 = = 1 1 = 0 0 = 1 0 0 = 1 0 = 0 1 = 0 1 1 = 1 1 = 0 0 = 1 : = {0, 1} : 3 (,, ) = + (,, ) = + + (, ) = + (,,, ) = ( + )( + ) + ( + )( + ) + = + = = + + = + = ( + ) + = + ( + ) () = () ( + ) = + + = ( + )( + ) + = = + 0

More information

第1章

第1章 第 8 章 函式 1 本章提要 8.1 前言 8.2 如何定義函式 8.3 函式的呼叫和返回 8.4 傳遞陣列 8.5 方法多載 8.6 遞迴 8.7 綜合練習 8.8 後記 2 8.1 前言 每一種高階程式語言都有提供函式 (Function)( 或稱函數 ) 的功能, 以便將經常使用到的程式功能包裝成函式的形式, 如此一來便能反覆地呼叫該函式來完成某件特定工作在高階程式語言中, 副程式 (Subroutine)

More information

AutoCAD 用戶如何使用 ArchiCAD

AutoCAD 用戶如何使用 ArchiCAD AutoCAD 用戶如何使用 ArchiCAD AutoCAD用戶如何使用ArchiCAD ( 中文版 ) 由 Scott MacKenzie, Simon Gilbert, Geoffrey Moore Langdon, David Byrnes, Ralph Grabowski 編寫 龍庭資訊有限公司 1/73 - 2. 3. 4. -

More information

1 Framework.NET Framework Microsoft Windows.NET Framework.NET Framework NOTE.NET NET Framework.NET Framework 2.0 ( 3 ).NET Framework 2.0.NET F

1 Framework.NET Framework Microsoft Windows.NET Framework.NET Framework NOTE.NET NET Framework.NET Framework 2.0 ( 3 ).NET Framework 2.0.NET F 1 Framework.NET Framework Microsoft Windows.NET Framework.NET Framework NOTE.NET 2.0 2.0.NET Framework.NET Framework 2.0 ( 3).NET Framework 2.0.NET Framework ( System ) o o o o o o Boxing UnBoxing() o

More information

EJB-Programming-3.PDF

EJB-Programming-3.PDF :, JBuilder EJB 2.x CMP EJB Relationships JBuilder EJB Test Client EJB EJB Seminar CMP Entity Beans Value Object Design Pattern J2EE Design Patterns Value Object Value Object Factory J2EE EJB Test Client

More information

Visual C# 2005程式設計

Visual C# 2005程式設計 Visual Basic 2005 程式設 計 第 5 章流程控制 5-1 認識流程控制 判斷結構 (decision structures) If...Then Else Select Case Try Catch Finally 迴圈結構 (loop structures) For...Next For Each...Next Do...Loop While End While 5-2 If Then

More information

星星排列 _for loop Protected Sub Page_Load(ByVal sender As Object, ByVal e As Dim h As Integer = 7 'h 為變數 ' Dim i, j As Integer For i = 1 To h

星星排列 _for loop Protected Sub Page_Load(ByVal sender As Object, ByVal e As Dim h As Integer = 7 'h 為變數 ' Dim i, j As Integer For i = 1 To h 資訊系統與實習 製作 : 林郁君 一 2009.09.28 9X9 'button 被按下後 ' Dim i, j As Integer For i = 1 To 9 'i 從 1 到 9' For j = 1 To 9 'j 從 1 到 9' If j * i < 10 Then ' 如果 j 乘上 i 是為個位數 ' Response.Write(i & "*" & j & " =" & i *

More information

Microsoft PowerPoint - P766Ch06.ppt

Microsoft PowerPoint - P766Ch06.ppt PHP5&MySQL 程式設計 第 6 章物件導向 6-1 認識物件導向 物件 (object) 或 案例 (instance) 屬性 (property) 欄位 (field) 或 成員變數 (member variable) 方法 (method) 或 成員函式 (member function) 事件 (event) 類別 (class) 物件導向程式設計 (OOP) 具有下列特點 : 封裝

More information

Microsoft PowerPoint - VB14.ppt

Microsoft PowerPoint - VB14.ppt VB 列表盒 LISTBOX 應用 資科系 林偉川 執行畫面 1 2 1 重要屬性 LISTBOX 物件 (VB6) 新增至 LISTBOX 物件中 ADDITEM 自 LISTBOX 物件中刪除選取物件 REMOVEITEM 自 LISTBOX 物件中取出選取物件 ListIndex 顯示 LISTBOX 物件中紀錄個數 Listcount 3 LISTBOX 物件 (VB.NET) 重要屬性 新增至

More information

Microsoft Word - 01.DOC

Microsoft Word - 01.DOC 第 1 章 JavaScript 简 介 JavaScript 是 NetScape 公 司 为 Navigator 浏 览 器 开 发 的, 是 写 在 HTML 文 件 中 的 一 种 脚 本 语 言, 能 实 现 网 页 内 容 的 交 互 显 示 当 用 户 在 客 户 端 显 示 该 网 页 时, 浏 览 器 就 会 执 行 JavaScript 程 序, 用 户 通 过 交 互 式 的

More information

THE GAME GUIDE WELCOME TO DARTSLIVE DARTSLIVE.com Ver.3.0 2013.05 HOW TO PLAY BEFORE YOU START THE GAME HOW TO PLAY THE GAME HOW TO COUNT THE SCORE AWARD MOVIE 自由設定AWARD! 讓飛鏢的樂趣多更多! AWARD MOVIE是甚麼? AWARD

More information

運算子多載 Operator Overloading

運算子多載 Operator Overloading 多型 Polymorphism 講師 : 洪安 1 多型 編譯時期多型 ( 靜態多型 ) function overloading 如何正確呼叫同名的函數? 利用參數個數與型態 operator overloading 其實同 function overloading 執行時期多型 ( 或動態多型 ) 如何正確呼叫不同物件的相同名稱的成員函數 利用繼承與多型 2 子類別與父類別物件間的指定 (assignment)

More information

无类继承.key

无类继承.key 无类继承 JavaScript 面向对象的根基 周爱 民 / aimingoo aiming@gmail.com https://aimingoo.github.io https://github.com/aimingoo rand = new Person("Rand McKinnon",... https://docs.oracle.com/cd/e19957-01/816-6408-10/object.htm#1193255

More information

46 2011 11 467 數位遊戲式學習系統 7 2011 11 467 47 3 DBGameSys 48 2011 11 467 正規化資料模組 如何配置並儲存電子化資料 以 便減少資料被重覆儲存的程序 DBGameSys的主要功能模組包 學習者 審核評分模組 含 正規化資料模組 審核評分 模組 高分列表模組3大區塊 系統資料庫 在正規化資料模組的執行 高分列表模組 過程中 先要求學習者瀏覽遊戲

More information

9, : Java 19., [4 ]. 3 Apla2Java Apla PAR,Apla2Java Apla Java.,Apla,,, 1. 1 Apla Apla A[J ] Get elem (set A) A J A B Intersection(set A,set B) A B A B

9, : Java 19., [4 ]. 3 Apla2Java Apla PAR,Apla2Java Apla Java.,Apla,,, 1. 1 Apla Apla A[J ] Get elem (set A) A J A B Intersection(set A,set B) A B A B 25 9 2008 9 M ICROEL ECTRON ICS & COMPU TER Vol. 25 No. 9 September 2008 J ava 1,2, 1,2, 1,2 (1, 330022 ; 2, 330022) :,. Apla - Java,,.. : PAR ;Apla - Java ; ;CMP ; : TP311 : A : 1000-7180 (2008) 09-0018

More information

輕鬆學 Dreamweaver CS5 網頁設計..\Example\Ch0\ \.html..\example\ch0\ \mouse.txt..\example\ch0\ \ _Ok.html 學習重點 JavaScript 複製程式碼 mouse.txt Ctrl+C Ctrl+C 0-4

輕鬆學 Dreamweaver CS5 網頁設計..\Example\Ch0\ \.html..\example\ch0\ \mouse.txt..\example\ch0\ \ _Ok.html 學習重點 JavaScript 複製程式碼 mouse.txt Ctrl+C Ctrl+C 0-4 JAVA Extension 0..\Example\Ch0\ \ T.html..\Example\Ch0\ \ T.txt T.txt..\Example\Ch0\ \ T_Ok.html 提示 :. Marquee Marquee Font Color #FFFFFF BG Color #867bf Width 90 Height 50. T.txt Ctrl+C your scrolling

More information

<4D6963726F736F667420506F776572506F696E74202D20332D322E432B2BC3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6A1AAD6D8D4D8A1A2BCCCB3D0A1A2B6E0CCACBACDBEDBBACF2E707074>

<4D6963726F736F667420506F776572506F696E74202D20332D322E432B2BC3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6A1AAD6D8D4D8A1A2BCCCB3D0A1A2B6E0CCACBACDBEDBBACF2E707074> 程 序 设 计 实 习 INFO130048 3-2.C++ 面 向 对 象 程 序 设 计 重 载 继 承 多 态 和 聚 合 复 旦 大 学 计 算 机 科 学 与 工 程 系 彭 鑫 pengxin@fudan.edu.cn 内 容 摘 要 方 法 重 载 类 的 继 承 对 象 引 用 和 拷 贝 构 造 函 数 虚 函 数 和 多 态 性 类 的 聚 集 复 旦 大 学 计 算 机 科 学

More information

Chapter 9: Objects and Classes

Chapter 9: Objects and Classes Fortran Algol Pascal Modula-2 BCPL C Simula SmallTalk C++ Ada Java C# C Fortran 5.1 message A B 5.2 1 class Vehicle subclass Car object mycar public class Vehicle extends Object{ public int WheelNum

More information

Microsoft PowerPoint - Chap03.ppt [相容模式]

Microsoft PowerPoint - Chap03.ppt [相容模式] 本章目的 2D / 3D 遊戲程式設計入門使用 XNA 3.0 與 C# 探討 XNA 遊戲程式內部的基本架構與遊戲開發流程 示範如何完成一個簡單的 XNA 遊戲方案 第三章 XNA 遊戲程式基本架構 1 2 新增 XNA 專案 新增 XNA 專案 3 4 XNA 相關的命名空間 Game1.cs 程式中的六個函數 using Microsoft.Xna.Framework; // 和 XNA 架構相關的型別

More information

Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0,

Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0, http://debut.cis.nctu.edu.tw/~chi Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0, : POSITIVE_INFINITY NEGATIVE_INFINITY

More information

C++ 程式設計

C++ 程式設計 C C 料, 數, - 列 串 理 列 main 數串列 什 pointer) 數, 數, 數 數 省 不 不, 數 (1) 數, 不 數 * 料 * 數 int *int_ptr; char *ch_ptr; float *float_ptr; double *double_ptr; 數 (2) int i=3; int *ptr; ptr=&i; 1000 1012 ptr 數, 數 1004

More information

Important Notice SUNPLUS TECHNOLOGY CO. reserves the right to change this documentation without prior notice. Information provided by SUNPLUS TECHNOLO

Important Notice SUNPLUS TECHNOLOGY CO. reserves the right to change this documentation without prior notice. Information provided by SUNPLUS TECHNOLO Car DVD New GUI IR Flow User Manual V0.1 Jan 25, 2008 19, Innovation First Road Science Park Hsin-Chu Taiwan 300 R.O.C. Tel: 886-3-578-6005 Fax: 886-3-578-4418 Web: www.sunplus.com Important Notice SUNPLUS

More information

Spyder Anaconda Spyder Python Spyder Python Spyder Spyder Spyder 開始 \ 所有程式 \ Anaconda3 (64-bit) \ Spyder Spyder IPython Python IPython Sp

Spyder Anaconda Spyder Python Spyder Python Spyder Spyder Spyder 開始 \ 所有程式 \ Anaconda3 (64-bit) \ Spyder Spyder IPython Python IPython Sp 01 1.6 Spyder Anaconda Spyder Python Spyder Python Spyder Spyder 1.6.1 Spyder 開始 \ 所有程式 \ Anaconda3 (64-bit) \ Spyder Spyder IPython Python IPython Spyder Python File

More information

Microsoft PowerPoint - 20-string-s.pptx

Microsoft PowerPoint - 20-string-s.pptx String 1 String/ 1.: char s1[10]; char *s2; char s3[] = "Chan Tai Man"; char s4[20] = "Chan Siu Ming"; char s5[]={'h','e','l','l','o','\0'; 0 1 2 3 4 5 6 7 8 9 10 11 12 s3 C h a n T a i \0 M a n \0 printf

More information

CC213

CC213 : (Ken-Yi Lee), E-mail: feis.tw@gmail.com 49 [P.51] C/C++ [P.52] [P.53] [P.55] (int) [P.57] (float/double) [P.58] printf scanf [P.59] [P.61] ( / ) [P.62] (char) [P.65] : +-*/% [P.67] : = [P.68] : ,

More information

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit Tomcat Web JUnit Cactus JUnit Java Cactus JUnit 26.1 JUnit Java JUnit JUnit Java JSP Servlet JUnit Java Erich Gamma Kent Beck xunit JUnit boolean JUnit Java JUnit Java JUnit Java 26.1.1 JUnit JUnit How

More information

3-1 Wii ( )

3-1 Wii ( ) 03 3-1 3-2 3-3 3-4 3-5 3-1 Wii ( ) 3-2 3-3 8 8 3-4 3-5 3-4 3-3 3-2 3-5 8 ( sin cos ) 3-4 3-5 3-2 CH03_key4.fla ActionScript 3 12 "block_mc" + + "_" + 8 block_mc2_3 x_num y_num 1 01 02 03 04 05 06 07 08

More information

概述

概述 OPC Version 1.6 build 0910 KOSRDK Knight OPC Server Rapid Development Toolkits Knight Workgroup, eehoo Technology 2002-9 OPC 1...4 2 API...5 2.1...5 2.2...5 2.2.1 KOS_Init...5 2.2.2 KOS_InitB...5 2.2.3

More information

3.1 num = 3 ch = 'C' 2

3.1 num = 3 ch = 'C' 2 Java 1 3.1 num = 3 ch = 'C' 2 final 3.1 final : final final double PI=3.1415926; 3 3.2 4 int 3.2 (long int) (int) (short int) (byte) short sum; // sum 5 3.2 Java int long num=32967359818l; C:\java\app3_2.java:6:

More information

untitled

untitled 1 行 行 行 行.NET 行 行 類 來 行 行 Thread 類 行 System.Threading 來 類 Thread 類 (1) public Thread(ThreadStart start ); Name 行 IsAlive 行 行狀 Start 行 行 Suspend 行 Resume 行 行 Thread 類 (2) Sleep 行 CurrentThread 行 ThreadStart

More information

Microsoft PowerPoint - 11_Templates.ppt

Microsoft PowerPoint - 11_Templates.ppt 1 1. 上機考 20% 期末考 6/23( 四 ) 晚 6:30~8:30 範圍 : 第 7, 8, 9, 10 章實習內容 按座位坐, 隨機抽兩題 2. 紙上測驗 20% 6/21( 二 ) :9:30~11:00 課本 7-11, 13 章內容 2 第 11 章樣版 (Templates) 11.1 簡介 11.2 函式樣版 11.3 多載函式樣版 11.4 類別樣版 11.5 類別樣版與無型

More information

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入 100 年 特 種 考 試 地 方 政 府 公 務 人 員 考 試 試 題 等 別 : 三 等 考 試 類 科 : 資 訊 處 理 科 目 : 系 統 分 析 與 設 計 一 請 參 考 下 列 旅 館 管 理 系 統 的 使 用 案 例 圖 (Use Case Diagram) 撰 寫 預 約 房 間 的 使 用 案 例 規 格 書 (Use Case Specification), 繪 出 入

More information

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

KillTest 质量更高 服务更好 学习资料   半年免费更新服务 KillTest 质量更高 服务更好 学习资料 http://www.killtest.cn 半年免费更新服务 Exam : 310-055Big5 Title : Sun Certified Programmer for the Java 2 Platform.SE 5.0 Version : Demo 1 / 22 1. 11. public static void parse(string str)

More information

CC213

CC213 : (Ken-Yi Lee), E-mail: feis.tw@gmail.com 9 [P.11] : Dev C++ [P.12] : http://c.feis.tw [P.13] [P.14] [P.15] [P.17] [P.23] Dev C++ [P.24] [P.27] [P.34] C / C++ [P.35] 10 C / C++ C C++ C C++ C++ C ( ) C++

More information

書面

書面 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 5.4 互動功能畫面 程式碼請參考附件-程式三 在進入互動頁面時 會執行setAllText()依寵物狀態數值來 設定狀態文字與頭像 並且依心情決定是否要不要播放音效 觸摸的區域 由於是自己寫的 view 所以並未透過xml來設置 而是透過Layut.addview()來動態新增

More information

Excel VBA Excel Visual Basic for Application

Excel VBA  Excel Visual Basic for Application Excel VBA Jun5,00 Sub 分頁 () Dim i As Integer Dim Cname As String Dim Code As Variant Set score=thisworkbook.sheets("sheet") Code=Array(" 專北一 "," 專北二 "," 專北三 "," 專桃園 "," 專桃竹 "," 專中苗 ", " 專台中 "," 專台南 ","

More information

EJB-Programming-4-cn.doc

EJB-Programming-4-cn.doc EJB (4) : (Entity Bean Value Object ) JBuilder EJB 2.x CMP EJB Relationships JBuilder EJB Test Client EJB EJB Seminar CMP Entity Beans Session Bean J2EE Session Façade Design Pattern Session Bean Session

More information

untitled

untitled 1 Outline ArrayList 類 列類 串類 類 類 例 理 MSDN Library MSDN Library 量 例 參 列 [ 說 ] [] [ 索 ] [] 來 MSDN Library 了 類 類 利 F1 http://msdn.microsoft.com/library/ http://msdn.microsoft.com/library/cht/ Object object

More information

FY.DOC

FY.DOC 高 职 高 专 21 世 纪 规 划 教 材 C++ 程 序 设 计 邓 振 杰 主 编 贾 振 华 孟 庆 敏 副 主 编 人 民 邮 电 出 版 社 内 容 提 要 本 书 系 统 地 介 绍 C++ 语 言 的 基 本 概 念 基 本 语 法 和 编 程 方 法, 深 入 浅 出 地 讲 述 C++ 语 言 面 向 对 象 的 重 要 特 征 : 类 和 对 象 抽 象 封 装 继 承 等 主

More information

Microsoft Word - ACG chapter00c-3ed.docx

Microsoft Word - ACG chapter00c-3ed.docx Python 好好玩, 趣學電玩遊戲程式設計 Python Python BASIC Java JavaScript PHP C++ BASIC Python Python Python Xbox PlayStation Nintendo - 2 - 簡介 : 互動式 Python Shell : 編寫程式 Python File editor : 猜數字 : 腦筋急轉彎 : 龍域 ( ) : 使用

More information

untitled

untitled 3 C++ 3.1 3.2 3.3 3.4 new delete 3.5 this 3.6 3.7 3.1 3.1 class struct union struct union C class C++ C++ 3.1 3.1 #include struct STRING { typedef char *CHARPTR; // CHARPTR s; // int strlen(

More information

Microsoft Word - 物件導向編程精要.doc

Microsoft Word - 物件導向編程精要.doc Essential Object-Oriented Programming Josh Ko 2007.03.11 object-oriented programming C++ Java OO class object OOP Ruby duck typing complexity abstraction paradigm objects objects model object-oriented

More information

<A4E2BEF7B4FAB8D5B3F8A F52322E786C7378>

<A4E2BEF7B4FAB8D5B3F8A F52322E786C7378> 製表日期 : 2008 年 9 月 17 日 Mobile Java Applet 手機安裝測試報告表 已完成測試機型數量 :317 台 ; 無問題 ( 可安裝 / 可執行 ) 機型 :315 台無法使用 :2 台 ; 特殊註記機型 :2 台 廠牌 機型 測試狀況 OK 不 OK 安裝資料夾 ( 目錄 ) 備註 NOKIA N95 應用程式 NOKIA 6110 應用程式 NOKIA 3120 應用程式

More information

untitled

untitled 1 MSDN Library MSDN Library 量 例 參 列 [ 說 ] [] [ 索 ] [] 來 MSDN Library 了 類 類 利 F1 http://msdn.microsoft.com/library/ http://msdn.microsoft.com/library/cht/ Object object 參 類 都 object 參 object Boxing 參 boxing

More information

untitled

untitled 4.1AOP AOP Aspect-oriented programming AOP 來說 AOP 令 理 Cross-cutting concerns Aspect Weave 理 Spring AOP 來 AOP 念 4.1.1 理 AOP AOP 見 例 來 例 錄 Logging 錄 便 來 例 行 留 錄 import java.util.logging.*; public class HelloSpeaker

More information

Microsoft Word - ACL chapter02-5ed.docx

Microsoft Word - ACL chapter02-5ed.docx 第 2 章神奇的質數 2.1.1 什麼是質數 1 1 1 打下好基礎 - 程式設計必修的數學思維與邏輯訓練 1 1 0 10 2 3 5 7 4 6 8 9 10 4 10000 1229 1000 168 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107 109 113 127 131

More information

The Embedded computing platform

The Embedded computing platform 嵌入式系統及實驗 Embedded System and Experiment 詹曉龍 長庚大學電機系 Java 的類別與物件 : 宣告類別 建構子 public class Customer { private String name; private String address; // Customer 類別宣告 // 成員資料 public int age; // 建構子 : 使用參數設定成員資料初始值

More information

投影片 1

投影片 1 計算機程式及實習 期末報告 題目 : 六宿炒翻天 班級 : 奈米一乙姓名 : 陳洋翼學號 :4A514050 老師 : 謝慶存 程式說明 設計結帳系統, 選擇數量後, 在按下計算, 將會顯示總金額 若是老人或小孩, 將可享 8 折或 9 折的優惠 程式畫面 填選數量 在火腿蛋炒飯的數量選擇 1, 並按下計算, 可得總金額 50 元 程式畫面 打折 填選完後, 若客人是小孩或老人, 選擇欲打折項目,

More information

软件测试(TA07)第一学期考试

软件测试(TA07)第一学期考试 一 判 断 题 ( 每 题 1 分, 正 确 的, 错 误 的,20 道 ) 1. 软 件 测 试 按 照 测 试 过 程 分 类 为 黑 盒 白 盒 测 试 ( ) 2. 在 设 计 测 试 用 例 时, 应 包 括 合 理 的 输 入 条 件 和 不 合 理 的 输 入 条 件 ( ) 3. 集 成 测 试 计 划 在 需 求 分 析 阶 段 末 提 交 ( ) 4. 单 元 测 试 属 于 动

More information

例 度 讀 讀 不 不 來 念 來 了 讀 不 不 讀 不 讀行 利 了 說 更 了 讀

例 度 讀 讀 不 不 來 念 來 了 讀 不 不 讀 不 讀行 利 了 說 更 了 讀 讀 爛 來 都 力 讀 不 讀 了 讀 來 讀 了 更 不 都 六年 類 更 錄 不 都 便 路 不 不 了 讀 來不 讀 讀 刺 數 不 刺 讀 索 料 易 力 練 讀 易 料 了 讀 力 讀便不 讀 例 度 讀 讀 不 不 來 念 來 了 讀 不 不 讀 不 讀行 利 了 說 更 了 讀 年 來 句 易 說 說 易 說 讀 識 識 力 句 老 錄 朗讀 讀 了 易 臨 說讀 力 識 樂 參 練

More information

第1章

第1章 第 9 章 類別 1 本章提要 9.1 前言 9.2 物件導向程式設計基礎 9.3 類別的基本認識 9.4 公有成員與私有成員 9.5 類別變數與類別方法 9.6 進一步認識方法 9.7 進一步認識建構元 9.8 其它 9.9 綜合練習 9.10 後記 2 9.1 前言 物件導向程式設計的特性主要有 : 分而治之 (Divide and Conquer) 資訊隱藏 (Information Hiding)

More information

Microsoft PowerPoint - 14Threads.ppt

Microsoft PowerPoint - 14Threads.ppt Threads Outline Introduction to Threads How to create Thread extend Thread implement Runnable interface Synchronization What is thread? 定義 : 程式的執行軌跡 Single Thread Multi-Thread 依序執行 int x, y; int z; x =

More information

Android Service

Android Service Android Service- 播放音樂 建國科技大學資管系 饒瑞佶 2013/7 V1 Android Service Service 是跟 Activity 並行 一個音樂播放程式若沒使用 Service, 即使按 home 鍵畫面離開之後, 音樂還是照播 如果再執行一次程式, 新撥放的音樂會跟先前撥放的一起撥, 最後程式就會出錯 執行中的程式完全看不到! 但是, 寫成 Service 就不同了

More information

* 2

* 2 * 2 1. A 3. A 2. B A. 1. 1 2. 1 3 4 4 6 p 123456 7 bk bl bm bn 7 bo cm 9 8 cl ck bt bs br bp bq 1 2 3 4 5 6 7 8 9 bk bl bm 0 bn bo bp bq br bs bt p ck 8 2 4 6 cl cm cq cp co cn cn co cp cq 10 . [8]

More information

untitled

untitled 1 .NET 利 [] [] 來 說 切 切 理 [] [ ] 來 說 拉 類 類 [] [ ] 列 連 Web 行流 來 了 不 不 不 流 立 行 Page 類 Load 理 Response 類 Write 料 Redirect URL Response.Write("!! ives!!"); Response.Redirect("WebForm2.aspx"); (1) (2) Web Form

More information

Microsoft PowerPoint - C-Ch11.ppt

Microsoft PowerPoint - C-Ch11.ppt 各式各樣的資料型態 11-1 結構的基礎知識 決定新的型態 關於結構 結構資料型態可以將不同資料型態的值整合成新的型態 結構型態的宣告語法 : struct 結構型態 { 資料型態識別字 ; 資料型態識別字 ; }; 加上 struct 進行宣告 宣告結構變數 語法 : 結構型態結構變數名稱 ; 範例 : struct Car car1; 對成員進行存取 使用結構型態的成員時, 必須使用成員選擇運算子

More information

Autodesk Product Design Suite Standard 系統統需求 典型使用用者和工作流程 Autodesk Product Design Suite Standard 版本為為負責建立非凡凡產品的設計師師和工程師, 提供基本概念設計計和製圖工具, 以取得令人驚驚嘆

Autodesk Product Design Suite Standard 系統統需求 典型使用用者和工作流程 Autodesk Product Design Suite Standard 版本為為負責建立非凡凡產品的設計師師和工程師, 提供基本概念設計計和製圖工具, 以取得令人驚驚嘆 Autodesk Product Design Suite Standard 20122 系統統需求 典型使用用者和工作流程 Autodesk Product Design Suite Standard 版本為為負責建立非凡凡產品的設計師師和工程師, 提供基本概念設計計和製圖工具, 以取得令人驚驚嘆的產品設計計 Autodesk Product Design Suite Standard 版本中中包括以下軟體體產品

More information

PowerPoint Presentation

PowerPoint Presentation 第六章簡介運算子超載 (Operator Overloading) 6-1 運算子超載的基礎 6-2 超載二元運算子 6-3 超載邏輯與關係運算子 6-4 超載一元運算子 6-5 使用夥伴函數 6-6 細部檢視指定運算子 6-7 超載註標運算子 6-1 運算子超載的基礎 甚麼是運算子超載? 讓運算子 ( 符號 ) 有不同的意義 EX: 運算子的預設意義 ( 以 + 與 = 為例 ) class frac

More information

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

KillTest 质量更高 服务更好 学习资料   半年免费更新服务 KillTest 质量更高 服务更好 学习资料 http://www.killtest.cn 半年免费更新服务 Exam : 1Z0-854 Title : Java Standard Edition 5 Programmer Certified Professional Upgrade Exam Version : Demo 1 / 12 1.Given: 20. public class CreditCard

More information

Visual C# 2005程式設計

Visual C# 2005程式設計 Visual C# 2005 程式設計 第 3 章開始撰寫 Visual C# 2005 程式 程式設計之流程 需求 Requirements 設計 Design 分析 Analysis 撰寫程式 Coding 驗證 Verification 結束 程式設計之流程 需求 (Requirements) 需要的輸入 輸出 ( 包函資料庫大小輸出格式 等 )? 設計 (Design) 找出解決問題的方法

More information

PowerPoint 簡報

PowerPoint 簡報 Paint 繪圖板 JAVA 程式設計 指導老師 : 鄞宗賢 組員 : 4A3G0901 劉彥佐 4A3G0907 韓偉志 畫面預覽 匯入參數 package paint; import java.awt.*; import java.awt.event.*; import javax.swing.*; 主程式 public class paint{ public static void main(string[]

More information

javaexample-02.pdf

javaexample-02.pdf n e w. s t a t i c s t a t i c 3 1 3 2 p u b l i c p r i v a t e p r o t e c t e d j a v a. l a n g. O b j e c t O b j e c t Rect R e c t x 1 y 1 x 2 y 2 R e c t t o S t r i n g ( ) j a v a. l a n g. O

More information

ActiveX Control

ActiveX Control ActiveX Control For Visual Basic 2005.NET [ 版本 : 1.0] 1 安裝 Windows 驅動程式 請依照下列步驟 : 1. 執行 Windows 驅動程式安裝程式 ( 此範例為 PIO-DIO) 驅動程式位置 : CD:\NAPDOS\PCI\PIO-DIO\dll_ocx\Driver http://ftp.icpdas.com/pub/cd/iocard/pci/napdos/pci/pio-dio/dll_ocx/driver/

More information

Microsoft Word - 投影片ch11

Microsoft Word - 投影片ch11 Java2 JDK5.0 教學手冊第三版洪維恩編著博碩文化出版書號 pg20210 第十一章抽象類別與介面 本章學習目標認識抽象類別學習介面的使用認識多重繼承與介面的延伸 抽象類別與介面 11-2 11.1 抽象類別 抽象類別的目的是要依據它的格式來修改並建立新的類別 11.1.1 定義抽象類別 定義抽象類別的語法如下 : abstract class 類別名稱 { 宣告資料成員 ; // 定義抽象類別

More information

untitled

untitled 說 參 例 邏 邏 1. 說 2. 數 數 3. 8 4. 理念 李 龍老 立 1. 理 料 2. 理 料 3. 數 料 4. 流 邏 念 5. 良 6. 讀 行 行 7. 行 例 來 邏 1. 說 說 識 量 2. 說 理 類 3. 數 數 念 4. 令 5. 良 6. 流 邏 念 7. 說 邏 理 力 1. 2. 3. 4. 5. 列 念 1 參 1. ( Visual Basic 例 ) (1)

More information

第1章

第1章 第 15 章 標準類別 1 本章提要 15.1 前言 15.2 基本資料類別介紹 15.3 Integer 類別 15.4 Double 類別 15.5 Float 類別 Long 類別 Short 類別 15.6 數學相關類別 Math 15.7 後記 2 15.1 前言 不同基本資料型別可以互相轉換, 但也只予許由小轉大的情況, 例如 1. byte 轉為 short int long float

More information

10-2 SCJP SCJD 10.1 昇陽認證 Java 系統開發工程師 的認證程序 Java IT SCJD

10-2 SCJP SCJD 10.1 昇陽認證 Java 系統開發工程師 的認證程序 Java IT SCJD 10 SCJD 簡介 Java 10-2 SCJP SCJD 10.1 昇陽認證 Java 系統開發工程師 的認證程序 Java IT SCJD 10 SCJD 10-3 Java Java SCJD 7 Swing RMI 10.1.1 The Assignment The Essay 9 10 10-4 SCJP SCJD 90 10.1.2 SCJP Java 90 120 Swing 10

More information

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double x) { d

More information

untitled

untitled 林 林 年 1 錄 錄 論 連連 練 2 連連 練 六 路歷 來 參 3 錄 邏 流 邏 流 邏 流 邏 流 連連 邏 流 練 邏 流 cast 4 Score 連連 連連 連連 連連 連連 練 5 練 練 練 練 練 練 練 行 參數 參數 參數 參數 連連 參數 練 參數 6 論 利 不 都 浪 金 了 識 異 精 益 了 省 力 力 不 識 度都不 不 來 來 練 不 更 練 7 不 來 來

More information

Chapter 9: Objects and Classes

Chapter 9: Objects and Classes Java application Java main applet Web applet Runnable Thread CPU Thread 1 Thread 2 Thread 3 CUP Thread 1 Thread 2 Thread 3 ,,. (new) Thread (runnable) start( ) CPU (running) run ( ) blocked CPU sleep(

More information

Microsoft PowerPoint - ch1.pptx

Microsoft PowerPoint - ch1.pptx 1 變數 資料型別 變數宣告及使用 型別轉換 運算子 常數 列舉型別 結構型別 亂數 課後練習 2 何謂變數 變數 是用來請電腦幫忙記住某些我們需要的東西 變數宣告 變數在使用之前, 必須先告訴電腦要預先準備多大的空間來存放這個變數的內容, 這樣的步驟稱之為 宣告 資料型別 利用 資料型別 來描述所需要的空間大小 3 開頭第一個字必須為 A Z a z 或 _ ( 底線 ) 不允許數字 0 9 當做變數的開頭

More information

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double

More information

《大话设计模式》第一章

《大话设计模式》第一章 第 1 章 代 码 无 错 就 是 优? 简 单 工 厂 模 式 1.1 面 试 受 挫 小 菜 今 年 计 算 机 专 业 大 四 了, 学 了 不 少 软 件 开 发 方 面 的 东 西, 也 学 着 编 了 些 小 程 序, 踌 躇 满 志, 一 心 要 找 一 个 好 单 位 当 投 递 了 无 数 份 简 历 后, 终 于 收 到 了 一 个 单 位 的 面 试 通 知, 小 菜 欣 喜

More information

1 1 1 1 2 3 3 3 4 4 5 5 5 6 6 7 7 9 9 9 10 11 11 11 1. 2. 3. 4. 1 2 11 12 12 12 12 13 13 13 15 15 16 16 17 18 18 18 19 19 19 20 20 20 21 22 22 22 23 23 1. 2. 23 25 27 27 28 28 28 29 29 29 30 31 31 31 32

More information

Microsoft Word - 04_object_Boxing_property_indexer.doc

Microsoft Word - 04_object_Boxing_property_indexer.doc C# 程式設計人員參考 object 型別是.NET Framework 中,System.Object 的別名 您可以將 任何型別的值指派給 object 型別的變數 所有的資料型別, 包括預先定義的和使用者定義的, 都繼承自 System.Object 類別 object 資料型別是物件 Box 目標或來源的型 別 範例下列範例顯示 object 型別的變數如何接受任何資料型別的值, 以及 object

More information

untitled

untitled 不 料 料 例 : ( 料 ) 串 度 8 年 數 串 度 4 串 度 數 數 9- ( ) 利 數 struct { ; ; 數 struct 數 ; 9-2 數 利 數 C struct 數 ; C++ 數 ; struct 省略 9-3 例 ( 料 例 ) struct people{ char name[]; int age; char address[4]; char phone[]; int

More information

Microsoft Word - 3D手册2.doc

Microsoft Word - 3D手册2.doc 第 一 章 BLOCK 前 处 理 本 章 纲 要 : 1. BLOCK 前 处 理 1.1. 创 建 新 作 业 1.2. 设 定 模 拟 控 制 参 数 1.3. 输 入 对 象 数 据 1.4. 视 图 操 作 1.5. 选 择 点 1.6. 其 他 显 示 窗 口 图 标 钮 1.7. 保 存 作 业 1.8. 退 出 DEFORMTM3D 1 1. BLOCK 前 处 理 1.1. 创 建

More information

投影片 1

投影片 1 軟體說明書繁體中文 RGB A 目錄 - CONTENTS 01 09 15 17 22 軟體主介面 巨集設定說明 主介面概觀 個人設定檔 (Profiles) 一般模式 / 遊戲模式 按鍵功能分配 巨集管理器概觀 巨集管理器 巨集錄製設定 巨集錄製時間列表 插入指令 閃移系統 - I.S.S (Instant Shift System) 燈光設定更新韌體 閃移系統啟動鈕設定說明 燈光設定介面 介面區域一

More information