Java學習之路 簡單的飛機大戰遊戲(敵機下落篇)

2021-09-19 05:56:12 字數 3100 閱讀 3372

在實現這個遊戲之前,我們首先需要知道專案可能要用到哪些知識點:

重繪,執行緒,雙緩衝,資料結構的應用

差不多是這大概有這些,如果不夠的話我們再加。

首先,我們應該實現敵機下落,在這裡大概思路和利用執行緒使小球下落差不多。不同的是,我在這裡用到了三種敵機,分別為小、大、boss機三種。然後給予這三種敵機不同的下落規則(即速度、出現的時間、是否伴隨子彈的發射等等)來給遊戲適當的增加點難度。

1.飛機是在一開始的時候就出現的,先出現什麼飛機?速度?什麼位置出現?頻率?

先出小飛機,再出大飛機,當所有的大小飛機都消失以後出現boss機.

小飛機的速度較快:8 大飛機的速度較慢:4 boss機的速度最慢:2

頻率:每隔1秒出現一架小飛機,每出現4架小飛機後出現一架大飛機,最後出現boss機.

位置:在窗體的範圍內,考慮到png的高度和寬度,所以出現的時候注意減去相應的高度和寬度.

2.小飛機,大飛機,boss機需要使用不同的vector類來儲存,取出的時候再使用乙個vector類來儲存(儲存的時候應該

將三個vector類中原來的飛機移除).再將儲存起來的飛機依次進行畫出.當出現4架小飛機的時候就出現一架大飛機,當

小飛機和大飛機都出現完了以後,出現boss機.注意:大飛機和boss機的時候伴隨著子彈的發出.

3.子彈:

子彈在大飛機和boss機出現的時候出現.且速度優於大飛機和boss機.因為小飛機沒有子彈,在這裡我們利用byte標記

來區別於小飛機和其他兩種飛機,另外也需要將子彈標記,以防止子彈生成子彈。

4.使用兩個執行緒:

(1)乙個執行緒用來實現將不同的vector向量取出的飛機(先將大小飛機取出以後,再取出boss機,每取一次小飛機的

時候將count記一次數,當count==4的時候,取出一架大飛機.當小飛機和大飛機全部取完以後再取出boss機),並儲存在乙個

統一的vector向量中.

(2)另乙個執行緒用來實現畫飛機和子彈並使其移動.

5.效果圖出現過於閃爍的情況可以利用雙緩衝技術來減少閃爍。

以下是**主類,主要生成窗體和敵機,並將敵機儲存在不同的vector向量中。

public

class

ballmain

public

void

init()

public

void

initplane

(jframe frame)

// 大飛機的生成

for(

int i =

0; i <

2; i++

)// boss機的生成

imageicon icon =

newimageicon

("plane/plane2.png");

int r = icon.

geticonwidth()

/2;int x = rand.

nextint

(frame.

getwidth()

- icon.

geticonwidth()

)+ r;

int y =

-icon.

geticonheight()

;int vy =2;

ball b =

newball

(icon.

getimage()

, x, y, r, vy,

(byte)3

);bossvector.

add(b);}

}

以下為飛機的下落規則:

public

ballthread

(vector

vector, vector

minvector,

vector

maxvector, vector

bossvector, jframe frame)

public

void

run()}

}if(vector.

size()

==0)try

catch

(interruptedexception e)}}

}

利用雙緩衝減少閃爍,畫出飛機並擦除,使其不斷更新位置:

public

class

ballgrathread

extends

thread

public

void

run(

)while

(true

) g.

drawimage

(image,0,

0, frame)

;try

catch

(interruptedexception e)}}

}

子彈類,標記子彈來區分三種敵機,當飛機和子彈飛出窗體外後將其移除與vector:

public

class

ball

public

void

move

(vector

vector, jframe frame, graphics g)}if

(y >= frame.

getheight()

) y = y + vy;

}public

void

draw

(graphics g)

}

畫出子彈並新增於vector向量中,使其移動:

public

class

bulletthread

extends

thread

public

void

run(

)try

catch

(interruptedexception e)}}

}

以上差不多就是敵機的下落,其他的一些功能尚未完善,比如可以給敵機新增不同的血量再來增加難度,大家可以根據自己的發揮來寫出屬於自己的飛機大戰遊戲。

使用jQuery實現簡單的飛機大戰

飛機大戰 實現思路 物件 飛機 子彈 敵機 實現思路 獲取飛機 使飛機從螢幕中間生成 為飛機新增按鍵效果 實現按鍵生成子彈效果 並設定子彈之間的時間間隔 通過setinterval方法實現根據時間建立敵機物件 通過setinterval方法使子彈與敵機都成垂直移動 寫出乙個判斷兩個物件是否碰撞的方法...

飛機大戰的思路

首先要用function createuser 建構函式建立乙個飛機的類,然後用 new操作符去例項化使用者飛機物件,在函式 createuser 中新增使用者飛機運動的方法。用例項化後的飛機物件去呼叫這個方法。在使用者飛機運動到敵機座標位置範圍內時,倆飛機相撞,清除所有計時器,遊戲結束。funct...

C語言實現簡單的飛機大戰

定義四個函式實現飛機大戰 include include include 定義全域性變數 int high,width 定義邊界 int position x,position y 飛機位置 int bullet x,bullet y 子彈位置 int enemy x,enemy y int sco...