0

[成長しなければならない!] 非常に小さなクラスを作成しましたが、突然「奇妙な」ものに気づきました。

これはクラスです:

class Chara{
  private boolean flag_loaded;
  private boolean flag_rage, flag_shield;
  private int int_rage, int_shield;
  Chara(String fileName){
    flag_loaded = true
    if(flag_loaded){
      flag_rage = false;
      int_rage = 0;
      flag_shield = false;
      int_shield = 0;
    }
  }
  boolean rage(){return flag_rage;}
  boolean shield(){return flag_shield;}
  void add_rage(int toAdd){flag_rage = Bool(int_rage += limitMin(toAdd, 0));}
  void add_shield(int toAdd){flag_shield = Bool(int_shield += limitMin(toAdd, 0));}
  void sub_rage(int toAdd){flag_rage = Bool(int_rage -= limitMin(toAdd, 0));}
  void sub_shield(int toAdd){flag_shield = Bool(int_shield -= limitMin(toAdd, 0));}

ご覧のとおり、すべての変数は として設定されていprivateます。

注:limitMin()同じ型の変数を返します。この場合0toAddが小さい場合です。Bool() は単なるキャストです。

これはメインの一部です:

Chara chara = new Chara("lol");
print(chara.int_shield, (chara.shield()) ? COL_GREEN : COL_RED);
print(chara.flag_shield, (chara.shield()) ? COL_GREEN : COL_RED);

宣言、インスタンス、印刷の間は何も行われません。

このコードは、シールドの値を緑色で出力することになっており、シールドがあるかどうかに関係なく、 と であると想定されているため、何も出力しないint_shieldはずflag_shieldですprivate

結果は赤で素敵で0素敵です...false

なぜこうなった?私は何か間違ったことをしていますか?

絶望して変数を作ってみましたprotectedが、予想通り何も起こりませんでした。

編集: Chara クラス全体を追加しました。

4

1 に答える 1