0

我为我正在制作的游戏制作了一个 java 类Levels。为了快速阅读并使代码简单,数据采用 ascii 字符。问题是该类似乎没有执行。这可以通过一些修改来工作吗?

这就是我所说的:

class G
    {        
        /* Variables */

        public G()
            {
                addKeyListener(new keys());
                setPreferredSize(new Dimension(w, h));
                setFocusable(true);
                Levels l = new Levels(1);
                System.out.print(l.blocks);

            }
        /* Code */
    }

这就是课堂。

class Levels
    {
        int blocks, bl;
        int[] alt, bgc, gc;
        private int k;

        public Levels(int level)
             {
                try
                    {
                        FileInputStream levelfile = new FileInputStream("levels/level/" + level + ".lvl");
                        Scanner ls = new Scanner(levelfile);
                        this.bl=((int)ls.nextByte())-32;
                        this.blocks=(int)ls.nextByte()-32;
                        for(k=0; k<6; k++)
                            {
                                this.bgc[k]=((int)ls.nextByte()-32)*2;
                            }
                        for(k=0; k<6; k++)
                            {
                                this.gc[k]=((int)ls.nextByte()-32)*2;
                            }
                        for(k=0; k<blocks; k++)
                            {
                                this.bgc[k]=((int)ls.nextByte()-32)*2;
                            }
                    }
                catch(FileNotFoundException error)
                    {
                        System.out.print("Level not found..." + error);
                    }
            }
    }
4

1 回答 1

0

请使用DataInputStream/DataOutputStream用于此类目的。它会用你的想法解决你的很多问题。

UPD: http ://docs.oracle.com/javase/tutorial/essential/io/datastreams.html

UPD-2我不建议您使用DataInputStream. 我建议不要ascii出于您的目的使用文本 ( ) 文件表示。

UPD-3好的。如果您仍然想读/写文本文件,那么有几个建议。1)根据您的读取文件代码,您不要在写入值之间使用任何分隔符。不是吗?最简单的方法是使用回车,即将每个值写在新行上。

2)在这种情况下,使用以下命令读取此类文件可能会更方便BufferedReader

FileInputStream fis = new FileInputStream('... your path ...');
InputStreamReader isr = new InputStreamReader(fis);
BufferedReader br = new BufferedReader(isr);

String line;

line = br.readLine();
this.bl = Integer.parseInt(line);

line = br.readLine();
this.blocks= Integer.parseInt(line);

... and so on

br.close();
于 2013-01-10T18:21:02.870 回答