30 分鐘完成桌球小游戲項(xiàng)目
我們秉承“快速入門、快速實(shí)戰(zhàn)”的理念,開發(fā)這套系列教材;就是希望朋友們?cè)趯W(xué)習(xí)過(guò)程中,盡快進(jìn)入實(shí)戰(zhàn)環(huán)節(jié),盡快介入項(xiàng)目,讓大家更有興趣、更有成就感,從而帶來(lái)更大的學(xué)習(xí)動(dòng)力。
如下的小項(xiàng)目,對(duì)于第一次接觸編程的朋友從理解上會(huì)有難度。但是,我們這個(gè)項(xiàng)目不在于讓大家理解代碼本身,而是讓大家“重在體驗(yàn)敲代碼的感覺(jué)”。
【項(xiàng)目】桌球游戲小項(xiàng)目
練習(xí)目標(biāo):
1. 找到敲代碼的感覺(jué)
2. 收獲敲代碼的興趣
3. 作出效果,找到自信
4. 從一開始就學(xué)會(huì)調(diào)試錯(cuò)誤
5. 掌握 Java 代碼基本結(jié)構(gòu)
項(xiàng)目需求:
桌球在球桌中按照一定線路和角度移動(dòng),遇到邊框會(huì)自動(dòng)彈回。

要求:
即使看不太懂,也要照著敲如下游戲代碼,至少 5 遍。要求所有字符和源文件一致。如果報(bào)異常,請(qǐng)細(xì)心看所在行和老師代碼有何區(qū)別?,F(xiàn)階段不需要理解代碼的語(yǔ)法功能,只要按照代碼結(jié)構(gòu)輸入代碼,能夠經(jīng)過(guò)調(diào)試實(shí)現(xiàn)代碼的正常運(yùn)行即可。
下面我們將分以下四個(gè)步驟來(lái)實(shí)現(xiàn)桌球游戲:
第一步:創(chuàng)建項(xiàng)目和窗口。
第二步:加載兩個(gè)圖片。
第三步:實(shí)現(xiàn)動(dòng)畫,小球沿著水平方向移動(dòng)并做邊界檢測(cè)。
第四步:實(shí)現(xiàn)小球沿著任意角度飛行(會(huì)用到初中學(xué)習(xí)的三角函數(shù),如果忘記了就
想想你們的體育老師吧)。
【注】:源碼和圖片資源下載地址:
鏈接:https://pan.baidu.com/s/1AfVsy-s0Ws-G04VIH4B0PA?提取碼:mjg7
第一步:
創(chuàng)建項(xiàng)目并拷貝圖片:在項(xiàng)目名 MyPro01 上單擊右鍵,在菜單中依次選擇 new---Folder,創(chuàng)建一個(gè)名稱是 images 的文件夾,并復(fù)制兩張圖片到該目錄下。并在 src 下創(chuàng)建類BallGame.java。eclipse 下項(xiàng)目的最終結(jié)構(gòu)如圖所示。

繪制窗口的代碼如示例 1-3 所示。
【示例 1-3】桌球游戲代碼—繪制窗口
執(zhí)行結(jié)果如圖 所示:

第二步:
加載兩個(gè)圖片:我們要在 BallGame 類中添加小球和桌面的路徑,并指定小球出現(xiàn)在窗口的的初始位置。然后添加 paint 方法,加載小球和桌面。代碼如示例 1-4 所示。
【示例 1-4】桌球游戲代碼—加載圖片
執(zhí)行結(jié)果如圖 所示:

注意:
由于懶加載問(wèn)題,有可能出現(xiàn)第一次加載圖片無(wú)效的情況;請(qǐng)最小化窗口再打開即可。稍后大家完成第三步后,就完全不存在這個(gè)問(wèn)題了。
第三步:
實(shí)現(xiàn)動(dòng)畫,小球沿著水平方向移動(dòng)并做邊界檢測(cè)。 要實(shí)現(xiàn)動(dòng)畫的關(guān)鍵是改變小球的坐標(biāo),并且要不停的重畫窗口來(lái)更新小球的坐標(biāo);邊界檢測(cè)則是判斷小球的坐標(biāo)是否超出桌面的范圍,如果超出則要改變小球原來(lái)的運(yùn)動(dòng)方向。代碼如示例 1-5 所示。
【示例 1-5】桌球游戲代碼—實(shí)現(xiàn)水平方向來(lái)回飛行
第四步:
實(shí)現(xiàn)小球沿著任意角度飛行:此時(shí)小球的運(yùn)動(dòng)方向不能再單純的使用 right 來(lái)表示,需要一個(gè)表示角度的變量 degree,小球坐標(biāo)的改變也要依據(jù)這個(gè)角度。代碼如示例 1-6 所示(為了保存第三步的代碼,我們新創(chuàng)建了一個(gè)類 BallGame2)。
【示例 1-6】桌球游戲代碼—實(shí)現(xiàn)任意角度飛行