總結
一,首先分析
分析物件,
尋找屬性,
發現方法,
難點分析,
記錄難點
Java游戲筆記一
二,插入圖片
首先呼叫一個工具類
/**
* 常用工具類
*/
public class CommonUtils {
/**
* 讀取圖片資源, 轉變為Java物件 Image
* @param imgPath 圖片路徑
* @return Image物件
*/
public static Image getImage(String imgPath) {
ImageIcon imageIcon = new ImageIcon(imgPath);
return imageIcon.getImage();
}
}
然后創建物件和視窗類(繼承Frame),在視窗類中輸入打開視窗的方法視窗的私有屬性 代碼見筆記二
(背景由始至終只有一張)
背景圖片的地址設定完成后要呼叫至靜態塊中,創建畫筆類畫出背景,
物件類也同樣方法插入圖片地址,
Java游戲筆記二
三,程式的關閉與人物的移動
回到視窗類中,運行發現無法關閉,所以我們需要添加一個監聽器類,進行關閉監聽(見筆記三)
監聽器不光能關閉程式,人物的移動也需要鍵盤的監聽觸發事件來進行移動,使用 this.addKeyListener的方法進行觸發判斷,(見筆記三第2部分)
注意:移動是人物類移動,所以在人物類中這樣添加
Java游戲筆記三
創建方法使用引數判斷按鍵的方向
public void okDirPressed(int keyCode)
使用switch判斷
然后在測驗類中獲取
//監聽鍵盤事件
this.addKeyListener(new KeyAdapter() {
//當鍵盤按下的時候觸發
// Var 獲取被按下的鍵的數值 如:a-67,B-68
@Override
public void keyPressed(KeyEvent e) {
int keyCode = e.getKeyCode();
buffoon.okDirPressed(keyCode);
buffoon.move(buffoon.getDir());
}
//當鍵盤松開的時候觸發
@Override
public void keyReleased(KeyEvent e) {
int keyCode=e.getKeyCode();
buffoon.OkDirReleased(keyCode);
}
});
并且在人物類中創建一個判斷方向移動的方法,
將X,Y軸的數值進行變更移動,
在將4個方向屬性設定為布爾型別去判斷,當我去按下倆個按鍵后觸發斜走,(見筆記四)
子彈的發射BUG修復以及優化
子彈是由人物類發射出的,所以設定一個發射的方法并且在觸發方法中在寫一個判斷,使用按鍵發射子彈(見筆記四)
在子彈實作發射后發現如果人物的移動屬性為STOP,那么子彈也會停止,所以要在人物類中在創建一個與方向同型別的變數toki,在判斷方向中將方向的值賦予給這個變數,在傳遞給子彈有參方法中的方向變數,
這樣子彈的方向變數只有上下左右,并且在人物中將toki賦予一個默認的方向屬性,在初始狀態中子彈就會由著此方向進行移動,并且解決了一旦方向為靜止狀態時子彈的滯留,
Java游戲筆記四
邊界的設定
新建一個方法,判斷X,Y的距離有沒有超過當前的設定的寬高,如果超過了就將X,Y的值變成四邊邊距的值,使用IF判斷(要注意每個判斷都是IF,因為else if 只判斷一次,并且注意自身人物圖片的大小),
(代碼見筆記五),
資料的優化
步驟至此已完成,但是發現代碼有許多的耦合,這種時候可以進行優化,我們發現發現屬性中各個類的屬性相同,所以我們可以設定一個父類來替代,減少代碼的冗余還能增加復用性,使用繼承然后在構造方法中使用super關鍵字帶入引數,
代碼如下所示:
public Buffoon(int x,int y,GameClinet gameClinet){
super(x,y,
DataPropertiesUtils.BUFFOON_SIZE,
DataPropertiesUtils.BUFFOON_SIZE,
DataPropertiesUtils.BUFFOON_SPEED
,gameClinet
);
Java筆記五
制作人 徐楊
思路可能有點偏差,大體應該不差
時間:2020/11/17
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/224366.html
標籤:其他
