Java/Android はまだ新しいので、マルチレベルの if ステートメントをコーディングする最良の方法を見つけようとしています。私がやろうとしているのは、プレイヤー/npc が生きているかどうかを確認する必要がある戦闘システムです。生きている場合は、クリティカル ヒットを記録したかどうかを確認します。クリティカル ヒットしなかった場合は、ヒットしたかミスしたかが表示されます。
combat = mydbhelper.getCombat();
startManagingCursor(combat);
if (playerCurHp == 0) {
combat.moveToPosition(11);
npcCombatStory = combat.getString(combat.getColumnIndex(dbhelper.KEY_COMBATDESC));
} else {
if (playerCritFlag.equals("Critical")) {
combat.moveToPosition(2);
playerCombatStory = combat.getString(combat.getColumnIndex(dbhelper.KEY_COMBATDESC));
} else {
if (playerHitFlag.equals("Hit")) {
combat.moveToPosition(1);
playerCombatStory = combat.getString(combat.getColumnIndex(dbhelper.KEY_COMBATDESC));
}
if (playerHitFlag.equals("Miss")) {
combat.moveToPosition(3);
playerCombatStory = combat.getString(combat.getColumnIndex(dbhelper.KEY_COMBATDESC));
}
}
}
if (npcCurHp == 0) {
combat.moveToPosition(10);
npcCombatStory = combat.getString(combat.getColumnIndex(dbhelper.KEY_COMBATDESC));
} else {
if (npcCritFlag.equals("Critical")) {
combat.moveToPosition(5);
npcCombatStory = combat.getString(combat.getColumnIndex(dbhelper.KEY_COMBATDESC));
} else {
if (npcHitFlag.equals("Hit")) {
combat.moveToPosition(4);
npcCombatStory = combat.getString(combat.getColumnIndex(dbhelper.KEY_COMBATDESC));
}
if(npcHitFlag.equals("Miss")) {
combat.moveToPosition(6);
npcCombatStory = combat.getString(combat.getColumnIndex(dbhelper.KEY_COMBATDESC));
}
}
}
私が使っているものです。if ステートメントがすべて分離されていたときに機能していました。しかし、それはそれぞれをチェックし、私が必要としないアクションを実行します(ヒットした場合はストリングをプルし、クリティカルが別のプルをプルした場合は、もう一度プルします)。一致する「フラグ」を見つけたときに停止させようとしています。プレイヤーがヒットした場合にロールを実行すると、以下のコードのようにフラグが「ヒット」に設定されます。
Random attackRandom = new Random();
int attackRoll = attackRandom.nextInt(100);
totalAtt = attackRoll + bonusAttack + weaponAtt + stanceAtt;
Random defensiveRandom = new Random();
int defenseRoll = defensiveRandom.nextInt(100);
npcDef = defenseRoll + npcDodge + npcBonusDodge;
if (totalAtt > npcDef) {
playerHitFlag = "Hit";
playerDamage();
} else {
playerHitFlag = "Miss";
npcAttack();
}
最後に、これらの playerCombatStory および npcCombatStory 文字列を受け取り、それらを setText に使用して、その戦闘ターンで何が起こったかをプレイヤーに表示します。