亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? missile.java~1~

?? 手機上一個坦克游戲
?? JAVA~1~
字號:
package demo;

/**
 * <p>Title: </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2003</p>
 * <p>Company: </p>
 * @author not attributable
 * @version 1.0
 */

import java.io.IOException;
import java.io.PrintStream;
import javax.microedition.lcdui.*;
import net.jscience.util.MathFP;

public class Missile
    implements Runnable {

    //導彈的速率
    private boolean isMain;
    private int speed;
    public int demage;
    //得到導彈發射裝置的發射角度
    private int angle;
    private Image pic; //導彈的圖片
    private Thread ctlThread;
    public BattleField battleCanvas;
    public Tank tank; //歸屬的坦克類
    public int direction;
    public boolean isCrash; //是否爆炸
    private Image img;
    private int barrelEndX; //導彈發射裝置末尾的x坐標
    private int barrelEndY; //導彈發射裝置末尾的y坐標
    public int m_x; //導彈的x坐標
    public int m_y; //導彈的y坐標
    public int attackRadius;
    static final int s = MathFP.toFP("0.0174532");

    // 以下是一些中間計算用的變量
    int m;
    int f;
    int c;
    int t;
    int j;
    int q;
    int p;
    int d;

    public Missile(Tank e1, BattleField d1, boolean main, int angle_add) throws // e1 是發射的坦克
        ArrayIndexOutOfBoundsException {

        //toFP("0.1")
        m = MathFP.toFP("0.1");
        //toFP(0.1")
        f = MathFP.toFP("0.1");

        //System.out.println("init f: " + f);
        //toFP("9.82")
        c = MathFP.toFP("9.82");
        //System.out.println("init c:" + c);
        //toFP(0.5")
        t = MathFP.toFP("0.5");
        //System.out.println("init t:" + t);
        isMain = main;
        tank = (Tank) e1; //它是為那個坦克創建,并把創建者得到
        pic = creatMisslePic(); //Create Image
        direction = tank.direction;
        demage = ( (Tank) e1).basicDamage;
        attackRadius = tank.attackRadius;
        battleCanvas = d1; //pass thought the dl(may be the environment)
        speed = tank.speed; //導彈的速率
        angle = tank.angle + angle_add; //得到炮管的發射角度
        barrelEndX = tank.tank_x + tank.direction * 8;
        barrelEndY = tank.tank_y - 8;
        //System.out.println("tank.tank_x = " + tank.tank_x);
        //System.out.println("tank.tank_y = " + tank.tank_y);
        //System.out.println("tank.dir = " + tank.direction);
        setMissleX(tank.tank_x + tank.direction * 8); //炮管末尾的x坐標
        setMissleY(tank.tank_y - 8); //炮管末尾的y坐標
        //System.out.println("m_x = " + m_x);
        //System.out.println("m_y = " + m_y);
        //j = 角度* 0.0174532
        j = MathFP.mul(MathFP.toFP(angle), s);
        //q = cos(j)
        q = MathFP.cos(j);
        //p = sin(j)
        p = MathFP.sin(j);
        //d = toFP(l)速率
        d = MathFP.toFP(speed);

        ctlThread = new Thread(this); // 開始一個導彈線程
        ctlThread.start();
    }

    public Image creatMisslePic() {
        try {
            img = Image.createImage("/demo/res/bullet.png");
        }
        catch (IOException ioexception) {
            ioexception.printStackTrace();
        }
        return img;
    }

    //設置導彈發射裝置末尾的x坐標
    public void setMissleX(int i1) {
        m_x = i1;
    }

    //設置導彈發射裝置末尾的y坐標
    public void setMissleY(int i1) {
        m_y = i1;
    }

    //得到導彈x坐標
    /*public int getMissleX() {
        return m_x;
    }

    //得到導彈的y坐標
    public int getMissleY() {
        return m_y;
    }*/

    //導彈坐標確定公式
    // 速率 velocity 角度 angle 系數 f
    //x = velocity * cos(angle) * f
    //tmp = velocity * sin(angle)*f - 0.5*9.85*f*f
    //y = tmp - 2*tmp + 原始y坐標
    //f = f + 0.1
    public void run() throws NullPointerException {
        //System.out.println("missile run!");
        while (!isCrash) {
            if (m_x < battleCanvas.MAP_WIDTH && m_x > 0 &&
                m_y > 0 && m_y < battleCanvas.screen_h) { // 在地圖范圍內
                //System.out.println("in map!!!!!!!");
                if (!battleCanvas.isClision(this)) { //如果沒有碰到任何東西,也就是不爆炸
                    //System.out.println("d: " + d + "q: " + q + " t : " + "f: " + f + t + " p: " + p);
                    if (tank.direction == 1) { //向右
                        //i1 = 速率* cos(角度)*f
                        int i1 = MathFP.mul(MathFP.mul(d, q), f); // f = MathFP.toFP("0.1");q = cos(角度* 0.0174532);d = MathFP.toFP(speed);
                        int new_x = MathFP.toInt(i1) + barrelEndX; //確定x坐標
                        //System.out.println("right m_x = " + m_x);
                        if (new_x >
                            battleCanvas.screen_w * 3 / 4 -
                            battleCanvas.SCREEN_X &&
                            -battleCanvas.SCREEN_X <
                            battleCanvas.MAP_WIDTH - battleCanvas.screen_w) {
                            //System.out.println("need translate m_x = " + m_x);
                            int trans = - (new_x - m_x);
                            //System.out.println("right trans = " + trans);
                            battleCanvas.setTranslateX(trans);

                        }
                        m_x = new_x;
                    }
                    if (tank.direction == -1) { //向左
                        //j1 = 速率* cos(角度)*f
                        int j1 = MathFP.mul(MathFP.mul(d, q), f);
                        //System.out.println("j1: " + j1 + " t : " + t + " p: " + p);
                        int new_x = barrelEndX - MathFP.toInt(j1);
                        if (new_x <
                            -battleCanvas.SCREEN_X + battleCanvas.screen_w / 4 &&
                            battleCanvas.SCREEN_X < 0) {
                            //System.out.println("left m_x = " + m_x);
                            int trans = - (new_x - m_x);
                            battleCanvas.setTranslateX(trans);

                        }
                        m_x = new_x;
                    }
                    //k1 = 速率*sin(角度)*f  - 0.5*9.82*f*f
                    int k1 = MathFP.sub(MathFP.mul(MathFP.mul(d, p), f),
                                        MathFP.mul(t,
                        MathFP.mul(c, MathFP.mul(f, f))));

                    k1 = (MathFP.toInt(k1) - 2 * MathFP.toInt(k1)) + barrelEndY;
                    int new_y = k1;
                    if(new_y < m_y){ // 向上
                        if (new_y <
                            battleCanvas.screen_h / 4 - battleCanvas.SCREEN_Y &&
                            battleCanvas.SCREEN_Y > 0) {
                            battleCanvas.setTranslateY(Math.min(m_y - new_y,
                                - (battleCanvas.MAP_HEIGHT -
                                   battleCanvas.screen_h))
                                );
                        }
                    }else{ // 向下
                        if (new_y >
                            battleCanvas.screen_h * 3 / 4 -
                            battleCanvas.SCREEN_Y &&
                            -battleCanvas.SCREEN_Y <=
                            battleCanvas.MAP_HEIGHT - battleCanvas.screen_h) {
                            battleCanvas.setTranslateY( -Math.min(new_y - m_y,
                                  battleCanvas.MAP_HEIGHT -
                                  battleCanvas.screen_h + battleCanvas.SCREEN_Y));
                        }
                    }
                    m_y = new_y;
                    //f = f + 0.1
                    f = MathFP.add(f, m);

                }
                else {
                    //在現在的屏幕范圍內爆炸,不再畫彈頭了
                    isCrash = true;
                }
            }
            else { //超出了屏幕范圍

                //System.out.println("out out out map!!!!!!!");
                isCrash = true;
            }

            if (isCrash) { // 如果已經爆炸了
                if (m_x < battleCanvas.MAP_WIDTH && m_x >= 0 &&
                    m_y > 0 && m_y < battleCanvas.screen_h) {
                    battleCanvas.crash.addElement(new Animation(battleCanvas, 3,
                        "/demo/res/explosion/explosion", 12, this));
                }
                else {
                    battleCanvas.repaint(0, 0, battleCanvas.MAP_WIDTH,
                                         battleCanvas.screen_h);
                }

                if (isMain && !tank.userName.equals(battleCanvas.userName)) { // 如果是主導彈,并且不是自己發的,控制戰場;
                    //System.out.println("before main missile set next Tank!!!!!");
                    try {
                        ctlThread.sleep(50L);
                    }
                    catch (InterruptedException ex) {
                        ex.printStackTrace();
                    }


                    battleCanvas.now = battleCanvas.nextTank();
                    //System.out.println("***********init tank_x************ " +
                                      // battleCanvas.now.tank_x);
                    //System.out.println("***********init tank_y************ " +
                                      // battleCanvas.now.tank_y);
                    battleCanvas.now.setInit();
                    if (battleCanvas.now.userName.equals(battleCanvas.userName)) {
                      // System.out.println(
                           //"missile set GAME_VIEW!!!!!!!!!!!!!!!!!!!!!!!!!!!");
                       battleCanvas.gameStatus = battleCanvas.GAME_VIEW;
                   }
                   else {
                       //System.out.println(
                           //"missile set GAME_OTHERS!!!!!!!!!!!!!!!!!!!!!!!!!!!");
                       battleCanvas.gameStatus = battleCanvas.GAME_OTHERS;
                   }

                    battleCanvas.sentMissile = false; //發射導彈標志位設置為false

                    if (battleCanvas.now.tank_x > battleCanvas.screen_w / 2 &&
                        battleCanvas.now.tank_x <
                        battleCanvas.MAP_WIDTH - battleCanvas.screen_w / 2) { //滾屏
                        battleCanvas.scrollScreenX(battleCanvas.now.tank_x -
                                                  battleCanvas.screen_w / 2);

                    }
                    else {
                        if (battleCanvas.now.tank_x < battleCanvas.screen_w / 2) {
                            battleCanvas.scrollScreenX(0);
                        }
                        if (battleCanvas.now.tank_x >
                            battleCanvas.MAP_WIDTH - battleCanvas.screen_w / 2) {
                            battleCanvas.scrollScreenX(battleCanvas.MAP_WIDTH -
                                battleCanvas.screen_w);
                        }

                    }
                    //攻擊力$導彈個數$攻擊范圍$移動力$  改回原來被修改的值
                    battleCanvas.repaint(0, 0, battleCanvas.MAP_WIDTH,
                                         battleCanvas.screen_h);
                    battleCanvas.serviceRepaints();
                    return;
                }
            }

            battleCanvas.repaint(0, 0, battleCanvas.MAP_WIDTH,
                                 battleCanvas.screen_h);
            battleCanvas.serviceRepaints();
        }
    }

    //畫出導彈
    public void paint(Graphics g1) {
        if (!isCrash) {
            //System.out.println("paint missile in " + isMain);
            g1.drawImage(img, m_x, m_y, 20);
        }
    }

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩电影一区| 欧美午夜精品电影| 日韩三级中文字幕| 亚洲欧美另类久久久精品| 麻豆成人综合网| 欧洲精品一区二区| 国产精品女同一区二区三区| 美女尤物国产一区| 欧美日韩中文字幕一区二区| 亚洲欧洲日韩在线| 国产乱码精品1区2区3区| 欧美一区二区啪啪| 亚洲一区二区五区| 91在线免费视频观看| 久久精品欧美一区二区三区不卡 | 欧美午夜在线观看| 国产精品私人影院| 国产精品自拍一区| 精品久久五月天| 免费一区二区视频| 7777精品久久久大香线蕉| 亚洲一区在线观看免费| 色综合色综合色综合色综合色综合| 久久久不卡网国产精品二区| 看国产成人h片视频| 欧美精品色一区二区三区| 亚洲一区二区精品久久av| 色综合久久天天| 亚洲精品一二三| 色综合久久久久久久久久久| 亚洲欧洲成人自拍| 国产成人免费xxxxxxxx| 久久新电视剧免费观看| 久久国产福利国产秒拍| 欧美成人欧美edvon| 久久av老司机精品网站导航| 日韩一区二区视频在线观看| 免费久久精品视频| 日韩欧美电影一区| 九九国产精品视频| 久久久蜜桃精品| 风流少妇一区二区| 国产精品久久久久久妇女6080| 成人av网站免费| 亚洲日本va在线观看| 9色porny自拍视频一区二区| 中文字幕亚洲视频| 91亚洲男人天堂| 一区二区三区国产精品| 欧美自拍偷拍一区| 日欧美一区二区| 欧美大胆一级视频| 国产福利精品一区二区| 国产精品国产三级国产三级人妇| 91老司机福利 在线| 一区二区欧美在线观看| 欧美精品日韩一区| 久久黄色级2电影| 久久久精品蜜桃| av网站一区二区三区| 亚洲精品欧美激情| 91精品啪在线观看国产60岁| 久久99九九99精品| 中文字幕第一区二区| 91久久久免费一区二区| 天天综合色天天综合色h| 精品成人私密视频| 成人av在线影院| 亚洲国产一区二区三区青草影视 | 色婷婷精品大在线视频| 日日骚欧美日韩| 久久久久久久久久久久电影| av日韩在线网站| 五月综合激情婷婷六月色窝| 日韩精品一区二区三区视频| 成人一区二区三区在线观看| 亚洲精品亚洲人成人网| 日韩一区二区三区电影在线观看 | 欧美精品少妇一区二区三区 | 亚洲综合在线电影| 欧美一级夜夜爽| 国产91露脸合集magnet | 久久精品视频免费观看| 色播五月激情综合网| 美女脱光内衣内裤视频久久影院| 国产精品少妇自拍| 欧美精品一二三区| 成人动漫精品一区二区| 日韩国产精品久久久| 久久精品在这里| 欧美日韩高清一区| 国产99久久久国产精品潘金| 亚洲国产精品综合小说图片区| 精品国产乱子伦一区| 色综合久久九月婷婷色综合| 久热成人在线视频| 亚洲蜜桃精久久久久久久| 欧美大片在线观看一区二区| 日本高清不卡aⅴ免费网站| 精品亚洲免费视频| 一卡二卡三卡日韩欧美| 久久久亚洲精品一区二区三区| 欧洲色大大久久| 国产99久久久国产精品| 石原莉奈一区二区三区在线观看| 国产精品久久久久久久浪潮网站| 欧美一区二区在线免费播放| 99久久免费国产| 激情文学综合插| 一区二区成人在线| 中文字幕成人网| 日韩欧美色综合| 欧美性欧美巨大黑白大战| 国产精品99久久久久久久女警 | 国产精品久久国产精麻豆99网站| 91精品国产综合久久久久| 99国产精品久久久久| 美女网站在线免费欧美精品| 夜夜亚洲天天久久| 亚洲欧洲av在线| 久久久精品免费免费| 欧美一级高清片在线观看| 欧美丝袜丝nylons| 不卡的电影网站| 国产精品1区2区| 美腿丝袜一区二区三区| 亚洲gay无套男同| 一级日本不卡的影视| 亚洲欧洲韩国日本视频| 国产亚洲成年网址在线观看| 日韩欧美国产1| 91精品国产综合久久福利| 欧美在线视频日韩| 99re亚洲国产精品| 成人精品gif动图一区| 国产在线一区二区综合免费视频| 日韩国产一二三区| 午夜在线成人av| 一区二区三区在线观看欧美| 国产精品乱码妇女bbbb| 国产区在线观看成人精品 | 91精品国产综合久久精品麻豆| 一本久道久久综合中文字幕| 成人免费观看视频| 成人国产精品免费网站| 国产91精品入口| 成人午夜精品一区二区三区| 丁香激情综合五月| 福利电影一区二区| 福利电影一区二区三区| 56国语精品自产拍在线观看| 欧美日韩在线直播| 欧美日韩成人高清| 欧美日韩国产美女| 欧美日本一区二区三区| 欧美区视频在线观看| 欧美丰满一区二区免费视频| 欧美日韩精品综合在线| 欧美日韩亚洲综合在线 | 91麻豆.com| 欧美自拍偷拍午夜视频| 欧洲精品一区二区| 欧美日韩午夜在线| 日韩一区二区麻豆国产| 91精品国产综合久久精品| 日韩午夜激情视频| 精品国产青草久久久久福利| 久久综合五月天婷婷伊人| 国产亚洲va综合人人澡精品| 国产午夜精品久久久久久久| 538在线一区二区精品国产| 亚洲综合色在线| 日本韩国一区二区三区视频| 亚洲一区二区三区四区中文字幕| 欧美日本高清视频在线观看| 久国产精品韩国三级视频| 在线观看一区不卡| 日本欧美肥老太交大片| 国产三级欧美三级| 欧洲亚洲国产日韩| 粉嫩欧美一区二区三区高清影视| 亚洲一区二区三区激情| 国产精品灌醉下药二区| 欧美日韩不卡视频| 3d动漫精品啪啪1区2区免费| 精品国产sm最大网站| 欧美激情一区二区三区四区| 亚洲色图欧美激情| 亚洲一区二区偷拍精品| 美国三级日本三级久久99| 国产传媒欧美日韩成人| 在线观看日韩一区| 欧美电视剧免费观看| 亚洲欧美怡红院| 日韩国产欧美在线播放| 成人一区二区三区| 欧美日韩在线播放| 久久久久久麻豆| 亚洲一区二区欧美| 国产精品亚洲а∨天堂免在线|