DrJava中基于文本的Java游戏存在问题
菜单没有链接,在第一个菜单之后,它返回到开始,还试图弄清楚如何将其变成一个一次只有几个敌人出现的波浪系统,一旦这些敌人被击败,你就可以进入下一个浪潮和一个保存功能,该功能允许你保存到你的角色,然后在返回游戏时加载他们。我已经挣扎了一个星期了DrJava中基于文本的Java游戏存在问题,java,text-based,drjava,Java,Text Based,Drjava,菜单没有链接,在第一个菜单之后,它返回到开始,还试图弄清楚如何将其变成一个一次只有几个敌人出现的波浪系统,一旦这些敌人被击败,你就可以进入下一个浪潮和一个保存功能,该功能允许你保存到你的角色,然后在返回游戏时加载他们。我已经挣扎了一个星期了 import java.util.Random; import java.util.Scanner; public class Main3 { public static void main (String[] args) { me
import java.util.Random;
import java.util.Scanner;
public class Main3
{
public static void main (String[] args)
{
menu();
}
static void menuDisp()
{
System.out.println("welcome");
System.out.println("1. Start Game");
System.out.println("2. Character select");
System.out.println("3. Quit");
}
static void menu()
{
Scanner sc = new Scanner(System.in);
int ch=0;
for( ; ; )
{
menuDisp();
ch = sc.nextInt();
sc.nextLine();
switch(ch)
{
case 1:
game();
break;
case 2:
System.out.println("Coming Soon");
break;
case 3:
return;
default:
System.out.println("invalid input");
}
}
}
static Scanner sc = new Scanner(System.in);
static Random ran = new Random();
//Game variables
//enemies stat
static String[] enemies = {"Skeleton", "Zombie", "Warrior", "Assassin"};
static int maxEnemyHealth = 125;
static int enemyAttackDamage = 25;
// Player stat
static int health = 100;
static int attackDamage = 50;
static int fireball = 100;
static int numHealthPotions = 3;
static int healthPotionHealAmount = 30;
static int healthPotionDropChance = 50;
static int experience = 100;
static int playerLvl = 0;
static int playerExp = 0;
static int score = 0;
//static String GAME;
static int enemyHealth = ran.nextInt(maxEnemyHealth);
static String enemy = enemies[ran.nextInt(enemies.length)];
public static void game()
{
boolean running = true;
System.out.println("Welcome to the game");
/**ID*/
GAME:
while (running){
//System.out.println("---------------------------------------------");
//System.out.println("\t# " + enemy + " has appeared! #\n");
gamemenu();
if (health <1)
{
System.out.println("You limp out of the doungeon, weak from battle.");
break;
}
System.out.println("---------------------------------------------");
System.out.println(" # " + enemy + " was defeated! # ");
playerExp += ran.nextInt(experience);
System.out.println(" # You recieve " + playerExp + " xp from battle #");
if (playerExp >= 100)
{
playerLvl += 1 ;
health += 100;
attackDamage += 10;
playerExp -= 100;
System.out.println(" # You have grown to level " + playerLvl + "#");
System.out.println(" # You have gained 100hp # \n # Your max damage and increase +10 dmg");
}
System.out.println(" # You have " + health + " HP left. #");
if(ran.nextInt(100) < healthPotionDropChance ){
numHealthPotions++;
System.out.println(" # the " + enemy + "Dropped a health postion!# ");
System.out.println(" # You now have " + numHealthPotions + " health postion(s). # ");
}
leavemenu();
/* System.out.println("---------------------------------------------");
System.out.println("What would you like to do now?");
System.out.println("1. Continue fighting");
System.out.println("2. Exit Dungeon");
String input = sc.nextLine();
while(!input.equals("1") && !input.equals("2")){
System.out.println("invalid command!");
input = sc.nextLine();
}
if(input.equals("1"))
{
System.out.println("You continue on your adventrue!");
gamemenu();
}
else if(input.equals("2"))
{
System.out.println("You exit the doungeon, successful from your adventures!");
break;
}*/
}
System.out.println("#######################");
System.out.println("# THANKS FOR PLAYING! #");
System.out.println("#######################");
return;
}
public static void experience()
{
}
/**Game Menu display */
static void gamemenuDisp()
{
System.out.println("---------------------------------------------");
System.out.println("\t# " + enemy + " has appeared! #\n");
System.out.println("\tYour HP: " + health);
System.out.println("\tYour Exp: " + playerExp);
System.out.println("\tYour Lvl: " + playerLvl);
System.out.println("\t" + enemy + "'s HP: " + enemyHealth);
System.out.println("\n\tWhat would you like to do?");
System.out.println("\t1. Attack menu");
System.out.println("\t2. Drink health potion");
System.out.println("\t3. Run!");
}
static void gamemenu()
{
Scanner sc = new Scanner(System.in);
int ch=0;
while (enemyHealth > 0)
{
//for( ; ; )
//{
gamemenuDisp();
ch = sc.nextInt();
sc.nextLine();
switch(ch)
{
case 1:
attackmenu();
case 2:
potionHealth();
break;
case 3:
run();
return;
default:
System.out.println("invalid input");
}
break;
}
/* if (enemyhealth <= 0)
{
continue GAME;
}*/
}
static void attack()
{
int damageDealt = ran.nextInt(attackDamage);
int damageTaken = ran.nextInt(enemyAttackDamage);
enemyHealth -= damageDealt;
health -= damageTaken;
System.out.println("\t> You strike the " + enemy + " for " +damageDealt + " damage.");
System.out.println("\t> You recieve " + damageTaken + " in retaliation!");
if(health <= 0){
System.out.println("\t Yout have taken too much damage, you are too weak to go on!");
System.exit(0);
}
gamemenu();
}
static void fireball()
{
int damageDealt = ran.nextInt(fireball);
int damageTaken = ran.nextInt(enemyAttackDamage);
enemyHealth -= damageDealt;
health -= damageTaken;
System.out.println("\t> You strike the " + enemy + " with a fire ball for " +damageDealt + " damage.");
System.out.println("\t> You recieve " + damageTaken + " in retaliation!");
if(health <= 0){
System.out.println("\t> Yout have taken too much damage, you are too weak to go on!");
System.exit(0);
}
}
static void potionHealth()
{
if(numHealthPotions > 0) {
health += healthPotionHealAmount;
numHealthPotions--;
System.out.println("\t> You drink a health potion, healing yourself for " +healthPotionHealAmount + "."
+ "\n\t> You now have " + health + " HP"
+ "\n\t> You have " + numHealthPotions + " healthpotions left.\n");
}
else
{
System.out.println("\t> You have no health potions left!");
}
}
static void run()
{
System.out.println("\tYou run away from the " +enemy);
//continue GAME;
}
/** fighting option display */
static void submenuDisp()
{
System.out.println("Attack menu");
System.out.println("\t1. Attack");
System.out.println("\t2. Fireball");
System.out.println("\t3. back");
}
/** fighting option menu*/
static void attackmenu()
{
Scanner sc = new Scanner(System.in);
int ch=0;
for( ; ; )
{
submenuDisp();
ch = sc.nextInt();
sc.nextLine();
switch(ch)
{
case 1:
attack();
//return;
break;
case 2:
fireball();
return;
//break;
case 3:
return;
default:
System.out.println("invalid input");
}
}
}
static void leavemenuDisp()
{
System.out.println("what would you like to do?");
System.out.println("1. Continue fighting");
System.out.println("2. Exit Dungeon");
}
static void leavemenu()
{
Scanner sc = new Scanner(System.in);
int ch=0;
for( ; ; )
{
menuDisp();
ch = sc.nextInt();
sc.nextLine();
switch(ch)
{
case 1:
gamemenu();
break;
case 2:
System.out.println("You exit the doungeon, successful from your adventures!");
break;
default:
System.out.println("invalid input");
}
}
}
}
import java.util.Random;
导入java.util.Scanner;
公共类main 3
{
公共静态void main(字符串[]args)
{
菜单();
}
静态void menuDisp()
{
System.out.println(“欢迎”);
System.out.println(“1.开始游戏”);
System.out.println(“2.字符选择”);
System.out.println(“3.Quit”);
}
静态无效菜单()
{
扫描仪sc=新的扫描仪(System.in);
int ch=0;
对于(;;)
{
menuDisp();
ch=sc.nextInt();
sc.nextLine();
开关(ch)
{
案例1:
游戏();
打破
案例2:
System.out.println(“即将推出”);
打破
案例3:
返回;
违约:
System.out.println(“无效输入”);
}
}
}
静态扫描仪sc=新扫描仪(System.in);
静态随机运行=新随机();
//博弈变量
//敌人统计
静态字符串[]敌人={“骷髅”、“僵尸”、“战士”、“刺客”};
静态int-maxEnemyHealth=125;
静态int enemyAttackDamage=25;
//球员统计
静态int健康=100;
静态攻击伤害=50;
静态int火球=100;
静态智力健康药水=3;
静态int-healthPotionHealAmount=30;
静态int-healthPotionDropChance=50;
静态积分经验=100;
静态整数playerLvl=0;
静态int playerExp=0;
静态智力得分=0;
//静态弦乐游戏;
静态int-enemyHealth=ran.nextInt(maxEnemyHealth);
静态字符串敌人=敌人[ran.nextInt(敌人.length)];
公共静态无效游戏()
{
布尔运行=真;
System.out.println(“欢迎来到游戏”);
/**身份证*/
游戏:
(跑步时){
//System.out.println(“-------------------------------------------------------------”;
//System.out.println(“\t#“+敌人+”出现了!#\n”);
gamemenu();
如果(健康=100)
{
playerLvl+=1;
健康+=100;
攻击伤害+=10;
playerExp-=100;
System.out.println(“#您已成长到级别”+playerLvl+“#”);
System.out.println(“#你获得100点生命#\n#你的最大伤害并增加+10 dmg”);
}
System.out.println(“#您还有“+health+”生命值)。#”;
如果(run.nextInt(100)0)
{
//对于(;;)
//{
gamemenuDisp();
ch=sc.nextInt();
sc.nextLine();
开关(ch)
{
案例1:
攻击菜单();
案例2:
药剂健康();
打破
案例3:
run();
返回;
违约:
System.out.println(“无效输入”);
}
打破
}
/*如果(enemyhealth 0){
health+=healthPotionHealAmount;
健康药水;
System.out.println(“\t>你喝了一剂健康药水,为“+healthPotionHealAmount+”治疗自己。”
+\n\t>您现在拥有“+健康+”HP”
+“\n\t>您还有”+健康药水+”健康药水。\n”);
}
其他的
{
System.out.println(“\t>您没有剩余的健康药水!”);
}
}
静态无效运行()
{
System.out.println(“\t您逃离”+敌人);
//继续游戏;
}
/**战斗选项显示*/
静态void子菜单disp()
{
System.out.println(“攻击菜单”);
System.out.println(“\t1.Attack”);
System.out.println(