-3

私は現在、クラスプロジェクトの原始的なアリ対ゾンビゲームに取り組んでいます。侵入するゾンビに対応する文字と、前のゾンビ文字の倍数を表す整数(1〜9を含む)を含む「大群」ファイルを読み込みます。私が問題を抱えているのは、ファイル文字列内のintとcharを区別することと、intに応じて複数のオブジェクトを作成する方法です。これは私がこれまでに持っているものです:

public void readHordeFile(String filename){
    try {
        file = new FileReader(filename);
    } catch (FileNotFoundException e) {
        System.out.println("File not found " + e.getMessage());
    }
    buf = new BufferedReader(file);
    try {
        zombieString = buf.readLine();
        for(int i = 0; i < zombieString.length(); i++){
            if(zombieString.charAt(i) == 'S'){
                horde.add(new ZombieScientist());
            }else if(zombieString.charAt(i) == 'Z'){
                horde.add(new StandardZombie());
            }else if(zombieString.charAt(i) == 'I'){
                horde.add(new InfectedZombie());    
            }else if(zombieString.charAt(i) == 1){

            }
        }
    } catch (IOException e) {   
        e.getMessage();
    }

}

サンプルファイルには次のものが含まれます:SZI1

各番号をハードコーディングすることを考えていましたが、同じオブジェクトの倍数を追加する方法がわからないという問題が発生しました。助けていただければ幸いです。よろしくお願いします。

4

3 に答える 3

0

いくつかのこと。これはテストされていないコードなので、ヒントとして受け取ってください。

おそらく、ゾンビの作成を独自のメソッドに分割することから始める必要があるため、ループは次のようになります。

zombieString = buf.readLine();
for(int i = 0; i < zombieString.length(); i++){
    Character ch = zombieString.charAt(i);
    addZombie(horde, ch);
}

次に、作成された最新のゾンビを状態変数に保存するだけです。

Character previousZombie = ' ';
zombieString = buf.readLine();
for(int i = 0; i < zombieString.length(); i++){
    Character ch = zombieString.charAt(i);
    previousZombie = ch;        
    addZombie(horde, ch);
}

...そして、次の文字が数字であるかどうかのチェックを追加し、数字の場合は前のゾンビの正しい番号を追加します。

Character previousZombie = ' ';
zombieString = buf.readLine();
for(int i = 0; i < zombieString.length(); i++){
    Character ch = zombieString.charAt(i);
    if(!Character.isDigit(ch))
    {
        previousZombie = ch;
        addZombie(horde, ch);
    }
    else
    {
        for(int j='1'; j<ch; j++)
            addZombie(horde, previousZombie);
    }
}
于 2012-11-24T17:54:54.233 に答える
0

このようにchar形式の整数を引き続き確認できます。

else if(zombieString.charAt(i) == '1'){

        }

1、2、または 3 の場合は、この方法で確認できます。

複数のオブジェクトを追加したい場合は、オブジェクトのリストを作成して「大群」オブジェクトに追加できます

于 2012-11-24T17:50:17.720 に答える
0

文字列のコード ポイントが数値かどうかを判断するには、Character.isDigit メソッドを使用します。文字列の一部を int にするには、Integer.parseInt メソッドを使用します。

于 2012-11-24T17:52:00.833 に答える