?? planestart.java
字號:
import java.io.IOException;
import java.util.Random;
import java.util.Timer;
import java.util.TimerTask;
import javax.microedition.lcdui.*;
public class PlaneStart extends Canvas {
Image imgBack, imgPlane1, imgBullet, imgPlaneLeft1, imgPlaneRight1,
imgPlane2, imgPlaneLeft2, imgPlaneRight2, imgFire1, imgFire2,
imgFire3, imgEnemy1, imgEnemy2, imgEnemy3, imgEnemy4, imgEnemy5,
imgBomb1, imgBomb2, imgLife, FireAction;
Random r = new Random();
PlaneMove PM = new PlaneMove();
DrawEnemy DE = new DrawEnemy();
int ChooseAction;//選擇飛機
int LifeAction = 3;//飛機生命
Timer time = new Timer();
int BackMoveY = -540;//背景移動
int PlaneMoveAction = 2;//飛機移動狀態
int MovePlaneX = 80, MovePlaneY = 130, MoveBulletX = 80, MoveBulletY = 100;//飛機和子彈初始坐標
int EnemyX1, EnemyX2, EnemyX3, EnemyX4, EnemyX5, EnemyY = 0, EnemyY1,
EnemyY2, EnemyY3, EnemyY4, EnemyY5;
int SpeedY = 1;//飛機移動速度
int BombX = 0, BombY = 0;
int Num = 0;
//調用線程
public PlaneStart() {
RamCreat();
time.schedule(PM, 10, 100);
time.schedule(DE, 0, 50);
}
public void paint(Graphics g) {
g.setColor(255, 255, 255);
g.fillRect(0, 0, getWidth(), getHeight());
g.drawImage(imgBack, 0, BackMoveY, 0);
DrawLife(g);
if ((EnemyY == 0) || (EnemyY == 180)) {
RamCreat();
}
DrawEnemy(g);
Bullet(g);
HitTest(g);
g.setColor(0, 0, 0);
g.drawString("得分:" + String.valueOf(Num), 130, 0, 0);
if (ChooseAction == 1) {
Plane1(g);
Fire(g);
}
if (ChooseAction == 2) {
Plane2(g);
Fire(g);
}
}
//調圖片
public void LoadImg() {
try {
imgBack = Image.createImage("/Back.png");
imgPlane1 = Image.createImage("/Plane1.png");
imgPlaneLeft1 = Image.createImage("/PlaneLeft1.png");
imgPlaneRight1 = Image.createImage("/PlaneRight1.png");
imgPlane2 = Image.createImage("/Plane2.png");
imgPlaneLeft2 = Image.createImage("/PlaneLeft2.png");
imgPlaneRight2 = Image.createImage("/PlaneRight2.png");
imgBullet = Image.createImage("/Bullet.png");
imgFire1 = Image.createImage("/Fire1.png");
imgFire2 = Image.createImage("/Fire2.png");
imgFire3 = Image.createImage("/Fire3.png");
imgEnemy1 = Image.createImage("/Enemy1.png");
imgEnemy2 = Image.createImage("/Enemy2.png");
imgEnemy3 = Image.createImage("/Enemy3.png");
imgEnemy4 = Image.createImage("/Enemy4.png");
imgEnemy5 = Image.createImage("/Enemy5.png");
imgBomb1 = Image.createImage("/Bomb1.png");
imgBomb2 = Image.createImage("/Bomb2.png");
imgLife = Image.createImage("/Life.png");
} catch (IOException e) {
}
}
//畫左上角飛機生命
public void DrawLife(Graphics g) {
if ((LifeAction == 3) || (LifeAction == 2) || (LifeAction == 1)) {
g.drawImage(imgLife, 5, 5, 0);
}
if ((LifeAction == 3) || (LifeAction == 2)) {
g.drawImage(imgLife, 13, 5, 0);
}
if (LifeAction == 3) {
g.drawImage(imgLife, 21, 5, 0);
}
}
//創建隨機數
public void RamCreat() {
int EnemyRam1 = (r.nextInt() >>> 1) % 15;
EnemyX1 = EnemyRam1;
int EnemyRam2 = (r.nextInt() >>> 1) % 40 + 35;
EnemyX2 = EnemyRam2;
int EnemyRam3 = (r.nextInt() >>> 1) % 50 + 45;
EnemyX3 = EnemyRam3;
int EnemyRam4 = (r.nextInt() >>> 1) % 80 + 75;
EnemyX4 = EnemyRam4;
int EnemyRam5 = (r.nextInt() >>> 1) % 100 + 95;
EnemyX5 = EnemyRam5;
int EnemyYRam1 = (r.nextInt() >>> 1) % 30;
EnemyY1 = EnemyYRam1;
int EnemyYRam2 = (r.nextInt() >>> 1) % 30;
EnemyY2 = EnemyYRam2;
int EnemyYRam3 = (r.nextInt() >>> 1) % 30;
EnemyY3 = EnemyYRam3;
int EnemyYRam4 = (r.nextInt() >>> 1) % 30;
EnemyY = EnemyYRam4;
int EnemyYRam5 = (r.nextInt() >>> 1) % 30;
EnemyY5 = EnemyYRam5;
}
//畫爆炸效果
public void DrawBomb(Graphics g) {
for (int i = 1; i < 500; i++) {
g.drawImage(imgBomb1, BombX, BombY, 0);
g.drawImage(imgBomb2, BombX, BombY, 0);
}
}
//畫敵機
public void DrawEnemy(Graphics g) {
g.drawImage(imgEnemy1, EnemyX1, EnemyY + EnemyY1, 0);
g.drawImage(imgEnemy2, EnemyX2, EnemyY + EnemyY2, 0);
g.drawImage(imgEnemy3, EnemyX3, EnemyY + EnemyY3, 0);
g.drawImage(imgEnemy4, EnemyX4, EnemyY + EnemyY4, 0);
g.drawImage(imgEnemy5, EnemyX5, EnemyY + EnemyY5, 0);
}
//畫飛機尾氣
public void Fire(Graphics g) {
g.drawImage(FireAction, MovePlaneX, MovePlaneY + 30, 0);
}
//第一類飛機
public void Plane1(Graphics g) {
if (PlaneMoveAction == 0) {
g.drawImage(imgPlaneLeft1, MovePlaneX, MovePlaneY, 0);
}
if (PlaneMoveAction == 1) {
g.drawImage(imgPlaneRight1, MovePlaneX, MovePlaneY, 0);
}
if (PlaneMoveAction == 2) {
g.drawImage(imgPlane1, MovePlaneX, MovePlaneY, 0);
}
if (PlaneMoveAction == 3) {
g.drawImage(imgPlane1, MovePlaneX, MovePlaneY, 0);
}
if (PlaneMoveAction == 4) {
g.drawImage(imgPlane1, MovePlaneX, MovePlaneY, 0);
}
}
//第二類飛機
public void Plane2(Graphics g) {
if (PlaneMoveAction == 0) {
g.drawImage(imgPlaneLeft2, MovePlaneX, MovePlaneY, 0);
}
if (PlaneMoveAction == 1) {
g.drawImage(imgPlaneRight2, MovePlaneX, MovePlaneY, 0);
}
if (PlaneMoveAction == 2) {
g.drawImage(imgPlane2, MovePlaneX, MovePlaneY, 0);
}
if (PlaneMoveAction == 3) {
g.drawImage(imgPlane2, MovePlaneX, MovePlaneY, 0);
}
if (PlaneMoveAction == 4) {
g.drawImage(imgPlane2, MovePlaneX, MovePlaneY, 0);
}
}
//畫子彈
public void Bullet(Graphics g) {
MoveBulletX = MovePlaneX;
if (MoveBulletY < 0) {
MoveBulletY = MovePlaneY;
}
for (int i = 0; i < 2; i++) {
MoveBulletY = MoveBulletY - 1;
g.drawImage(imgBullet, MoveBulletX, MoveBulletY, 0);
}
repaint();
}
//碰撞檢測
public void HitTest(Graphics g) {
if (MoveBulletX < (EnemyX1 + 20) && MoveBulletX > EnemyX1) {
if (MoveBulletY < (EnemyY + EnemyY1 + 20)
&& MoveBulletY > (EnemyY + EnemyY1)) {
BombX = MoveBulletX;
BombY = MoveBulletY;
EnemyX1 = -100;
DrawBomb(g);
Num++;
}
}
if (MoveBulletX < (EnemyX2 + 20) && MoveBulletX > EnemyX1) {
if (MoveBulletY < (EnemyY + EnemyY2 + 20)
&& MoveBulletY > (EnemyY + EnemyY2)) {
BombX = MoveBulletX;
BombY = MoveBulletY;
EnemyX2 = -100;
DrawBomb(g);
Num++;
}
}
if (MoveBulletX < (EnemyX3 + 20) && MoveBulletX > EnemyX3) {
if (MoveBulletY < (EnemyY + EnemyY3 + 20)
&& MoveBulletY > (EnemyY + EnemyY3)) {
BombX = MoveBulletX;
BombY = MoveBulletY;
EnemyX3 = -100;
DrawBomb(g);
Num++;
}
}
if (MoveBulletX < (EnemyX4 + 20) && MoveBulletX > EnemyX4) {
if (MoveBulletY < (EnemyY + EnemyY4 + 20)
&& MoveBulletY > (EnemyY + EnemyY4)) {
BombX = MoveBulletX;
BombY = MoveBulletY;
EnemyX4 = -100;
DrawBomb(g);
Num++;
}
}
if (MoveBulletX < (EnemyX5 + 20) && MoveBulletX > EnemyX5) {
if (MoveBulletY < (EnemyY + EnemyY5 + 20)
&& MoveBulletY > (EnemyY + EnemyY5)) {
BombX = MoveBulletX;
BombY = MoveBulletY;
EnemyX5 = -100;
DrawBomb(g);
Num++;
}
}
if (MovePlaneX < (EnemyX1 + 20) && MovePlaneX > EnemyX1) {
if (MovePlaneY < (EnemyY + EnemyY1 + 20)
&& MovePlaneY > (EnemyY + EnemyY1)) {
LifeAction--;
repaint();
}
}
if (MovePlaneX < (EnemyX2 + 20) && MovePlaneX > EnemyX2) {
if (MovePlaneY < (EnemyY + EnemyY2 + 20)
&& MovePlaneY > (EnemyY + EnemyY2)) {
LifeAction--;
repaint();
}
}
if (MovePlaneX < (EnemyX3 + 20) && MovePlaneX > EnemyX3) {
if (MovePlaneY < (EnemyY + EnemyY3 + 20)
&& MovePlaneY > (EnemyY + EnemyY3)) {
LifeAction--;
repaint();
}
}
if (MovePlaneX < (EnemyX4 + 20) && MovePlaneX > EnemyX4) {
if (MovePlaneY < (EnemyY + EnemyY4 + 20)
&& MovePlaneY > (EnemyY + EnemyY4)) {
LifeAction--;
repaint();
}
}
if (MovePlaneX < (EnemyX5 + 20) && MovePlaneX > EnemyX5) {
if (MovePlaneY < (EnemyY + EnemyY5 + 20)
&& MovePlaneY > (EnemyY + EnemyY5)) {
LifeAction--;
repaint();
}
}
}
//控制飛機前后左右移動
public void keyPressed(int KeyCode) {
if ((KeyCode == getKeyCode(Canvas.LEFT)) || (KeyCode == KEY_NUM4)) {
PlaneMoveAction = 0;
FireAction = imgFire1;
}
if ((KeyCode == getKeyCode(Canvas.RIGHT)) || (KeyCode == KEY_NUM6)) {
PlaneMoveAction = 1;
FireAction = imgFire1;
}
if ((KeyCode == getKeyCode(Canvas.UP)) || (KeyCode == KEY_NUM2)) {
PlaneMoveAction = 3;
FireAction = imgFire3;
}
if ((KeyCode == getKeyCode(Canvas.DOWN)) || (KeyCode == KEY_NUM8)) {
PlaneMoveAction = 4;
FireAction = imgFire2;
}
}
//出敵機線程
class DrawEnemy extends TimerTask {
public void run() {
if (Num == 20) {
SpeedY = 3;
}
if (Num == 40) {
SpeedY = 5;
}
if (Num == 60) {
SpeedY = 7;
}
if (Num == 80) {
SpeedY = 9;
}
if (Num == 100) {
SpeedY = 11;
}
if (EnemyY >= 0) {
EnemyY = EnemyY + SpeedY;
}
repaint();
}
}
//控制飛機,背景線程
class PlaneMove extends TimerTask {
public void run() {
if (BackMoveY <= 0) {
BackMoveY = BackMoveY + 2;
}
if (BackMoveY > 0) {
BackMoveY = -540;
}
if (PlaneMoveAction == 0) {
if (MovePlaneX <= 0) {
MovePlaneX = 0;
}
MovePlaneX = MovePlaneX - 4;
}
if (PlaneMoveAction == 1) {
if (MovePlaneX >= 147) {
MovePlaneX = 147;
}
MovePlaneX = MovePlaneX + 4;
}
if (PlaneMoveAction == 3) {
if (MovePlaneY <= 0) {
MovePlaneY = 5;
}
MovePlaneY = MovePlaneY - 5;
}
if (PlaneMoveAction == 4) {
if (MovePlaneY >= 130) {
MovePlaneY = 130;
}
MovePlaneY = MovePlaneY + 5;
}
repaint();
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -