Implement remaining game mechanics and fixed known bugs
This commit is contained in:
@@ -1,8 +1,7 @@
|
||||
package org.project;
|
||||
|
||||
import org.project.entity.Entity;
|
||||
import org.project.entity.enemies.Enemy;
|
||||
import org.project.entity.enemies.Skeleton;
|
||||
import org.project.entity.enemies.*;
|
||||
import org.project.entity.players.Player;
|
||||
import org.project.location.Location;
|
||||
|
||||
@@ -11,12 +10,21 @@ import java.util.Random;
|
||||
import java.util.Scanner;
|
||||
|
||||
public class MenuActions {
|
||||
private ArrayList<Location> locations = new ArrayList<>();
|
||||
Scanner scanner = new Scanner(System.in);
|
||||
private ArrayList<Location> locations;
|
||||
Scanner scanner;
|
||||
|
||||
public MenuActions() {
|
||||
this.scanner = new Scanner(System.in);
|
||||
this.locations = new ArrayList<>();
|
||||
}
|
||||
|
||||
public void startGame(Player player) {
|
||||
while (player.getKeysCollected() < 3) {
|
||||
System.out.println("Keys collected: " + player.getKeysCollected());
|
||||
while (player.getKeysCollectedCount() < 3) {
|
||||
// System.out.println("Keys collected: " + player.getStringKeysCollected());
|
||||
// if (askInventory(player)) {
|
||||
//
|
||||
// };
|
||||
|
||||
askInventory(player);
|
||||
Enemy enemy = chooseEnemy();
|
||||
Entity winner = fight(player, enemy);
|
||||
@@ -25,7 +33,21 @@ public class MenuActions {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (player.getKeysCollectedCount() == 3) {
|
||||
askInventory(player);
|
||||
System.out.println("Congratulations! You have successfully collected all 3 keys\n" +
|
||||
"You may now fight the Dragon");
|
||||
System.out.println("Make sure to upgrade before entering the castle!");
|
||||
askInventory(player);
|
||||
System.out.println("Entering the castle...");
|
||||
Entity winner = fight(player, new Dragon());
|
||||
if (winner != player) {
|
||||
System.out.println("You were killed by the dragon. Game over!\nreturning to main menu...");
|
||||
} else {
|
||||
System.out.println("Congratulations! You killed the dragon and saved Javanest!");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private Enemy chooseEnemy() {
|
||||
@@ -60,23 +82,43 @@ public class MenuActions {
|
||||
public Entity fight(Player player, Enemy enemy) {
|
||||
player.heal(player.getMaxHP());
|
||||
player.fillMana(player.getMaxMP());
|
||||
Entity winner = null;
|
||||
Entity winner;
|
||||
while (true) {
|
||||
playerTurn(player, enemy);
|
||||
if (enemy.getHp() == 0) {
|
||||
winner = player;
|
||||
System.out.println(player.getName() + " won the fight!");
|
||||
player.setXp(player.getXp()+5);
|
||||
System.out.println(player.getName() + " got 5 XP for winning the fight!");
|
||||
System.out.println("Keys collected: " + player.getKeysCollected());
|
||||
if (!(enemy instanceof Dragon)) {
|
||||
player.setXp(player.getXp()+5);
|
||||
System.out.println(player.getName() + " got 5 XP for winning the fight!");
|
||||
}
|
||||
|
||||
if (enemy instanceof Skeleton) {
|
||||
boolean hasKey = ((Skeleton) enemy).generateKey();
|
||||
if (hasKey) {
|
||||
player.collectKey();
|
||||
player.collectKey((Skeleton) enemy);
|
||||
player.setXp(player.getXp()+20);
|
||||
System.out.println(player.getName() + " got a key and 20 XP!");
|
||||
System.out.println(player.getName() + " got a Skeleton key and 20 XP!");
|
||||
}
|
||||
}
|
||||
if (enemy instanceof Goblin) {
|
||||
boolean hasKey = ((Goblin) enemy).generateKey();
|
||||
if (hasKey) {
|
||||
player.collectKey((Goblin) enemy);
|
||||
player.setXp(player.getXp()+10);
|
||||
System.out.println(player.getName() + " got a Goblin key and 10 XP!");
|
||||
}
|
||||
}
|
||||
if (enemy instanceof Vampire) {
|
||||
boolean hasKey = ((Vampire) enemy).generateKey();
|
||||
if (hasKey) {
|
||||
player.collectKey((Vampire) enemy);
|
||||
player.setXp(player.getXp()+30);
|
||||
System.out.println(player.getName() + " got a Vampire key and 30 XP!");
|
||||
}
|
||||
}
|
||||
System.out.println("Keys collected: " + player.getStringKeysCollected());
|
||||
|
||||
return winner;
|
||||
}
|
||||
enemyTurn(player, enemy);
|
||||
@@ -96,25 +138,28 @@ public class MenuActions {
|
||||
// System.out.println("1-Light attack, mana cost: 0");
|
||||
// System.out.println("2-Heavy attack, mana cost: ");
|
||||
// System.out.println("3-Special Ability, mana cost: ");
|
||||
// System.out.println("4-Defend, mana cost: 10");
|
||||
// System.out.println("5-Heal, mana cost: 20");
|
||||
// System.out.println("4-Defend, mana cost: 10"); disabled
|
||||
// System.out.println("5-Heal, mana cost: 20"); disabled
|
||||
while (true) {
|
||||
Random random = new Random();
|
||||
int choice = random.nextInt(5) + 1;
|
||||
int choice = random.nextInt(3) + 1;
|
||||
switch (choice) {
|
||||
case 1: enemy.getWeapon().lightAttack(player); return;
|
||||
case 1: enemy.getWeapon().lightAttack(player);
|
||||
System.out.println(enemy.getType() + "attacked(light)!"); return;
|
||||
case 2: if(enemy.getMp() >= enemy.getWeapon().getManaCost()) {
|
||||
enemy.getWeapon().heavyAttack(enemy, player); return;
|
||||
enemy.getWeapon().heavyAttack(enemy, player);
|
||||
System.out.println(enemy.getType() + "attacked(Heavy)!"); return;
|
||||
} break;
|
||||
case 3: if (enemy.getMp() >= enemy.getWeapon().getSpecialMana()){
|
||||
enemy.getWeapon().useSpecialAbility(enemy, player); return;
|
||||
} break;
|
||||
case 4: if (enemy.getMp() >= enemy.getDefendManaCost()) {
|
||||
enemy.defend(); return;
|
||||
} break;
|
||||
case 5: if (enemy.getMp() >= enemy.getHealManaCost()) {
|
||||
enemy.heal(20); return;
|
||||
enemy.getWeapon().useSpecialAbility(enemy, player);
|
||||
System.out.println(enemy.getType() + "used special ability!"); return;
|
||||
} break;
|
||||
// case 4: if (enemy.getMp() >= enemy.getDefendManaCost()) {
|
||||
// enemy.defend(); return;
|
||||
// } break;
|
||||
// case 5: if (enemy.getMp() >= enemy.getHealManaCost()) {
|
||||
// enemy.heal(20); return;
|
||||
// } break;
|
||||
default:
|
||||
System.out.println("Invalid choice");
|
||||
}
|
||||
@@ -168,20 +213,21 @@ public class MenuActions {
|
||||
}
|
||||
|
||||
private void askInventory(Player player) {
|
||||
System.out.println("Choose an option: ");
|
||||
System.out.println("1- Go to the inventory");
|
||||
System.out.println("2- Continue to next fight");
|
||||
|
||||
whileLoop:
|
||||
while (true) {
|
||||
System.out.println("Choose an option: ");
|
||||
System.out.println("1- Go to the inventory");
|
||||
System.out.println("2- Continue to next fight");
|
||||
int choice = getValidIntInput();
|
||||
switch (choice) {
|
||||
case 1: shop(player);
|
||||
case 1: shop(player); break;
|
||||
case 2: return;
|
||||
default:
|
||||
System.out.println("Invalid choice, please choose a number (1 or 2)."); break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void shop(Player player) {
|
||||
|
||||
Reference in New Issue
Block a user