[成長しなければならない!] 非常に小さなクラスを作成しましたが、突然「奇妙な」ものに気づきました。
これはクラスです:
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()
同じ型の変数を返します。この場合0
はtoAdd
が小さい場合です。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 クラス全体を追加しました。