datamanager.java

来自「一款Java开发的打飞机小游戏」· Java 代码 · 共 81 行

JAVA
81
字号
import java.io.*;
import java.util.Vector;
import java.util.StringTokenizer;

/**
 * 数据管理,主要用于加载关卡文件
 * @author fantasyer
 * @version 1.0
 */
public class DataManager
{
    /*
     * 从文件加载数据,并将其保存在Vector中
     * @param filename 关卡文件名
     * @return 返回保存有关卡信息的Vector,如果失败返回null
     */
    public static Vector loadData(String filename)
    {
        Vector enemys = new Vector();
        try
        {
            BufferedReader in = new BufferedReader(new InputStreamReader(
                    Class.forName("DataManager").getClassLoader().
                    getResourceAsStream(filename)));

            String str = "";
            while ((str = in.readLine())!=null)
            {
                if (str.startsWith("##"))
                { //忽略注释语句
                    continue;
                }
                else
                {
                    Enemy e = parse(str); //忽略分析异常的信息
                    if (e!=null)
                    {
                        enemys.addElement(e);
                    }
                }
            }
            in.close();
        }
        catch (Exception e)
        {
            e.printStackTrace();
            return null;
        }
        return enemys;
    }

    /**
     * 根据文本信息构建一个Enemy对象
     * @param str 待分析的文本信息
     * @return 构建的Enemy对象,如果失败返回null
     */
    public static Enemy parse(String str)
    {
        try
        {
            StringTokenizer tokens = new StringTokenizer(str);
            int startY = Integer.parseInt(tokens.nextToken());
            int x = Integer.parseInt(tokens.nextToken());
            int y = Integer.parseInt(tokens.nextToken());
            int xspeed = Integer.parseInt(tokens.nextToken());
            int yspeed = Integer.parseInt(tokens.nextToken());
            int movetype = Integer.parseInt(tokens.nextToken());
            int firetype = Integer.parseInt(tokens.nextToken());
            int life = Integer.parseInt(tokens.nextToken());
            int kind = Integer.parseInt(tokens.nextToken());

            return new Enemy(startY, x, y, xspeed, yspeed, movetype, firetype,
                             life, kind);
        }
        catch (NumberFormatException e)
        {
            return null;
        }
    }
}

⌨️ 快捷键说明

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