String option = (String) JOptionPane.showInputDialog(frame,
"A wooden crate appears! It looks ready to kick your butt!",
"Battle!",
JOptionPane.QUESTION_MESSAGE,
null,
attacks,
attacks[0]);
if (option.equals("slash"))
{
damage = (int)(Math.random()*(stick.getMax()-stick.getMin()) + stick.getMin());
}
else if (option.equals("magic"))
{
if (playerMana >= 25)
{
damage = (int) intellect*((stick.getMax()-stick.getMin())/2) + (int)Math.round(Math.pow(playerLevel, 1.20));
playerMana -= 25;
}
else
{
damage = 0;
}
}
else if (option.equals("run"))
{
out.println("fail! you run from the fight!");
}
else if (option.equals("healing") && healPots >= 1)
{
playerHp+= (playerHp*0.15);
}
else
{
out.println("you have no potions! Get some in town to heal your hp!");
}
스틱은 최소 최대 피해 값으로 만들었습니다. 플레이어 HP와 마나는 모두 100입니다. 힐 포인트는 0입니다.자바 게임에 대한 else if 문을 수정하는 경우
플레이어가 옵션을 선택하고 순서를 변경하는 RPG 스타일의 전투 시스템을 만들려고합니다. 그러나 루프는 자동으로 선택 항목에 관계없이 마지막 else로 건너 뜁니다.
if와 else 블록은 실제로 루프 또는 while 루프처럼 루프를 제어하지 않기 때문에 "루프"가 아닙니다. 컨트롤 블록이나 다른 것을 호출 할 수는 있지만 루프를 호출하고 싶지는 않습니다. 저기, 끝났어. –
두 개의 객체를 비교할 때 그 중 하나가 상수이면 ** 항상 ** 상수를 먼저두고 비교해보십시오 (예 : "slash".equals (option)). Bye bye 객체 비교에서 NPE;) – m4rtin
코드에 관해서는 순환 복잡성이 매우 복잡하게 보입니다. 스틱이 상속 할 수있는 Weapon 클래스와 같이 더 많은 OOP를 사용하여 다시 작성하는 것이 좋습니다. 플레이어가 할 수있는 피해의 종류를 알아 내기 위해 Player 클래스에는 플레이어 유형의 각기 다른 유형의 하위 클래스가있을 수 있으며 무기를 사용하여 피해를 입히고받을 수 있습니다. 이렇게하면 코드가 단순 해지고 복잡성이 줄어들며 커플 링이 줄어들 수 있습니다. –