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

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

?? claw.java

?? goldminer游戲
?? JAVA
字號:
package com.hbwhzdg.goldminer.gamecore.sprites;

import java.awt.geom.Line2D;
import java.util.HashMap;

import com.hbwhzdg.goldminer.gamecore.ScreenManager;
import com.hbwhzdg.goldminer.graphics.Animation;
import com.hbwhzdg.goldminer.graphics.Sprite;

/**
 * <p>Title: 挖礦爪子</p>
 *
 * <p>Description: 擺動以及伸長,所爪的東西。</p>
 * <p>未爪到物品時,顯示繩索和抓。</p>
 * <p>當爪到物品后,顯示繩索以及所爪的東西。將所爪東西的角色動畫加入到本角色中,刪掉原角色。</p>
 *
 * <p>Copyright: Copyright (c) 2006</p>
 *
 * <p>Company: </p>
 *
 * @author rocken.zeng@gmail.com
 * @version 1.0
 */
public class Claw extends Sprite {
    private int clawState = 0; //爪子狀態
    private Line2D.Double rope = new Line2D.Double(); //繩索
    private double length; //繩索的長度
    private double orgLength = 22; //繩索的原始長度
    private double putOutSpeed = 0.5; //爪子放出的速度,以毫秒為單位。
    private double takeBackSpeed = 0.5; //爪子爪空收回的速度。
    private HashMap allSpeed = new HashMap(); //爪住不同的物品回收速度不同,越大的物品越慢。
    private double stopTime = 2; //將物品爪回后,停多少毫秒后再擺動
    private double nStopTime = 0;
    private Sprite clawedSprite = null; //被爪起的物品。
    private Sprite prizeSprite = null; //被爪物品的獎品。
    //繩索在原坐標體系的坐標。
    //起點
    private double startOrgX = 0;
    private double startOrgY = 0;
    //終點
    private double endOrgX = 0;
    private double endOrgY = 0;
    //屏幕大小
    ScreenManager sm = ScreenManager.getInstance();
    private double screenWidth = sm.getWidth();
    private double screenHeight = sm.getHeight();
    private double orgAngle = 20; //偏轉角度
    private double minAngle = 20; //最小角度
    private double angleSpeed = 1; //每毫秒轉動的角度數
    private boolean way = false; //爪子轉動方向

    public Claw(Animation anim) {
        super(anim);
    }

    /**
     * 初始化爪子的起點坐標,圓周擺動的長度,最小角度,轉動的速率。
     * @param startOrgX double
     * @param startOrgY double
     * @param orgLength double
     * @param orgAngle double
     * @param angleSpeed double
     * @param nStopTime double
     */
    public void init(double nStartOrgX, double nStartOrgY, double nOrgLength,
                     double nMinAngle, double nAngleSpeed, double nPutOutSpeed,
                     double nTakeBackSpeed, double nStopTime) {
        if (nStartOrgX != -1) {
            this.startOrgX = nStartOrgX;
        }
        if (nStartOrgY != -1) {
            this.startOrgY = nStartOrgY;
        }
        if (nOrgLength != -1) {
            this.orgLength = nOrgLength;
            this.length = orgLength;
        }
        if (nMinAngle != -1) {
            this.minAngle = nMinAngle;
        }
        if (nAngleSpeed != -1) {
            this.angleSpeed = nAngleSpeed;
        }

        if (nPutOutSpeed != -1) {
            this.putOutSpeed = nPutOutSpeed;
        }

        if (nTakeBackSpeed != -1) {
            this.takeBackSpeed = nTakeBackSpeed;
        }

        if (nStopTime != -1) {
            this.stopTime = nStopTime * 1000;
            this.nStopTime = nStopTime * 1000;
        }

    }

    /**
     * 更新爪子的角度。
     * @param elapsedTime long
     */
    private void updateOrgAngle(long elapsedTime) {
        if (orgAngle <= minAngle) {
            way = false;
        } else if (orgAngle >= 180 - minAngle) {
            way = true;
        }
        if (way) {
            orgAngle -= elapsedTime * angleSpeed;
        } else {
            orgAngle += elapsedTime * angleSpeed;
        }

    }

    /**
     * 更新繩索。
     * @param elapsedTime long
     */
    private void updateRope(long elapsedTime) {
        if (orgAngle <= 90) {
            endOrgX = length * Math.cos(Math.PI / (180 / orgAngle)) + startOrgX;
        } else {
            endOrgX = -length * Math.cos(Math.PI / (180 / (180 - orgAngle))) +
                      startOrgX;
        }
        endOrgY = length * Math.sin(Math.PI / (180 / orgAngle)) + startOrgY;

        switch (clawState) {
        case 1:
            if (
                    (endOrgX - this.getWidth() / 2 > 0 &&
                     endOrgX + this.getWidth() / 2 < screenWidth)
                    && (endOrgY + this.getHeight() < screenHeight)
                    ) {
                length += putOutSpeed * elapsedTime;
            } else {
                //當爪子到屏幕邊界后,縮回。
                clawState = 2;
            }
            break;
        case 2:
            double backSpeed = takeBackSpeed;
            //爪到物品后的回收速度
            if (clawedSprite != null) {
                if (allSpeed.get(clawedSprite.getName()) != null) {
                    backSpeed = Double.parseDouble((String) allSpeed.get(
                            clawedSprite.getName()));
                }
            }
            length -= backSpeed * elapsedTime;
            if (length < orgLength) {
                length = orgLength;
                //當爪到物品后
                if (clawedSprite != null) {
                    nStopTime -= elapsedTime;
                    if (nStopTime <= 0) { //停留時間
                        clawState = 0;
                        setClawedSprite(null);
                        setPrize(null);
                        nStopTime = stopTime;
                    }
                } else {
                    clawState = 0;
                }
            }
            break;
        }
        rope.setLine(0, 0, 0, length);
    }

    /**
     * 更新整個挖礦爪子。
     * @param elapsedTime long
     */
    public void update(long elapsedTime) {
        super.update(elapsedTime);
        if (clawState == 0) {
            updateOrgAngle(elapsedTime);
        }
        updateRope(elapsedTime);
    }

    public Line2D.Double getRope() {
        return rope;
    }

    public Sprite getClawedSprite() {
        return clawedSprite;
    }

    public int getClawState() {
        return clawState;
    }

    public double getOrgLength() {
        return orgLength;
    }

    public double getOrgX() {
        return startOrgX;
    }

    public double getOrgY() {
        return startOrgY;
    }

    public double getLength() {
        return length;
    }

    public double getScreenHeight() {
        return screenHeight;
    }

    public double getScreenWidth() {
        return screenWidth;
    }

    public double getAngleSpeed() {
        return angleSpeed;
    }

    public double getEndOrgX() {
        return endOrgX;
    }

    public double getEndOrgY() {
        return endOrgY;
    }

    public double getMinAngle() {
        return minAngle;
    }

    public double getOrgAngle() {
        return orgAngle;
    }

    public double getStartOrgX() {
        return startOrgX;
    }

    public double getStartOrgY() {
        return startOrgY;
    }

    public double getPutOutSpeed() {
        return putOutSpeed;
    }

    public double getTakeBackSpeed() {
        return takeBackSpeed;
    }

    public Sprite getPrize() {
        return prizeSprite;
    }

    public HashMap getAllSpeed() {
        return allSpeed;
    }

    public void setClawedSprite(Sprite clawedSprite) {
        this.clawedSprite = clawedSprite;
    }

    /**
     * 設置爪子的狀態。<br>
     * 0:擺動;
     * 1:伸爪;
     * 2:收爪。
     * 根據爪子狀態的不同,礦工有不同的動作。
     * @param clawState int
     */
    public void setClawState(int clawState) {
        this.clawState = clawState;
    }

    public void setOrgLength(double orgLength) {
        this.orgLength = orgLength;
    }

    public void setOrgX(double orgX) {
        this.startOrgX = orgX;
    }

    public void setOrgY(double orgY) {
        this.startOrgY = orgY;
    }

    public void setLength(double length) {
        this.length = length;
    }

    public void setScreenHeight(double screenHeight) {
        this.screenHeight = screenHeight;
    }

    public void setScreenWidth(double screenWidth) {
        this.screenWidth = screenWidth;
    }

    public void setAngleSpeed(double angleSpeed) {
        this.angleSpeed = angleSpeed;
    }

    public void setEndOrgX(double endOrgX) {
        this.endOrgX = endOrgX;
    }

    public void setEndOrgY(double endOrgY) {
        this.endOrgY = endOrgY;
    }

    public void setMinAngle(double minAngle) {
        this.minAngle = minAngle;
    }

    public void setOrgAngle(double orgAngle) {
        this.orgAngle = orgAngle;
    }

    public void setStartOrgX(double startOrgX) {
        this.startOrgX = startOrgX;
    }

    public void setStartOrgY(double startOrgY) {
        this.startOrgY = startOrgY;
    }

    public void setPutOutSpeed(double putOutSpeed) {
        this.putOutSpeed = putOutSpeed;
    }

    public void setTakeBackSpeed(double takeBackSpeed) {
        this.takeBackSpeed = takeBackSpeed;
    }

    public void setPrize(Sprite prize) {
        this.prizeSprite = prize;
    }

    public void setAllSpeed(HashMap allSpeed) {
        this.allSpeed = allSpeed;
    }

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久成人18免费观看| 欧美日韩mp4| 久久久久国产成人精品亚洲午夜 | 成人一道本在线| 国产精品九色蝌蚪自拍| 久久综合色婷婷| 成人精品在线视频观看| 久久爱另类一区二区小说| 国产偷国产偷亚洲高清人白洁| eeuss影院一区二区三区| 国产在线精品视频| 亚洲免费观看高清完整版在线观看熊 | 亚洲成av人片在线观看无码| 宅男噜噜噜66一区二区66| 色婷婷久久久亚洲一区二区三区 | 日韩成人午夜精品| 亚洲国产精品久久不卡毛片| 中文字幕一区日韩精品欧美| 国产精品免费视频观看| 欧美日韩一区三区四区| 国产成人在线影院| 日本美女一区二区三区| 久久99精品久久久久久动态图| 国产亚洲1区2区3区| 国产网红主播福利一区二区| 欧美日韩国产片| 欧美一区二区私人影院日本| 91小视频免费看| 色吧成人激情小说| 国产成+人+日韩+欧美+亚洲| 日本成人超碰在线观看| 久久超碰97人人做人人爱| 亚洲国产另类精品专区| 美腿丝袜亚洲综合| 国产精品一卡二卡在线观看| 欧美精品免费视频| 欧美日韩国产综合视频在线观看 | 成人国产精品免费网站| 免费的国产精品| 狠狠色丁香久久婷婷综合_中| 国产露脸91国语对白| 99精品欧美一区二区三区小说| 欧美在线高清视频| 欧美中文字幕一二三区视频| 大美女一区二区三区| 国产一区二区三区高清播放| 99久久精品费精品国产一区二区| 91极品视觉盛宴| www亚洲一区| 亚洲一区av在线| 国产成人综合在线观看| 欧美探花视频资源| 欧美色网一区二区| 欧美日本在线一区| 亚洲国产精品激情在线观看 | 色狠狠色噜噜噜综合网| 日韩一区二区三区四区| 国产精品久久久久永久免费观看 | 精品对白一区国产伦| 欧美精品777| 国产女同性恋一区二区| 日韩在线观看一区二区| 国产suv精品一区二区883| 欧美另类一区二区三区| 51精品久久久久久久蜜臀| 欧美性三三影院| 欧美日韩电影在线播放| 国产精品久久久久久久久果冻传媒| 国产欧美日韩精品在线| 国产精品九色蝌蚪自拍| 蜜臀av性久久久久蜜臀aⅴ| 视频一区二区三区在线| 色悠悠久久综合| 7777精品伊人久久久大香线蕉的 | 精品国产电影一区二区| 一区二区三区四区蜜桃| 亚洲国产日韩一区二区| 99久久免费精品高清特色大片| 欧美大片一区二区| 亚洲国产精华液网站w | 日韩高清一区二区| 蜜桃av一区二区| 国产.欧美.日韩| 2020国产精品| 久久99精品久久久久久久久久久久| 国产激情偷乱视频一区二区三区| 日韩精品一区二区三区在线播放 | 亚洲综合一二区| 91免费版在线看| 日韩一区二区在线观看视频 | 亚洲美女视频一区| 亚洲第一综合色| 欧美久久久久久久久| 午夜精品久久久久久久久久久 | 亚洲欧美综合网| 成人动漫中文字幕| 日本一区二区三区国色天香| 亚洲综合在线视频| 欧美日韩不卡在线| 欧美国产成人在线| 99久久国产综合精品女不卡| 国产精品水嫩水嫩| 奇米综合一区二区三区精品视频| 高清shemale亚洲人妖| 91精品国产综合久久久久久久| 欧美激情综合在线| 色综合久久天天| 亚洲成人黄色影院| 精品久久一二三区| 天天综合网天天综合色| 日韩欧美视频在线| 亚洲精品日产精品乱码不卡| 蜜桃视频在线观看一区| 91女神在线视频| 亚洲福利电影网| 日韩视频一区二区三区| 亚洲激情在线激情| 成人国产在线观看| 久久夜色精品国产噜噜av| 亚洲综合色成人| 日韩一级在线观看| 午夜av区久久| 精品毛片乱码1区2区3区| 国产99精品在线观看| 一区二区三区四区在线| 欧美一区二区三区思思人| 国产一区视频导航| 一区二区三区四区高清精品免费观看 | 亚洲日本va在线观看| 在线精品视频免费观看| 另类小说视频一区二区| 欧美男生操女生| 国产成人精品免费网站| 亚洲成人三级小说| 欧美日韩中字一区| 亚洲成人av福利| 国产午夜亚洲精品羞羞网站| 91在线一区二区| 久久福利资源站| 2023国产一二三区日本精品2022| 91丨九色丨尤物| 韩国v欧美v日本v亚洲v| 亚洲一二三区在线观看| 久久精品视频一区| 欧美精品日韩精品| 色综合久久天天综合网| 国产九色精品成人porny| 亚洲午夜免费视频| 中文一区在线播放| 精品久久久久久最新网址| 国内精品不卡在线| 视频一区免费在线观看| 日韩女优av电影在线观看| 在线看国产日韩| 青椒成人免费视频| 日韩视频免费直播| 欧美性受xxxx| 色8久久人人97超碰香蕉987| 亚洲国产成人高清精品| 日韩美女啊v在线免费观看| 欧美亚州韩日在线看免费版国语版| 国产传媒日韩欧美成人| 亚洲男人天堂av| 在线不卡中文字幕| 欧美色综合天天久久综合精品| 99精品视频在线观看免费| 亚洲一区成人在线| 亚洲一区在线看| xvideos.蜜桃一区二区| 精品国精品国产| 99久久99久久精品国产片果冻| 亚洲一区二区三区视频在线播放| 国产精品毛片大码女人| 国产三级一区二区| 久久免费精品国产久精品久久久久| 99精品视频在线播放观看| 日本成人在线不卡视频| 国产精品萝li| 欧美日韩电影在线播放| 国产一区二三区| 国产精品1区二区.| 国产精品18久久久久久久久| 免费人成黄页网站在线一区二区| 国产免费久久精品| 国产精品国产自产拍高清av王其 | 日本vs亚洲vs韩国一区三区二区| 午夜久久久影院| 日韩精品高清不卡| 国产精品国产馆在线真实露脸| 国产精品每日更新| 一区二区三区免费在线观看| www国产精品av| 欧美肥妇毛茸茸| 91行情网站电视在线观看高清版| 韩国三级中文字幕hd久久精品| 国产精品18久久久久久久久| 五月婷婷综合在线| 亚洲宅男天堂在线观看无病毒| 亚洲精品国产精华液| 国产欧美精品一区二区色综合|