⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zview.java

📁 java 编写的小游戏--坦克大战
💻 JAVA
字号:
// Decompiled by DJ v2.9.9.60 Copyright 2000 Atanas Neshkov  Date: 2004-12-12 17:51:58
// Home Page : http://members.fortunecity.com/neshkov/dj.html  - Check often for new version!
// Decompiler options: packimports(3) 
// Source File Name:   ZView.java


public class ZView
{

    public void SetStatus(int i)
    {
        if(fStatus == i)
        {
            return;
        } else
        {
            fStatus = i;
            fStatusTimer = 0;
            fXOrg = fOriginalXOrg;
            fYOrg = fOriginalYOrg;
            fShakeYAmount = 0;
            fWorld.SetViewerMidPos(fXOrg, fYOrg);
            return;
        }
    }

    public void Align(ZWorld zworld)
    {
        if(fStatus == 1)
        {
            if(fStatusTimer % 2 < 1)
                fShakeYAmount = 0;
            else
                fShakeYAmount = -5;
            fYOrg = fOriginalYOrg + fShakeYAmount;
            fXOrg = fOriginalXOrg + fShakeYAmount;
            fWorld.SetViewerMidPos(fXOrg, fYOrg);
            fStatusTimer++;
            if(fStatusTimer >= 4)
                SetStatus(0);
        }
        fMatrix.InitTrans();
        fMatrix.Translate(-fX, -fY, -fZ);
        fMatrix.Rotate(ANGLE_360 - fXAngle, ANGLE_360 - fYAngle, ANGLE_360 - fZAngle);
        fWorld.AlignWithViewer(fMatrix);
    }

    public void Draw(ZWorld zworld)
    {
        Align(zworld);
        zworld.Draw();
    }

    public void ShakeView()
    {
        fTimer++;
        if(fTimer > 5L)
        {
            fTimer = 0L;
            if(fShakeYAmount != 0)
                fShakeYAmount = 0;
            else
                fShakeYAmount = -1;
            fYOrg = fOriginalYOrg + fShakeYAmount;
            fWorld.SetViewerMidPos(fXOrg, fYOrg);
        }
    }

    public void SetPos(int i, int j, int k, int l, int i1, int j1)
    {
        fX = i;
        fY = j;
        fZ = k;
        fXAngle = l;
        fYAngle = i1;
        fZAngle = j1;
    }

    public void SetWorld(ZWorld zworld)
    {
        fWorld = zworld;
    }

    public boolean Shoot(ZWorld zworld)
    {
        if(fNumActiveBullets < 5)
        {
            ZBulletObject zbulletobject = new ZBulletObject();
            zbulletobject.LaunchPlayerBullet(fX, fY, fZ, 0, fYAngle, 0);
            fNumActiveBullets++;
            return true;
        } else
        {
            return false;
        }
    }

    public void RotateXZ(int i, int j)
    {
        fXAngle += i;
        if(fXAngle < 0)
        {
            fXAngle += ANGLE_360;
            return;
        }
        if(fXAngle >= ANGLE_360)
            fXAngle -= ANGLE_360;
    }

    public ZView()
    {
        fMatrix = new ZMatrix();
    }

    public void RotateOnYAxis(int i)
    {
        fYAngle += i;
        if(fYAngle < 0)
        {
            fYAngle += ANGLE_360;
            return;
        }
        if(fYAngle >= ANGLE_360)
            fYAngle -= ANGLE_360;
    }

    public void SetView(int i, int j, int k, int l, int i1, int j1)
    {
        fXOrg = i1;
        fYOrg = j1;
        fXMin = i;
        fXMax = k;
        fYMin = j;
        fYMax = l;
        fOriginalXOrg = fXOrg;
        fOriginalYOrg = fYOrg;
        fShakeYAmount = 0;
        fTimer = 0L;
        fNumActiveBullets = 0;
    }

    public void Move(int i)
    {
        int j = fX;
        int k = fZ;
        float f4 = ZTable.fCos[fYAngle];
        float f5 = ZTable.fSin[fYAngle];
        if(i > 0)
        {
            for(int l = i; l > 0; l--)
            {
                float f = (float)l * f4;
                float f2 = (float)l * f5;
                fX = j + (int)f2;
                fZ = k + (int)f;
                if(!fWorld.CheckCollisionWithViewer() && !fWorld.HasPassedWorldEdges(fX, fZ))
                {
                    ShakeView();
                    return;
                }
            }

            fStatus = 1;
            fStatusTimer = 0;
            return;
        }
        for(int i1 = i; i1 < 0; i1++)
        {
            float f1 = (float)i1 * f4;
            float f3 = (float)i1 * f5;
            fX = j + (int)f3;
            fZ = k + (int)f1;
            if(!fWorld.CheckCollisionWithViewer() && !fWorld.HasPassedWorldEdges(fX, fZ))
            {
                ShakeView();
                return;
            }
        }

        fStatus = 1;
        fStatusTimer = 0;
    }

    public void MoveY(int i)
    {
        fY += i;
    }

    int fXMin;
    int fXMax;
    int fYMin;
    int fYMax;
    int fXOrg;
    int fYOrg;
    int fOriginalXOrg;
    int fOriginalYOrg;
    int fShakeYAmount;
    int fX;
    int fY;
    int fZ;
    int fXAngle;
    int fYAngle;
    int fZAngle;
    ZMatrix fMatrix;
    ZWorld fWorld;
    static final int ANGLE_360 = 1920;
    static final int OK = 0;
    static final int SHAKING = 1;
    int fStatus;
    int fStatusTimer;
    long fTimer;
    int fEnergy;
    int fScore;
    int fRemainingEnemies;
    int fNumActiveBullets;

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -