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を使用してテキスト ファイルを読み取ることはお勧めしませんDataInputStreamascii目的のためにテキスト ( ) ファイル表現を使用しないことをお勧めします。

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 に答える