在實現這個遊戲之前,我們首先需要知道專案可能要用到哪些知識點:
重繪,執行緒,雙緩衝,資料結構的應用
差不多是這大概有這些,如果不夠的話我們再加。
首先,我們應該實現敵機下落,在這裡大概思路和利用執行緒使小球下落差不多。不同的是,我在這裡用到了三種敵機,分別為小、大、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...