提示關於如何顯示 你要幾分 以及 你的理由 先看看大概的樣子: (1)要準備一個變數以便表示是在遊戲狀態還是在顯示想要幾分狀態, 例如 : boolean isPlayingGame = true; // 遊戲狀態 (2)要準備一個按鈕, 為了方便, 設為整體變數(Global variable), 例如取名 btWantScore 按鈕上的字是 "我該得幾分": //Button bBorn3 = new Button("Create Small 3"); Button btWantScore = new Button("我該得幾分"); (3)要記得註冊該按鈕的監聽器: //bBorn3.addMouseListener(this); // 這按鈕也要看:-) btWantScore.addActionListener(this); // 交給 this 這類別中的 actionPerformed( ) 處理 (4)寫一個簡單處理函數, 例如 void processWantScore( ), 函數內容類似如下: void processWantScore( ) { if(isPlayingGame) { // 在遊戲狀態 isPlayingGame = false; //改為不是遊戲狀態; btWantScore.setLabel(" 知道啦! "); // 把按鈕上的字改為 "知道啦!"; }else{ isPlayingGame = true; // 改為遊戲狀態; btWantScore.setLabel("我該得幾分"); //把按鈕上的字改為 "我該得幾分"; } // if( repaint( ); // 要求重新更改畫面 ! 這很重要! 原先我就是漏掉這列才一直做不出來 !! } // handleWantScore( // 注意函數要放在適當地方 ! 不可塞在別的函數內 ! (5)讓該按鈕被按到就去做(4)的函數 processWantScore( ); 找到處理 ActionEvent 的函數: public void actionPerformed(ActionEvent e) { 在裡面, 找到下句: else if( who == bBorn3 ) process按到出生鍵( ); 在該句下方加入以下這句: else if( who == btWantScore ) processWantScore( ); (6)寫出會畫出你要的分數以及理由的函數 drawWanted(Graphics g) { } 找到並參考函數 void draw提醒(Graphics g) { (你可以複製該函數, 貼在該函數下方, 並把複製的改名 drawWanted ) 然後把不必要的句子砍掉, 例如用到 drawRect 以及 fillRect 等句子都不要了 ! 裡面只要用到設定顏色的 setColor, 設定字型的 setFont, 以及畫出自串的 drawString 共三個函數! 注意, 不但要畫出你想要幾分, 還要畫出至少33字的理由(至多88字) ! 好啦, 好人做到底, 以下圖中可看到 drawMyName( ) 以及 drawWanted( ): (7)當然要讓該函數在適當時機被叫用! Java 主要的畫圖函數是 paint( ), 但我們在 paint( ) 內叫用 myPaint( ); 找到並修改 myPaint( ) 函數 在該函數內, 找到以下這句: draw提醒(g); 在其上方加入以下: if( ! isPlayingGame ) { // 不是遊戲狀態那就要說出想要幾分囉 ! drawWanted(g); return; } (8)剩下一件事, 就是你必須把該按鈕 btWantScore 塞(add)到畫面下方的面板, 放在原先 "殺一個不算分數" (現在應該已經與數字時間對調) 的右邊, 阿就是說這新按鈕必須出現在下方最右邊 ! 這留給你自己練習 ! 其實只要看看如何把 bK3 加入下方面板就會了: pDown.add(bK3); 參考上句略改一下就可以啦 ! (ㄟ .. 括號內 不要真的還寫 bK3 喔 !) 點這抓play88.jar (含有原始檔案)以便練習修改 產生 Jar 檔並簽章最快的方法: 1.)開啟 CMD 命令視窗 ( 開始 >> 所有程式 >> 附屬應用程式 >> CMD 命令提示 注意, 以下假設用 package mgd08; 每次請注意程式碼中的套件 package (其實就是代表目錄啦!) 2.)一開始應該是在 Users\Admin 之下, 裡面會有 Eclipse 的工作目錄 workspace 用 cd 命令切進去: 打 cd wo 然後直接敲 TAB 鍵, 按下 Enter 鍵 3.)用 dir 命令看看有啥? 會看到你的專案目錄 ! 用 cd 命令切入你專案目錄, 並再次用 dir 會看到 src 目錄 4.)再次用 cd 命令, 打 cd src 切入 src 子目錄 5.)用 dir 會看到你的 package 目錄, 例如 mgd08, 此時千萬千萬不要再 cd 進去了, 萬一不小心進去了請打 cd .. 退回上一層 ! 6.)編譯: javac mgd08\*.java *******如果程式碼用 package mgd09.ydu; 則必須這樣: javac mgd09\ydu\*.java 7.) 打包, 並做索引; 假設你的啟動檔類別是 Prog08 在目錄 mgd08 (因為 package mgd08; ) jar cvfe 009008.jar mgd08.Prog08 mgd08 jar -i 009008.jar *******如果是 package mgd09.ydu; 且 class ProgMid, 則必須這樣: jar cvfe 009008.jar mgd09.ydu.ProgMid mgd09 jar -i 009008.jar 8.)製作印章 ggyy keytool -genkey -alias ggyy 注意輸入密碼等下要用, 請輸入 1234abcd 免得忘掉 ! 除了最後問是否確定回答 y, 其餘都是回答 tw 即可 9.) 使用印章 ggyy 對 009008.jar 簽署 ! jarsigner 009008.jar ggyy 大功告成, 這 009008.jar 可以點兩下執行, 也可當作 Applet 夾在 HTML 網頁內! 建議上傳到 Google 協作平台 https://sites.google.com 還不會的請看開始上課左邊找"如何上傳到學校..." 往下捲即可看到詳細說明 ! 如果你要從 Eclipse 匯出為可執行的 .jar 檔案, 參考下圖, 但注意這樣匯出的 .jar 檔案內缺了程式原始碼 (source code) .java 檔案 ! 你必須從專案把所有的 .java 檔案複製到某個目錄, 然後用壓縮工具之例如 7-Zip 打開 .jar 檔案, 進入我們規定的 package 目錄(例如 mgd08), 用滑鼠把那些 .java 原始檔拖拉入正開著的壓縮檔該 package 目錄內! 再提醒一次, 你必須從專案把所有的 .java 檔案複製到某個目錄, 然後用壓縮工具之例如 7-Zip 打開 .jar 檔案, 進入我們規定的 package 目錄(例如 mgdmid.ydu), 用滑鼠把那些 .java 原始檔拖拉入正開著的壓縮檔該 package 目錄內!
產生 Jar 檔並簽章最快的方法: 1.)開啟 CMD 命令視窗 ( 開始 >> 所有程式 >> 附屬應用程式 >> CMD 命令提示 注意, 以下假設用 package mgd08; 每次請注意程式碼中的套件 package (其實就是代表目錄啦!) 2.)一開始應該是在 Users\Admin 之下, 裡面會有 Eclipse 的工作目錄 workspace 用 cd 命令切進去: 打 cd wo 然後直接敲 TAB 鍵, 按下 Enter 鍵 3.)用 dir 命令看看有啥? 會看到你的專案目錄 ! 用 cd 命令切入你專案目錄, 並再次用 dir 會看到 src 目錄 4.)再次用 cd 命令, 打 cd src 切入 src 子目錄 5.)用 dir 會看到你的 package 目錄, 例如 mgd08, 此時千萬千萬不要再 cd 進去了, 萬一不小心進去了請打 cd .. 退回上一層 ! 6.)編譯: javac mgd08\*.java *******如果程式碼用 package mgd09.ydu; 則必須這樣: javac mgd09\ydu\*.java 7.) 打包, 並做索引; 假設你的啟動檔類別是 Prog08 在目錄 mgd08 (因為 package mgd08; ) jar cvfe 009008.jar mgd08.Prog08 mgd08 jar -i 009008.jar *******如果是 package mgd09.ydu; 且 class ProgMid, 則必須這樣: jar cvfe 009008.jar mgd09.ydu.ProgMid mgd09 jar -i 009008.jar 8.)製作印章 ggyy keytool -genkey -alias ggyy 注意輸入密碼等下要用, 請輸入 1234abcd 免得忘掉 ! 除了最後問是否確定回答 y, 其餘都是回答 tw 即可 9.) 使用印章 ggyy 對 009008.jar 簽署 ! jarsigner 009008.jar ggyy
獵殺小三! 捏死小四 ! 執行時請先連按五次空白鍵, 然後按 t 看看 按 a 或用滑鼠右鍵點那個手動生小三的按鈕(Create...)會變自動生小三!
///
///// ///這裡有參考解答喔 .. void doJump( ) { int i=0; // 找出一個小三 第 i 個, 若找不到立刻 return; // 把該小三傳給一個 thread 執行緒去做往上移動又移回原位的工作 for(i=0; i < g3.length; ++i) { // if(g3[i] != null) break; // 找到小三了 //if( i >= g3.length) return; // 沒有任何小三 if(g3[i] == null) continue; // 沒第 i個小三, 檢查下一位 (continue 會使 for 做下一個 i) if(g3[i].isJumping) continue; // 這隻還在跳 ! 不要理他 ! if(Math.random( ) < 0.68)new JpDog(i).start( ); // 68%機會 :-) 你可以把 0.68 改為其它看看! }// for(i /// /// /// // for(i=0; i < g3.length; ++i) if(g3[i] != null) new JpDog(i).start( ); } // doJump( // class JpDog extends Thread { // 負責把一隻小 3做往上移動又移回原位的工作 int i=0; public JpDog(int iii) { i = iii; } // 記住第幾個小三 public void run( ) { if(g3[i] == null) return; // 防呆 :-) int xOLD = g3[i].x; // 先記住原來g3[i]的座標 int yOLD = g3[i].y; // 以及其 y 座標 // 你可以用 for 或 while 慢慢動 // 現在只動一下 // g3[i].y = 38; // 太上面會看不到 ! // do重新畫並休息一下(123); // 好啦, 好人做到底, 以下就用 while 往上慢慢動 ! int yyy = g3[i].y; g3[i].isJumping = true; // 做記號以面亂動! while(yyy > 22) { // 讓小三慢慢上去 yyy -= 3; g3[i].y = yyy; // 往上移動一點點 do重新畫並休息一下(58); // 0.058秒 }// while( /// ///請仿照上面 while 迴圈, (也可用 for 迴圈), 讓小三慢慢下來 /// 當 ( yyy 小於 yOLD ) { /// yyy += 2; // 更慢下來 :-) /// g3[i].y = yyy; // 注意 yyy 只是臨時變數, 真正位置在 g3[i].y do重新畫並休息一下(58); // 0.058秒 // } // 別忘了大括弧 對應 "當" while //////// g3[i].y = yOLD; // 確保把 y 座標恢復為舊的g3[i]的座標 repaint( ); // 立刻重畫不休息啦 g3[i].isJumping = false; // 別忘了告知大家說第 i 個小三已經沒在跳 !(恢復可以動 !) }// run( } // class JpDog // void do重新畫並休息一下( int kk) { repaint( ); try{ Thread.sleep(kk); } catch(Exception e) {;} // 休息千分之 kk 秒 } // do重新畫並休息一下( // // Hint: 用滑鼠把上面空白處全部標記起來, // 然後按滑鼠右鍵選複製, 再貼到 Eclipse 內換掉 doJump( ) 那函數; // 因為用到了沒有宣告的布林變數 isJumping 所以會有幾個錯誤! // 解決方法有兩個: // (1)可以把所有那些有 isJumping 的每列都用 // 註解掉, // 但這樣不太好! Why? 會變成若連續叫它跳會一直亂跳 !! 強烈建議用以下(2)的方法! // (2)或是到 Girl 類別內加入一個 boolean 變數 isJumping 初始值設 false; // (也可以在 Girl 的祖先 class MySprite 類別內加入, 繼承它的類別當然也可以用) // public boolean isJumping = false; // 還有, 因為 doJumping 時會有兩股力量拉扯小三(一方面要跳, 一方面要移動 moveNext( );), // 則小三的動作會怪怪的, 如果你用了第二個方案加入變數 isJumping, // 則可以在Girl類別內的 moveNext( ) 函數內加入以下句子在第一句: // if(isJumping) return; // 這樣, 有被跳跳狗動到的小三就不再做 moveNext( ); //////其他提示: // (a) 建議先把程式碼最後面 sleepTime = 143; 先改為 543 // 這樣速度比較慢才能看出問題, // 還有, 可以先把 FIRST_UPGRADE = 300; 改為 30 // 表示每得到 30 分就會進到下一關, 記得做好要改回來! /// // (b) 要加入學號姓名先找到 paint( ) 再找到 myPaint( ) 函數 // 就是在 myPaint( ) 快結束的地方加入 g.drawString 畫出學號姓名即可 /// 你需要用到如何取得目前畫面的寬與高: /// 取得目前畫面的寬度: getWidth( ) /// 取得目前畫面的高度: getHeight( ) /// // (c) 要把時鐘與生小三的按鈕對調很簡單, // 因為兩者都是物件, 找 preparePad... 做勞作貼零件的函數, // 分段慢慢修改就可以改出來, 記住改一點點就立刻測試! /// // (d) 要更換圖片只要找出圖片的目錄, 找來圖片直接 replace 替掉即可, // 圖片大小只要不要太大太誇張影響讀入效率都沒關係, 因為程式會做 resize /// // (e) 要增加動畫圖片也很簡單, // 在程式碼最後的字串陣列 String d3Fn[ ][ ] 裡面依樣畫葫蘆, // 把檔案名稱加進去, 然後當然也要真的把圖檔放入對應的目錄, // 這樣我的程式就會自動做相對應的事! /// // (f)在 (e) 說的是殺死小三後的動畫, // 還沒殺死之前則要改字串陣列 s3File[ ][ ] 裡面的檔案名稱, // 動畫序是由第 0張, 第一張, ... 最後一張, 然後捲回第0張, ...依此循環 ! ///////// // /// ///前面已經用文字敘述以 while 把第 i 個小三從高處慢慢往下放, 把敘述改為程式碼即可! //這邊再補充用 for Loop 把第 i 個小三從高處慢慢往下放: for( ; ; ) { // Loop forever :-) if(yyy > yOLD) break; // 已經比原先位置下面, 離開 for Loop yyy += 5; // 往下是用加的別弄錯方向 ! // 讓小三慢慢 +5 down g3[i].y = yyy; // 往下 移動一點點 do重新畫並休息一下(58); // 0.058秒 } //for( // ///注意前面提示是用 當(某條件成立) { 做事... } ///但這我故意使用 for Loop; 且是永不停指的 for Loop; (Loop 身體裡面用 if 檢查是否要break離開) ///其實用 for 或用 while 都可, 但是要注意 "要繼續做" 或 "要結束" 的條件當然是相反的 ! /// 點這抓 play88.jar Go back Top ////// Go back Top More Hint: 取得目前畫面的寬度: getWidth( ) 取得目前畫面的高度: getHeight( ) 以下是把"畫出自己學號姓名" 寫成獨立函數, 方便叫用 ! //在畫面畫出自己學號姓名可以寫成獨立函數 // 把以下函數放在任意兩個函數之間: (請自己調整位置 ! void drawMyName(Graphics g) { g.setFont( new Font("Courier", Font.BOLD, 12) ); // 粗體字 12 pt g.setColor( Color.red); // 紅色 g.drawString("008 009", 12, 58); // 左上角 g.drawString("張大頭", getWidth( ) - 38, getHeight( ) -45); // 右下角 } // 畫出 學號與姓名 /// /// / /// 然後, 找到 paint( ) 函數, 發現他會叫用 myPaint( ) // 請在 myPaint( ) 內適當地方, 加入以下句子 drawMyName(g); // 呼叫小弟畫出我的學號與姓名 // 以下是把 "殺小三不算分數" 的按鈕改至上方 的參考做法! 要把殺小三不算分數的按鈕改至上方, 請找到 函數 preparePad準備顯示板( ) 裡面的 pUp 是上方顯示板, pDown 是下方顯示板 建議對可能的零件先用 // 註解掉立刻測試看看 然後再改為你想要的 ! 例如, 原先是 pUp.add(btMgsYdu); 先註解掉它 然後到下方 pDown.add(bK3); 也註解掉, 測試, 然後把加入的動作對調, 就是: pUp.add(bK3); 下方是: pDown.add(btMgsYdu); /// // // // 取得目前畫面的寬度: getWidth( ) // 取得目前畫面的高度: getHeight( ) ** Java 程式中要生出一個按鈕如何做? Ans: Button btn = new Button("這是按鈕"); ** 生出的按鈕畫面看不到如何解決? Ans: 按鈕一定要塞在窗內, 並要求顯示該窗, 通常先把按鈕放木板(Panel), 再把 Panel 塞窗內, 例如: Frame f = new Frame("Windows 2015"); // 窗 Panel pp = new Panel( ); pp.add(btn); // 按鈕塞在 Panel f.add(pp, "South"); // Panel 放窗的南邊 f.setVisible(true); // f.show( ); // 現身 ! ** 按鈕是看得見了, 可是按了沒有用, 怎辦? Ans: 因為沒註冊監聽器 ! 假設處理 "按一下"(Click) 的程式碼就在這類別內: (a)這類別的頭部(寫class處)必須 implements ActionListener (b)這類別內必須寫一個函數如下: public void actionPerformed(ActionEvent e) { //... 看你要做啥 ! } (c)要對按鈕註冊: btn.addActionListener(this); // 寫 this 是因為函數 actionPerformed( ) 在這類別內! *** 這樣就可以了 /// ////// /// 提醒建立專案時 JRE 請點選第三項 使用預設的 JRE 環境 ! 然後編譯器必須選 比 1.5 還要大的, 建議選 1.7 ** 注意如果你建立專案時 JRE 選第二項, 則 Compiler 的設定必須選 Project 裡面的 Properties (內容, 屬性): 我是蔡神 我是蔡神 VPS虛擬主機推薦(by蔡神) Python+Flask入門 About Adsense( 夾廣告範例) 教學 安裝ArduBlock教學 Arduino送資料去PC電腦 按鈕與Processing Python+Flask入門 WebDuino教學 NodeMCU+Arduino ArduTalk for NodeMCU 控制 NodeMcu上LED 燈 Webduino聲控LED Webduino教學 我的作業 第一個作業範例 學長姐範例 DW CS6 證照考試公告 作品集練習 圖片集 停班停課標準 Game遊戲 BullsCows_AB 網頁相關 簡單的教學 LionFree.Net搭配DW > LionFree是國中生架的 網頁WeeBLY建置 > 學長姐鏈結 WeeBLY 小秘技 Wix vs. WeeBLY > Wix.COM 簡易教學 其它免費網頁平台 Build A WebSite > WordPress 簡介 WordPress 架在 LionFree.Net Cloud Services WebSite Builder 網站軟體 Interactive 互動 FileZiLLa Server 2FreeHosting.com 免費DropBox+PanCake網站 PostAch.IO 習題 習題 習題 12/09新的創意大畫家 12/06善用免費資源.. 1202More 互動創意畫圖 11/29善用現成的.. 11/25禪繞畫ZenTangle 11/22 Div / AP Div / Span 以及... 11/15站在別人的肩膀上 11/14執行緒(Thread) 如何應用CSS濾鏡 2016/11/08期中考 11/07期中考More提示 11/04 互動創意實作題 11/01 工具熟能生巧 10/28 加入光敏電阻 10/25 站在巨人肩膀上 10/18習題獅子飛 10/14練習說明 話題/八卦 積極與熱情 PPAP洗腦神曲 莫忘初衷,永保熱誠 台北捷運大樓興建歷史 只要有夢想只要你肯拚 第二專長很重要 興趣也可以幫你賺錢喔 bit 真藥醫假病(健康靠自己) iherb cureCancer ColdCough 太極拳 > 功夫者-二十四式 24式太極拳宗維潔老師 八段錦健身氣功 Health 我的少女時代 別讓你的權益睡著了 18 禁 SnapChat 人口問題 寒露深秋楓紅層層 烏龍派出所 game job 遊戲製作超簡單 0301Processing 0124PRPG 我的Wix.Com網站 我的LionFree.Net(教學) 我的故事2(大一同學) Hacker駭客 颱風 > 颱風1007 颱風梅姬9月27日 > 颱風芙蓉1001 > 颱風_芙蓉0929 颱風警報28_0015 > 颱風警報28_0115 颱風警報28_0230 颱風警報28_0315 颱風警報28_0415 颱風警報28_0530 颱風警報28_0615 颱風警報28_0830 颱風警報23時30分 颱風警報22時15分 颱風警報21時15分 颱風警報20時30分 颱風警報19時15分 颱風警報18時15分 颱風警報17時30分 颱風警報16時15分 颱風警報15時15分 颱風警報14時30分 颱風梅姬0926 > 颱風警報23時30分 颱風警報22時15分 颱風警報21時15分 颱風警報20時30分 颱風警報19時15分 颱風警報18時15分 颱風警報17時30分 > 颱風警報16時15分 > 15時15分颱風警報單 14時30分颱風警報單 颱風警報單11時30分 颱風警報13時15分 颱風警報12時15分 颱風警報11時30分 颱風警報10時30分 颱風警報09時15分 颱風警報08時15分 0926颱風警報單8時30分 0926颱風警報05:00 Android手機 Android Studio 安裝 Eclipse匯出APK 連到育達首頁 Registry 就業學程相關 台灣大學 清華大學 交通大學 成功大學 中央大學 中央氣象局 11/15用Div的 CSS對圖片與文字搞怪 下載微軟Visual Studio 微軟併購 Xamarin 成跨平臺行動開發的新利器 微軟 WCF Service Get/Post 關於 Java 與 C# 比較 AP/APK/APP 跨平台 Applet in Browser PhonesList Programming 03/13 要繳交的 0316Unity Windows APP Programming 2017/04/17期中考 04/24站在別人的肩膀上 0427Unity vc 0501DWT 0504Unity 0508Web 0509 0511 0525 0601 11/20 使用光敏電阻
///// ///這裡有參考解答喔 .. void doJump( ) { int i=0; // 找出一個小三 第 i 個, 若找不到立刻 return; // 把該小三傳給一個 thread 執行緒去做往上移動又移回原位的工作 for(i=0; i < g3.length; ++i) { // if(g3[i] != null) break; // 找到小三了 //if( i >= g3.length) return; // 沒有任何小三 if(g3[i] == null) continue; // 沒第 i個小三, 檢查下一位 (continue 會使 for 做下一個 i) if(g3[i].isJumping) continue; // 這隻還在跳 ! 不要理他 ! if(Math.random( ) < 0.68)new JpDog(i).start( ); // 68%機會 :-) 你可以把 0.68 改為其它看看! }// for(i /// /// /// // for(i=0; i < g3.length; ++i) if(g3[i] != null) new JpDog(i).start( ); } // doJump( // class JpDog extends Thread { // 負責把一隻小 3做往上移動又移回原位的工作 int i=0; public JpDog(int iii) { i = iii; } // 記住第幾個小三 public void run( ) { if(g3[i] == null) return; // 防呆 :-) int xOLD = g3[i].x; // 先記住原來g3[i]的座標 int yOLD = g3[i].y; // 以及其 y 座標 // 你可以用 for 或 while 慢慢動 // 現在只動一下 // g3[i].y = 38; // 太上面會看不到 ! // do重新畫並休息一下(123); // 好啦, 好人做到底, 以下就用 while 往上慢慢動 ! int yyy = g3[i].y; g3[i].isJumping = true; // 做記號以面亂動! while(yyy > 22) { // 讓小三慢慢上去 yyy -= 3; g3[i].y = yyy; // 往上移動一點點 do重新畫並休息一下(58); // 0.058秒 }// while( /// ///請仿照上面 while 迴圈, (也可用 for 迴圈), 讓小三慢慢下來 /// 當 ( yyy 小於 yOLD ) { /// yyy += 2; // 更慢下來 :-) /// g3[i].y = yyy; // 注意 yyy 只是臨時變數, 真正位置在 g3[i].y do重新畫並休息一下(58); // 0.058秒 // } // 別忘了大括弧 對應 "當" while //////// g3[i].y = yOLD; // 確保把 y 座標恢復為舊的g3[i]的座標 repaint( ); // 立刻重畫不休息啦 g3[i].isJumping = false; // 別忘了告知大家說第 i 個小三已經沒在跳 !(恢復可以動 !) }// run( } // class JpDog // void do重新畫並休息一下( int kk) { repaint( ); try{ Thread.sleep(kk); } catch(Exception e) {;} // 休息千分之 kk 秒 } // do重新畫並休息一下( // // Hint: 用滑鼠把上面空白處全部標記起來, // 然後按滑鼠右鍵選複製, 再貼到 Eclipse 內換掉 doJump( ) 那函數; // 因為用到了沒有宣告的布林變數 isJumping 所以會有幾個錯誤! // 解決方法有兩個: // (1)可以把所有那些有 isJumping 的每列都用 // 註解掉, // 但這樣不太好! Why? 會變成若連續叫它跳會一直亂跳 !! 強烈建議用以下(2)的方法! // (2)或是到 Girl 類別內加入一個 boolean 變數 isJumping 初始值設 false; // (也可以在 Girl 的祖先 class MySprite 類別內加入, 繼承它的類別當然也可以用) // public boolean isJumping = false; // 還有, 因為 doJumping 時會有兩股力量拉扯小三(一方面要跳, 一方面要移動 moveNext( );), // 則小三的動作會怪怪的, 如果你用了第二個方案加入變數 isJumping, // 則可以在Girl類別內的 moveNext( ) 函數內加入以下句子在第一句: // if(isJumping) return; // 這樣, 有被跳跳狗動到的小三就不再做 moveNext( ); //////其他提示: // (a) 建議先把程式碼最後面 sleepTime = 143; 先改為 543 // 這樣速度比較慢才能看出問題, // 還有, 可以先把 FIRST_UPGRADE = 300; 改為 30 // 表示每得到 30 分就會進到下一關, 記得做好要改回來! /// // (b) 要加入學號姓名先找到 paint( ) 再找到 myPaint( ) 函數 // 就是在 myPaint( ) 快結束的地方加入 g.drawString 畫出學號姓名即可 /// 你需要用到如何取得目前畫面的寬與高: /// 取得目前畫面的寬度: getWidth( ) /// 取得目前畫面的高度: getHeight( ) /// // (c) 要把時鐘與生小三的按鈕對調很簡單, // 因為兩者都是物件, 找 preparePad... 做勞作貼零件的函數, // 分段慢慢修改就可以改出來, 記住改一點點就立刻測試! /// // (d) 要更換圖片只要找出圖片的目錄, 找來圖片直接 replace 替掉即可, // 圖片大小只要不要太大太誇張影響讀入效率都沒關係, 因為程式會做 resize /// // (e) 要增加動畫圖片也很簡單, // 在程式碼最後的字串陣列 String d3Fn[ ][ ] 裡面依樣畫葫蘆, // 把檔案名稱加進去, 然後當然也要真的把圖檔放入對應的目錄, // 這樣我的程式就會自動做相對應的事! /// // (f)在 (e) 說的是殺死小三後的動畫, // 還沒殺死之前則要改字串陣列 s3File[ ][ ] 裡面的檔案名稱, // 動畫序是由第 0張, 第一張, ... 最後一張, 然後捲回第0張, ...依此循環 ! ///////// //
///前面已經用文字敘述以 while 把第 i 個小三從高處慢慢往下放, 把敘述改為程式碼即可! //這邊再補充用 for Loop 把第 i 個小三從高處慢慢往下放: for( ; ; ) { // Loop forever :-) if(yyy > yOLD) break; // 已經比原先位置下面, 離開 for Loop yyy += 5; // 往下是用加的別弄錯方向 ! // 讓小三慢慢 +5 down g3[i].y = yyy; // 往下 移動一點點 do重新畫並休息一下(58); // 0.058秒 } //for( // ///注意前面提示是用 當(某條件成立) { 做事... } ///但這我故意使用 for Loop; 且是永不停指的 for Loop; (Loop 身體裡面用 if 檢查是否要break離開) ///其實用 for 或用 while 都可, 但是要注意 "要繼續做" 或 "要結束" 的條件當然是相反的 ! ///
Go back Top
////// Go back Top More Hint: 取得目前畫面的寬度: getWidth( ) 取得目前畫面的高度: getHeight( ) 以下是把"畫出自己學號姓名" 寫成獨立函數, 方便叫用 ! //在畫面畫出自己學號姓名可以寫成獨立函數 // 把以下函數放在任意兩個函數之間: (請自己調整位置 ! void drawMyName(Graphics g) { g.setFont( new Font("Courier", Font.BOLD, 12) ); // 粗體字 12 pt g.setColor( Color.red); // 紅色 g.drawString("008 009", 12, 58); // 左上角 g.drawString("張大頭", getWidth( ) - 38, getHeight( ) -45); // 右下角 } // 畫出 學號與姓名 /// /// / /// 然後, 找到 paint( ) 函數, 發現他會叫用 myPaint( ) // 請在 myPaint( ) 內適當地方, 加入以下句子 drawMyName(g); // 呼叫小弟畫出我的學號與姓名 // 以下是把 "殺小三不算分數" 的按鈕改至上方 的參考做法! 要把殺小三不算分數的按鈕改至上方, 請找到 函數 preparePad準備顯示板( ) 裡面的 pUp 是上方顯示板, pDown 是下方顯示板 建議對可能的零件先用 // 註解掉立刻測試看看 然後再改為你想要的 ! 例如, 原先是 pUp.add(btMgsYdu); 先註解掉它 然後到下方 pDown.add(bK3); 也註解掉, 測試, 然後把加入的動作對調, 就是: pUp.add(bK3); 下方是: pDown.add(btMgsYdu); /// // // // 取得目前畫面的寬度: getWidth( ) // 取得目前畫面的高度: getHeight( ) ** Java 程式中要生出一個按鈕如何做? Ans: Button btn = new Button("這是按鈕"); ** 生出的按鈕畫面看不到如何解決? Ans: 按鈕一定要塞在窗內, 並要求顯示該窗, 通常先把按鈕放木板(Panel), 再把 Panel 塞窗內, 例如: Frame f = new Frame("Windows 2015"); // 窗 Panel pp = new Panel( ); pp.add(btn); // 按鈕塞在 Panel f.add(pp, "South"); // Panel 放窗的南邊 f.setVisible(true); // f.show( ); // 現身 ! ** 按鈕是看得見了, 可是按了沒有用, 怎辦? Ans: 因為沒註冊監聽器 ! 假設處理 "按一下"(Click) 的程式碼就在這類別內: (a)這類別的頭部(寫class處)必須 implements ActionListener (b)這類別內必須寫一個函數如下: public void actionPerformed(ActionEvent e) { //... 看你要做啥 ! } (c)要對按鈕註冊: btn.addActionListener(this); // 寫 this 是因為函數 actionPerformed( ) 在這類別內! *** 這樣就可以了 /// ////// /// 提醒建立專案時 JRE 請點選第三項 使用預設的 JRE 環境 ! 然後編譯器必須選 比 1.5 還要大的, 建議選 1.7 ** 注意如果你建立專案時 JRE 選第二項, 則 Compiler 的設定必須選 Project 裡面的 Properties (內容, 屬性): 我是蔡神 我是蔡神 VPS虛擬主機推薦(by蔡神) Python+Flask入門 About Adsense( 夾廣告範例) 教學 安裝ArduBlock教學 Arduino送資料去PC電腦 按鈕與Processing Python+Flask入門 WebDuino教學 NodeMCU+Arduino ArduTalk for NodeMCU 控制 NodeMcu上LED 燈 Webduino聲控LED Webduino教學 我的作業 第一個作業範例 學長姐範例 DW CS6 證照考試公告 作品集練習 圖片集 停班停課標準 Game遊戲 BullsCows_AB 網頁相關 簡單的教學 LionFree.Net搭配DW > LionFree是國中生架的 網頁WeeBLY建置 > 學長姐鏈結 WeeBLY 小秘技 Wix vs. WeeBLY > Wix.COM 簡易教學 其它免費網頁平台 Build A WebSite > WordPress 簡介 WordPress 架在 LionFree.Net Cloud Services WebSite Builder 網站軟體 Interactive 互動 FileZiLLa Server 2FreeHosting.com 免費DropBox+PanCake網站 PostAch.IO 習題 習題 習題 12/09新的創意大畫家 12/06善用免費資源.. 1202More 互動創意畫圖 11/29善用現成的.. 11/25禪繞畫ZenTangle 11/22 Div / AP Div / Span 以及... 11/15站在別人的肩膀上 11/14執行緒(Thread) 如何應用CSS濾鏡 2016/11/08期中考 11/07期中考More提示 11/04 互動創意實作題 11/01 工具熟能生巧 10/28 加入光敏電阻 10/25 站在巨人肩膀上 10/18習題獅子飛 10/14練習說明 話題/八卦 積極與熱情 PPAP洗腦神曲 莫忘初衷,永保熱誠 台北捷運大樓興建歷史 只要有夢想只要你肯拚 第二專長很重要 興趣也可以幫你賺錢喔 bit 真藥醫假病(健康靠自己) iherb cureCancer ColdCough 太極拳 > 功夫者-二十四式 24式太極拳宗維潔老師 八段錦健身氣功 Health 我的少女時代 別讓你的權益睡著了 18 禁 SnapChat 人口問題 寒露深秋楓紅層層 烏龍派出所 game job 遊戲製作超簡單 0301Processing 0124PRPG 我的Wix.Com網站 我的LionFree.Net(教學) 我的故事2(大一同學) Hacker駭客 颱風 > 颱風1007 颱風梅姬9月27日 > 颱風芙蓉1001 > 颱風_芙蓉0929 颱風警報28_0015 > 颱風警報28_0115 颱風警報28_0230 颱風警報28_0315 颱風警報28_0415 颱風警報28_0530 颱風警報28_0615 颱風警報28_0830 颱風警報23時30分 颱風警報22時15分 颱風警報21時15分 颱風警報20時30分 颱風警報19時15分 颱風警報18時15分 颱風警報17時30分 颱風警報16時15分 颱風警報15時15分 颱風警報14時30分 颱風梅姬0926 > 颱風警報23時30分 颱風警報22時15分 颱風警報21時15分 颱風警報20時30分 颱風警報19時15分 颱風警報18時15分 颱風警報17時30分 > 颱風警報16時15分 > 15時15分颱風警報單 14時30分颱風警報單 颱風警報單11時30分 颱風警報13時15分 颱風警報12時15分 颱風警報11時30分 颱風警報10時30分 颱風警報09時15分 颱風警報08時15分 0926颱風警報單8時30分 0926颱風警報05:00 Android手機 Android Studio 安裝 Eclipse匯出APK 連到育達首頁 Registry 就業學程相關 台灣大學 清華大學 交通大學 成功大學 中央大學 中央氣象局 11/15用Div的 CSS對圖片與文字搞怪 下載微軟Visual Studio 微軟併購 Xamarin 成跨平臺行動開發的新利器 微軟 WCF Service Get/Post 關於 Java 與 C# 比較 AP/APK/APP 跨平台 Applet in Browser PhonesList Programming 03/13 要繳交的 0316Unity Windows APP Programming 2017/04/17期中考 04/24站在別人的肩膀上 0427Unity vc 0501DWT 0504Unity 0508Web 0509 0511 0525 0601 11/20 使用光敏電阻
Go back Top More Hint: 取得目前畫面的寬度: getWidth( ) 取得目前畫面的高度: getHeight( )
以下是把"畫出自己學號姓名" 寫成獨立函數, 方便叫用 !
//在畫面畫出自己學號姓名可以寫成獨立函數 // 把以下函數放在任意兩個函數之間: (請自己調整位置 ! void drawMyName(Graphics g) { g.setFont( new Font("Courier", Font.BOLD, 12) ); // 粗體字 12 pt g.setColor( Color.red); // 紅色 g.drawString("008 009", 12, 58); // 左上角 g.drawString("張大頭", getWidth( ) - 38, getHeight( ) -45); // 右下角 } // 畫出 學號與姓名 /// /// / /// 然後, 找到 paint( ) 函數, 發現他會叫用 myPaint( ) // 請在 myPaint( ) 內適當地方, 加入以下句子 drawMyName(g); // 呼叫小弟畫出我的學號與姓名 // 以下是把 "殺小三不算分數" 的按鈕改至上方 的參考做法!
要把殺小三不算分數的按鈕改至上方, 請找到 函數 preparePad準備顯示板( ) 裡面的 pUp 是上方顯示板, pDown 是下方顯示板 建議對可能的零件先用 // 註解掉立刻測試看看 然後再改為你想要的 ! 例如, 原先是 pUp.add(btMgsYdu); 先註解掉它 然後到下方 pDown.add(bK3); 也註解掉, 測試, 然後把加入的動作對調, 就是: pUp.add(bK3); 下方是: pDown.add(btMgsYdu); /// //
// 取得目前畫面的寬度: getWidth( ) // 取得目前畫面的高度: getHeight( ) ** Java 程式中要生出一個按鈕如何做? Ans: Button btn = new Button("這是按鈕"); ** 生出的按鈕畫面看不到如何解決? Ans: 按鈕一定要塞在窗內, 並要求顯示該窗, 通常先把按鈕放木板(Panel), 再把 Panel 塞窗內, 例如: Frame f = new Frame("Windows 2015"); // 窗 Panel pp = new Panel( ); pp.add(btn); // 按鈕塞在 Panel f.add(pp, "South"); // Panel 放窗的南邊 f.setVisible(true); // f.show( ); // 現身 ! ** 按鈕是看得見了, 可是按了沒有用, 怎辦? Ans: 因為沒註冊監聽器 ! 假設處理 "按一下"(Click) 的程式碼就在這類別內: (a)這類別的頭部(寫class處)必須 implements ActionListener (b)這類別內必須寫一個函數如下: public void actionPerformed(ActionEvent e) { //... 看你要做啥 ! } (c)要對按鈕註冊: btn.addActionListener(this); // 寫 this 是因為函數 actionPerformed( ) 在這類別內! *** 這樣就可以了 /// ////// ///
** Java 程式中要生出一個按鈕如何做? Ans: Button btn = new Button("這是按鈕"); ** 生出的按鈕畫面看不到如何解決? Ans: 按鈕一定要塞在窗內, 並要求顯示該窗, 通常先把按鈕放木板(Panel), 再把 Panel 塞窗內, 例如: Frame f = new Frame("Windows 2015"); // 窗 Panel pp = new Panel( ); pp.add(btn); // 按鈕塞在 Panel f.add(pp, "South"); // Panel 放窗的南邊 f.setVisible(true); // f.show( ); // 現身 ! ** 按鈕是看得見了, 可是按了沒有用, 怎辦? Ans: 因為沒註冊監聽器 ! 假設處理 "按一下"(Click) 的程式碼就在這類別內: (a)這類別的頭部(寫class處)必須 implements ActionListener (b)這類別內必須寫一個函數如下: public void actionPerformed(ActionEvent e) { //... 看你要做啥 ! } (c)要對按鈕註冊: btn.addActionListener(this); // 寫 this 是因為函數 actionPerformed( ) 在這類別內! *** 這樣就可以了 /// ////// ///
提醒建立專案時 JRE 請點選第三項 使用預設的 JRE 環境 ! 然後編譯器必須選 比 1.5 還要大的, 建議選 1.7 ** 注意如果你建立專案時 JRE 選第二項, 則 Compiler 的設定必須選 Project 裡面的 Properties (內容, 屬性):