我试图制作一个非常简单的游戏(即使没有界面)。您应该键入要进行攻击的动作,重击和轻击或阻挡)。但是"敌人"仅响应" light"行动。问题是什么?
import java.util.Scanner;
public class Game {
public static void main(String[] args) {
int hp = 10, enemy_hp = 10;
String attack = "attack";
String block = "block";
String heavy = "heavy";
String light = "light";
Scanner userInput = new Scanner(System.in);
while (enemy_hp > 0 && hp > 0) {
System.out.println("It is your turn, attack (heavy or light) or try to block");
int your_block_chance1 = (int)(Math.random() * 4); //Chance to block an attack
int enemy_block_chance1 = (int)(Math.random() * 4);
String action = userInput.next();
if (action.equals(attack)) { //attack
System.out.print("You attacked your enemy and ");
if (enemy_block_chance1 == 0) {
System.out.println("he blocked it");
} else if (enemy_block_chance1 != 0) {
enemy_hp = enemy_hp - 3;
System.out.println("managed to hit, now his hp is " + enemy_hp);
}
} else if (action.equals(light)) { //light attack
System.out.print("You want to do a light attack");
if (enemy_block_chance1 == 0) {
System.out.println(" but he blocked it");
} else if (enemy_block_chance1 != 0) {
enemy_hp = enemy_hp - 1;
System.out.println(" and you managed to hit him, now his hp is " + enemy_hp);
} else if (action.equals(block)) { //block
System.out.println("You dicided to block and rest");
your_block_chance1 = (int)(Math.random() * 1);
hp++;
} else if (action.equals(heavy)) { //heavy attack
System.out.print("You went for a heavy attack");
int heavy_attack_chance = (int)(Math.random() * 2);
if (heavy_attack_chance == 1) {
System.out.println(" but failed");
} else if (heavy_attack_chance != 1) {
if (enemy_block_chance1 == 0) {
System.out.println(" but he blocked it");
} else if (enemy_block_chance1 != 0) {
enemy_hp = enemy_hp - 6;
System.out.println(" and you managed to hit you really hard, now his hp is " + enemy_hp);
}
}
}
System.out.print("It is your enemy turn, he decided to "); //enemy turn
int enemy_action2 = (int)(Math.random() * 4);
if (enemy_action2 == 1) {
System.out.print("attack you,"); //attack
if (your_block_chance1 == 0) {
System.out.println(" but you blocked it");
} else if (your_block_chance1 != 0) {
hp = hp - 3;
System.out.println(" and you didn't block it, now your hp is " + hp);
}
} else if (enemy_action2 == 0) { //heavy attack
System.out.print("do a heavy attack");
int heavy_attack_chance = (int)(Math.random() * 2);
if (heavy_attack_chance == 1) {
System.out.println(" but failed");
} else if (heavy_attack_chance != 1) {
if (your_block_chance1 == 0) {
System.out.println(" but you blocked it");
} else if (your_block_chance1 != 0) {
hp = hp - 6;
System.out.println(" and he managed to hit you really hard, now your hp is " + hp);
}
}
} else if (enemy_action2 == 3) { //light attack
System.out.print("do a light attack");
if (your_block_chance1 == 0) {
System.out.println(" but you blocked it");
} else if (your_block_chance1 != 0) {
hp = hp - 1;
System.out.println(" and he managed to hit you, now your hp is " + hp);
}
} else if (enemy_action2 == 2) { //block
System.out.println("block and rest");
enemy_hp++;
}
}
if (hp <= 0) {
System.out.println("You failed");
} else if (enemy_hp <= 0) {
System.out.println("You won!");
}
}
}
}
答案 0 :(得分:1)
在这里您可以获得用户输入
while (enemy_hp > 0 && hp > 0) {
System.out.println("It is your turn, attack (heavy or light) or try to block");
int your_block_chance1 = (int) (Math.random() * 4); //Chance to block an attack
int enemy_block_chance1 = (int) (Math.random() * 4);
String action = userInput.next();
当您键入&#34; heavy&#34;在控制台
if (action.equals(attack)) {
&#34;重&#34;不等于&#34;攻击&#34;所以它...... ..
else if (action.equals(light)) {
&#34;重&#34;不等于&#34;光&#34;所以再一次条件不是真的
你一路走到:
if (hp <= 0) {
System.out.println("You failed");
} else if (enemy_hp <= 0) {
System.out.println("You won!");
}
因此它返回到while循环,您可以尝试再次输入。
你的条件为&#34;重&#34;在...&#34; light&#34;条件:
else if (action.equals(light)) {
...
...
} else if (action.equals(heavy)) {
我认为您的问题是代码无法读取。尝试使用像intelij,eclipse这样的IDE来正确格式化你的代码。 我不知道你是否熟悉面向对象编程,但你应该使用更多的对象,如Player,Enemy。您还可以为特定的攻击类型或块类型添加一些对象,有很多选项:)
答案 1 :(得分:1)
错位的括号:
我已从末尾删除了结束括号}
,并在} else if (action.equals(heavy)) {
检查一下:
import java.util.Scanner;
public class Game1 {
public static void main(String[] args) {
int hp = 10, enemy_hp = 10;
String attack = "attack";
String block = "block";
String heavy = "heavy";
String light = "light";
Scanner userInput = new Scanner(System.in);
while (enemy_hp > 0 && hp > 0) {
System.out.println("It is your turn, attack (heavy or light) or try to block");
int your_block_chance1 = (int)(Math.random() * 4); //Chance to block an attack
int enemy_block_chance1 = (int)(Math.random() * 4);
String action = userInput.next();
if (action.equals(attack)) { //attack
System.out.print("You attacked your enemy and ");
if (enemy_block_chance1 == 0) {
System.out.println("he blocked it");
} else if (enemy_block_chance1 != 0) {
enemy_hp = enemy_hp - 3;
System.out.println("managed to hit, now his hp is " + enemy_hp);
}
} else if (action.equals(light)) { //light attack
System.out.print("You want to do a light attack");
if (enemy_block_chance1 == 0) {
System.out.println(" but he blocked it");
} else if (enemy_block_chance1 != 0) {
enemy_hp = enemy_hp - 1;
System.out.println(" and you managed to hit him, now his hp is " + enemy_hp);
}
} else if (action.equals(block)) { //block
System.out.println("You dicided to block and rest");
your_block_chance1 = (int)(Math.random() * 1);
hp++;
} else if (action.equals(heavy)) { //heavy attack
System.out.print("You went for a heavy attack");
int heavy_attack_chance = (int)(Math.random() * 2);
if (heavy_attack_chance == 1) {
System.out.println(" but failed");
} else if (heavy_attack_chance != 1) {
if (enemy_block_chance1 == 0) {
System.out.println(" but he blocked it");
} else if (enemy_block_chance1 != 0) {
enemy_hp = enemy_hp - 6;
System.out.println(" and you managed to hit you really hard, now his hp is " + enemy_hp);
}
}
}
System.out.print("It is your enemy turn, he decided to "); //enemy turn
int enemy_action2 = (int)(Math.random() * 4);
if (enemy_action2 == 1) {
System.out.print("attack you,"); //attack
if (your_block_chance1 == 0) {
System.out.println(" but you blocked it");
} else if (your_block_chance1 != 0) {
hp = hp - 3;
System.out.println(" and you didn't block it, now your hp is " + hp);
}
} else if (enemy_action2 == 0) { //heavy attack
System.out.print("do a heavy attack");
int heavy_attack_chance = (int)(Math.random() * 2);
if (heavy_attack_chance == 1) {
System.out.println(" but failed");
} else if (heavy_attack_chance != 1) {
if (your_block_chance1 == 0) {
System.out.println(" but you blocked it");
} else if (your_block_chance1 != 0) {
hp = hp - 6;
System.out.println(" and he managed to hit you really hard, now your hp is " + hp);
}
}
} else if (enemy_action2 == 3) { //light attack
System.out.print("do a light attack");
if (your_block_chance1 == 0) {
System.out.println(" but you blocked it");
} else if (your_block_chance1 != 0) {
hp = hp - 1;
System.out.println(" and he managed to hit you, now your hp is " + hp);
}
} else if (enemy_action2 == 2) { //block
System.out.println("block and rest");
enemy_hp++;
}
}
if (hp <= 0) {
System.out.println("You failed");
} else if (enemy_hp <= 0) {
System.out.println("You won!");
}
}
}