• 大小: 32.9MB
    文件类型: .7z
    金币: 1
    下载: 0 次
    发布日期: 2023-08-03
  • 语言: Java
  • 标签: java  game  游戏  源码  罕见  

资源简介

非常有价值的Java游戏源码(本鹏保证在此前无人发过,而且原本都是非商用的),包含了战棋,弹幕,即时战略,射击等多种游戏类型。比如以东方系列人物为主角的战棋类游戏,原本为Applet开发的东方战棋Demo示例(关卡不完整,目前原作者采用C/C++重制了该游戏(日本有售,梦幻模拟战风格),Java版已废弃(2010年即终止开发))。不过Applet版采用“蜂格式”地图,以斜45度角进行角色战斗,内置三关。加上该游戏程序结构严谨,即使被原作者淘汰,也同样非常值得学习研究(有较大的移植重用空间)。 而其中DreadMaze2的源码可以生成任意大小的随机迷宫,也附带有自走未知大小迷宫的功能,还有一个简单的游戏模式,可以在随机迷宫中打怪。Warcraft_Remake这个游戏也非常有参考价值,其完整模拟了《魔兽争霸一》的战场功能,从AI战斗到建筑物升级与修复等等无一不包。至于SRPGWar这个工程中的源码虽仅有一关,却属于比较罕见的即时战斗的SRPG,有佣兵系统,也有多兵种指挥,只是结构比较混乱,较难重用。

资源截图

代码片段和文件信息

// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://www.kpdus.com/jad.html
// Decompiler options: packimports(3) 
// Source File Name:   AnimationSet.java

package mm;

import java.awt.image.BufferedImage;
import java.io.PrintStream;
import java.util.*;

// Referenced classes of package mm:
//            ImageManager Globals SoundManager

public class AnimationSet
{
    public static class Animation
    {

        public BufferedImage getCurrentImage()
        {
            return ImageManager.getImage((new StringBuilder(String.valueOf(prefix))).append(currentframe).append(“.png“).toString());
        }

        public void advance()
        {
            int now = Globals.getCurrentTurn();
            if(now - lastAdvance >= delay && currentframe < nframes - 1)
            {
                currentframe++;
                lastAdvance = now;
                if(soundPrefix.length() > 0)
                    SoundManager.playSound((new StringBuilder(String.valueOf(soundPrefix))).append(currentframe).append(“.wav“).toString());
            }
        }

        public boolean isDone()
        {
            int now = Globals.getCurrentTurn();
            return now - lastAdvance >= Math.max(delay endDelay) && currentframe >= nframes - 1;
        }

        public int getPriority()
        {
            return priority;
        }

        public void restart()
        {
            currentframe = 0;
            lastAdvance = Globals.getCurrentTurn();
            if(soundPrefix.length() > 0)
                SoundManager.playSound((new StringBuilder(String.valueOf(soundPrefix))).append(currentframe).append(“.wav“).toString());
        }

        public void preloadAll()
        {
            for(int i = 0; i < nframes; i++)
            {
                ImageManager.preloadImage((new StringBuilder(String.valueOf(prefix))).append(i).append(“.png“).toString());
                if(soundPrefix.length() > 0)
                    SoundManager.preloadSound((new StringBuilder(String.valueOf(soundPrefix))).append(i).append(“.wav“).toString());
            }

        }

        private String prefix;
        private String soundPrefix;
        private int nframes;
        private int delay;
        private int endDelay;
        private int priority;
        private int currentframe;
        private int lastAdvance;

        public Animation(String name String sound int num int pause int endPause int prioritee)
        {
            prefix = name;
            soundPrefix = sound;
            nframes = num;
            delay = pause;
            endDelay = endPause;
            priority = prioritee;
            currentframe = 0;
        }
    }


    public AnimationSet(String defaultNom Animation defaultAnimation)
    {
        animations = new HashMap();
        defaultName = defaultNom;
        currentAnimation = defaultName;
   

评论

共有 条评论