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

📄 zworld.java

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

import java.applet.AudioClip;
import java.awt.Graphics;
import java.awt.Point;

public class ZWorld
{

    public ZWorld()
    {
        fNumObjects = 0;
        fObjects = null;
        fPolygonList = null;
    }

    public void RemoveDeadObjects()
    {
        for(int i = 0; i < fNumObjects; i++)
        {
            ZObject zobject = fObjects[i];
            if(zobject.fStatus == 0)
            {
                for(int j = i; j < fNumObjects - 1; j++)
                    fObjects[j] = fObjects[j + 1];

                fNumObjects--;
            }
        }

    }

    public void CheckCollision()
    {
        for(int i = 0; i < fNumObjects; i++)
        {
            ZObject zobject = fObjects[i];
            if(zobject.fShouldBeCheckForCollision)
            {
                for(int j = 0; j < fNumObjects; j++)
                {
                    ZObject zobject1 = fObjects[j];
                    if(i != j && zobject1.fShouldBeCheckForCollision && zobject.CheckCollision(zobject1) && zobject.fType == 0)
                    {
                        if(zobject1.fType != 5)
                        {
                            zobject.fStatus = 0;
                            zobject.fMaxLifeTime = 0;
                        }
                        if(zobject1.fType == 1)
                            fViewer.fScore += 100;
                        if(zobject1.fCanBeHitByPlayerBullet)
                        {
                            zobject1.HandleCollisionWithBullet(zobject);
                            fCollideSnd.play();
                        }
                    }
                }

            }
        }

    }

    public void Create(int i, ZLight zlight, AudioClip audioclip, AudioClip audioclip1, AudioClip audioclip2)
    {
        fObjects = new ZObject[i];
        fPolygonList = new ZPolygonList();
        ZObject.SetWorld(this);
        fLight = zlight;
        fCollideSnd = audioclip;
        fExplodeSnd = audioclip1;
        fViewerCollisionSnd = audioclip2;
    }

    public void Draw()
    {
        fPolygonList.MakePolygonList(this);
        fPolygonList.Draw();
        CheckLifeTime();
    }

    public void Add(ZObject zobject)
    {
        fObjects[fNumObjects] = zobject;
        for(int i = 0; i < zobject.fNumPolygons; i++)
        {
            zobject.fPolygons[i].SetLight(fLight);
            zobject.fPolygons[i].SetGraphics(fOffScrGraphics, fScrWidth, fScrHeight, fScrMidX, fScrMidY);
        }

        zobject.fViewerDistance = fViewerDistance;
        fNumObjects++;
    }

    public void RemoveAllObjects()
    {
        fNumObjects = 0;
    }

    public void CheckLifeTime()
    {
        for(int i = 0; i < fNumObjects; i++)
        {
            ZObject zobject = fObjects[i];
            if(zobject.fLifeTime > zobject.fMaxLifeTime)
            {
                for(int j = i; j < fNumObjects - 1; j++)
                    fObjects[j] = fObjects[j + 1];

                fNumObjects--;
                if(zobject.fType == 0)
                    fViewer.fNumActiveBullets--;
                if(zobject.fType == 1)
                    fViewer.fRemainingEnemies--;
            }
        }

    }

    public void CheckCollisionWithEnemyBullet()
    {
        for(int i = 0; i < fNumObjects; i++)
        {
            ZObject zobject = fObjects[i];
            if(zobject.fType == 5 && zobject.CheckCollisionWhenMoving(fViewer.fX - 20, fViewer.fZ - 20, fViewer.fX + 20, fViewer.fZ + 20))
            {
                zobject.fStatus = 0;
                zobject.fMaxLifeTime = 0;
                fViewer.fEnergy--;
                if(fViewer.fEnergy <= 0)
                    fViewer.fEnergy = 0;
            }
        }

    }

    public void SetWireframeMode(boolean flag)
    {
        fPolygonList.fWireframeMode = flag;
    }

    public void SetViewerMidPos(int i, int j)
    {
        for(int k = 0; k < fNumObjects; k++)
            fObjects[k].SetViewerMidPos(i, j);

    }

    public void SetGraphics(Graphics g, int i, int j, int k, int l)
    {
        g.clipRect(0, 0, i - 1, j - 1);
        fScrWidth = i;
        fScrHeight = j;
        fScrMidX = k;
        fScrMidY = l;
        fOffScrGraphics = g;
        for(int i1 = 0; i1 < fNumObjects; i1++)
        {
            for(int j1 = 0; j1 < fObjects[i1].fNumPolygons; j1++)
                fObjects[i1].fPolygons[j1].SetGraphics(g, i, j, k, l);

        }

    }

    public void Transform(ZMatrix zmatrix)
    {
        fPlayExplodeSnd = false;
        ZMatrix zmatrix1 = new ZMatrix();
        for(int i = 0; i < fNumObjects; i++)
        {
            ZObject zobject = fObjects[i];
            zmatrix1.InitTrans();
            zobject.Rotate(zmatrix1);
            zobject.Translate(zmatrix1);
            zobject.Transform(zmatrix1);
            zobject.Move();
            zobject.DoAction();
        }

        if(fPlayExplodeSnd)
        {
            fExplodeSnd.play();
            fPlayExplodeSnd = false;
        }
    }

    public void SetEnemyDeployPoints(int ai[])
    {
        fNumEnemyDeployPoints = ai[0];
        fEnemyDeployPoints = new Point[fNumEnemyDeployPoints];
        for(int i = 0; i < fNumEnemyDeployPoints; i += 2)
            fEnemyDeployPoints[i] = new Point(ai[i + 1], ai[i + 2]);

    }

    public void SetEdges(int i, int j, int k, int l)
    {
        fLeftEdge = i;
        fRightEdge = k;
        fTopEdge = j;
        fBotEdge = l;
        fWidth = k - i;
        fHeight = l - j;
    }

    public void SetLight(ZLight zlight)
    {
        fLight = zlight;
        for(int i = 0; i < fNumObjects; i++)
        {
            for(int j = 0; j < fObjects[i].fNumPolygons; j++)
                fObjects[i].fPolygons[j].SetLight(fLight);

        }

    }

    public boolean CheckCollisionWithViewer()
    {
        int i = fViewer.fX - 30;
        int j = fViewer.fX + 30;
        int k = fViewer.fZ - 30;
        int l = fViewer.fZ + 30;
        for(int i1 = 0; i1 < fNumObjects; i1++)
        {
            ZObject zobject = fObjects[i1];
            if(zobject.CheckCollisionWhenMoving(i, k, j, l))
            {
                fViewerCollisionSnd.play();
                return true;
            }
        }

        return false;
    }

    public void SetViewerDistance(int i)
    {
        fViewerDistance = i;
    }

    boolean HasPassedWorldEdges(int i, int j)
    {
        return i <= fLeftEdge || i >= fRightEdge || j <= fTopEdge || j >= fBotEdge;
    }

    void AlignWithViewer(ZMatrix zmatrix)
    {
        for(int i = 0; i < fNumObjects; i++)
        {
            fObjects[i].ATransform(zmatrix);
            fObjects[i].AProject();
        }

    }

    public void RemoveObject(ZObject zobject)
    {
        for(int i = 0; i < fNumObjects; i++)
            if(zobject == fObjects[i])
            {
                for(int j = i; j < fNumObjects - 1; j++)
                    fObjects[j] = fObjects[j + 1];

                fNumObjects--;
            }

    }

    public void SetView(ZView zview)
    {
        fPolygonList.fView = zview;
        fViewer = zview;
    }

    void DeployEnemy()
    {
    }

    static int fViewerDistance;
    ZObject fObjects[];
    int fNumObjects;
    static ZLight fLight;
    ZPolygonList fPolygonList;
    static int fScrWidth;
    static int fScrHeight;
    static int fScrMidX;
    static int fScrMidY;
    static Graphics fOffScrGraphics;
    static int fWidth;
    static int fHeight;
    static int fLeftEdge;
    static int fRightEdge;
    static int fTopEdge;
    static int fBotEdge;
    static ZView fViewer;
    AudioClip fCollideSnd;
    AudioClip fExplodeSnd;
    AudioClip fViewerCollisionSnd;
    boolean fPlayExplodeSnd;
    Point fEnemyDeployPoints[];
    int fNumEnemyDeployPoints;
}

⌨️ 快捷键说明

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