Rewrote some methods as non-static.
Functions for getting potions, pokeballs and pokemon are now in non-static classes. This will make it easier to manage other npc trainers in the future.
This commit is contained in:
		
							
								
								
									
										136
									
								
								Game.java
									
									
									
									
									
								
							
							
						
						
									
										136
									
								
								Game.java
									
									
									
									
									
								
							@@ -38,13 +38,13 @@ public class Game {
 | 
			
		||||
								+ "There really is nothing more to do here.%n", initialPokemon);
 | 
			
		||||
				return;
 | 
			
		||||
			}
 | 
			
		||||
			if (!consciousPokemon(player.getPokemon())) {
 | 
			
		||||
			if (player.getConsciousPokemon().size() < 1) {
 | 
			
		||||
				System.out.println("All your pokemon have fainted. Your journey ends here.");
 | 
			
		||||
				return;
 | 
			
		||||
			}
 | 
			
		||||
			while (trainersPokemon == null || !trainersPokemon.isConscious()) {
 | 
			
		||||
				availablePokemon(player.getConsciousPokemon());
 | 
			
		||||
				trainersPokemon = usersChoice(player.getConsciousPokemon());
 | 
			
		||||
				player.availablePokemon(true);
 | 
			
		||||
				trainersPokemon = player.choosePokemon(true);
 | 
			
		||||
			}
 | 
			
		||||
			System.out.printf("Opponent: %s%nWhat will you do?%n", opponentPokemon);
 | 
			
		||||
			System.out.printf("b: battle"
 | 
			
		||||
@@ -75,18 +75,18 @@ public class Game {
 | 
			
		||||
					break;
 | 
			
		||||
				case 'h':
 | 
			
		||||
					if (player.getInventory().getPotions().size() > 0) {
 | 
			
		||||
						availablePotions(player.getInventory().getPotions());
 | 
			
		||||
						currentPotion = chosenPotion(player.getInventory().getPotions());
 | 
			
		||||
						player.getInventory().availablePotions();
 | 
			
		||||
						currentPotion = player.getInventory().chosenPotion();
 | 
			
		||||
						if (currentPotion == null) {
 | 
			
		||||
							in.nextLine();
 | 
			
		||||
							System.out.println("Invalid potion.");
 | 
			
		||||
						} else {
 | 
			
		||||
							if (currentPotion.needsAlive()) {
 | 
			
		||||
								availablePokemon(player.getConsciousPokemon());
 | 
			
		||||
								pokemonToHeal = usersChoice(player.getConsciousPokemon());
 | 
			
		||||
								player.availablePokemon(true);
 | 
			
		||||
								pokemonToHeal = player.choosePokemon(true);
 | 
			
		||||
							} else {
 | 
			
		||||
								availablePokemon(player.getFaintedPokemon());
 | 
			
		||||
								pokemonToHeal = usersChoice(player.getFaintedPokemon());
 | 
			
		||||
								player.availablePokemon(false);
 | 
			
		||||
								pokemonToHeal = player.choosePokemon(false);
 | 
			
		||||
							}
 | 
			
		||||
							if (pokemonToHeal == null) {
 | 
			
		||||
								System.out.println("That is not a valid pokemon");
 | 
			
		||||
@@ -102,8 +102,8 @@ public class Game {
 | 
			
		||||
					break;
 | 
			
		||||
				case 't':
 | 
			
		||||
					if (player.getInventory().getPokeballs().size() > 0) {
 | 
			
		||||
						availablePokeballs(player.getInventory().getPokeballs());
 | 
			
		||||
						currentPokeball = chosenPokeball(player.getInventory().getPokeballs());
 | 
			
		||||
						player.getInventory().availablePokeballs();
 | 
			
		||||
						currentPokeball = player.getInventory().chosenPokeball();
 | 
			
		||||
						if (currentPokeball == null) {
 | 
			
		||||
							in.nextLine();
 | 
			
		||||
							System.out.println("Invalid pokeball.");
 | 
			
		||||
@@ -127,11 +127,11 @@ public class Game {
 | 
			
		||||
					}
 | 
			
		||||
					break;
 | 
			
		||||
				case 'c':
 | 
			
		||||
					availablePokemon(player.getConsciousPokemon());
 | 
			
		||||
					trainersPokemon = usersChoice(player.getConsciousPokemon());
 | 
			
		||||
					player.availablePokemon(true);
 | 
			
		||||
					trainersPokemon = player.choosePokemon(true);
 | 
			
		||||
					while (trainersPokemon == null) {
 | 
			
		||||
						availablePokemon(player.getConsciousPokemon());
 | 
			
		||||
						trainersPokemon = usersChoice(player.getConsciousPokemon());
 | 
			
		||||
						player.availablePokemon(true);
 | 
			
		||||
						trainersPokemon = player.choosePokemon(true);
 | 
			
		||||
					}
 | 
			
		||||
					opponentPokemon.attack(trainersPokemon);
 | 
			
		||||
					break;
 | 
			
		||||
@@ -152,8 +152,8 @@ public class Game {
 | 
			
		||||
						player.setInventory(loadedInventory);
 | 
			
		||||
						if (pokemon.size() > 0 && player.getPokemon().size() > 0) {
 | 
			
		||||
							do {
 | 
			
		||||
								availablePokemon(player.getConsciousPokemon());
 | 
			
		||||
								trainersPokemon = usersChoice(player.getConsciousPokemon());
 | 
			
		||||
								player.availablePokemon(true);
 | 
			
		||||
								trainersPokemon = player.choosePokemon(true);
 | 
			
		||||
							} while (trainersPokemon == null || !trainersPokemon.isConscious());
 | 
			
		||||
							opponentPokemon = randomPokemon(pokemon);
 | 
			
		||||
						}
 | 
			
		||||
@@ -171,8 +171,7 @@ public class Game {
 | 
			
		||||
					}
 | 
			
		||||
					break;
 | 
			
		||||
				case 'v':
 | 
			
		||||
					availablePokemon(player.getPokemon());
 | 
			
		||||
					System.out.println();
 | 
			
		||||
					player.printPokemon();
 | 
			
		||||
					break;
 | 
			
		||||
				case 'q':
 | 
			
		||||
					done = true;
 | 
			
		||||
@@ -184,7 +183,7 @@ public class Game {
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	/**
 | 
			
		||||
	 * Prevents wild fainted pokemon to ever be encountered again.
 | 
			
		||||
	 * Prevents wild fainted pokemon from ever being encountered again.
 | 
			
		||||
	 * @param pokemonList	List of pokemon to search.
 | 
			
		||||
	 * @param target		The pokemon to remove.
 | 
			
		||||
	 */
 | 
			
		||||
@@ -196,26 +195,6 @@ public class Game {
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	/**
 | 
			
		||||
	 * Lists all currently available items for the user.
 | 
			
		||||
	 * @param items		List of all of the user's items.
 | 
			
		||||
	 * @param target	We are either listing items targeted at an opponent pokemon or at our own pokemon.
 | 
			
		||||
	 */
 | 
			
		||||
	public static void availablePotions(ArrayList<Potion> potions) {
 | 
			
		||||
		System.out.println("You may choose from these items:");
 | 
			
		||||
		for (int i = 0; i < potions.size(); i++) {
 | 
			
		||||
			System.out.printf("%d: %s%n", i + 1, potions.get(i));
 | 
			
		||||
		}
 | 
			
		||||
		System.out.print(">");
 | 
			
		||||
	}
 | 
			
		||||
	public static void availablePokeballs(ArrayList<Pokeball> pokeballs) {
 | 
			
		||||
		System.out.println("You may choose from these items:");
 | 
			
		||||
		for (int i = 0; i < pokeballs.size(); i++) {
 | 
			
		||||
			System.out.printf("%d: %s%n", i + 1, pokeballs.get(i));
 | 
			
		||||
		}
 | 
			
		||||
		System.out.print(">");
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	/**
 | 
			
		||||
	 * Gives a trainer necessary starting items.
 | 
			
		||||
	 * @return	A list of items.
 | 
			
		||||
@@ -234,83 +213,6 @@ public class Game {
 | 
			
		||||
		return inventory;
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	/**
 | 
			
		||||
	 * Lists all currently available pokemon for the user.
 | 
			
		||||
	 * @param pokemonList	List of all the user's pokemon.
 | 
			
		||||
	 * @param type			Should we only include a certain type of pokemon.
 | 
			
		||||
	 */
 | 
			
		||||
	public static void availablePokemon(ArrayList<Pokemon> pokemonList) {
 | 
			
		||||
		System.out.println("You may choose from these pokemon:");
 | 
			
		||||
		for (int i = 0; i < pokemonList.size(); i++) {
 | 
			
		||||
			System.out.printf("%d: %s%n", i + 1, pokemonList.get(i));
 | 
			
		||||
			
 | 
			
		||||
		}
 | 
			
		||||
		System.out.print(">");
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	/**
 | 
			
		||||
	 * Checks if all of the pokemon in a list have fainted.
 | 
			
		||||
	 * @param pokemonList	List of the user's pokemon.
 | 
			
		||||
	 * @return				True if the user has at least one pokemon left. False otherwise.
 | 
			
		||||
	 */
 | 
			
		||||
	public static boolean consciousPokemon(ArrayList<Pokemon> pokemonList) {
 | 
			
		||||
		int pokemonLeft = 0;
 | 
			
		||||
		for (Pokemon pokemon : pokemonList) {
 | 
			
		||||
			if (pokemon.isConscious()) {
 | 
			
		||||
				pokemonLeft++;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		return pokemonLeft > 0;
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	/**
 | 
			
		||||
	 * Asks the user for the name of a pokemon and returns it.
 | 
			
		||||
	 * @param pokemonList	A list of available pokemon
 | 
			
		||||
	 * @return				A pokemon object or null.
 | 
			
		||||
	 */
 | 
			
		||||
	public static Pokemon usersChoice(ArrayList<Pokemon> pokemonList) {
 | 
			
		||||
		if (in.hasNextInt()) {
 | 
			
		||||
			int choice = in.nextInt() - 1;
 | 
			
		||||
			if (choice >= 0 && choice < pokemonList.size()) {
 | 
			
		||||
				in.nextLine();
 | 
			
		||||
				return pokemonList.get(choice);
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		System.out.println("Invalid pokemon");
 | 
			
		||||
		in.nextLine();
 | 
			
		||||
		return null;
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	/**
 | 
			
		||||
	 * Asks the user for an item, and validates it.
 | 
			
		||||
	 * @param itemList	Available items.
 | 
			
		||||
	 * @return			An Item object or null.
 | 
			
		||||
	 */
 | 
			
		||||
	public static Potion chosenPotion(ArrayList<Potion> potions) {
 | 
			
		||||
		if (in.hasNextInt()) {
 | 
			
		||||
			int choice = in.nextInt() - 1;
 | 
			
		||||
			if (choice >= 0 && choice < potions.size()) {
 | 
			
		||||
				in.nextLine();
 | 
			
		||||
				return potions.get(choice);
 | 
			
		||||
			}
 | 
			
		||||
		} else {
 | 
			
		||||
			in.nextLine();
 | 
			
		||||
		}
 | 
			
		||||
		return null;
 | 
			
		||||
	}
 | 
			
		||||
	public static Pokeball chosenPokeball(ArrayList<Pokeball> pokeball) {
 | 
			
		||||
		if (in.hasNextInt()) {
 | 
			
		||||
			int choice = in.nextInt() - 1;
 | 
			
		||||
			if (choice >= 0 && choice < pokeball.size()) {
 | 
			
		||||
				in.nextLine();
 | 
			
		||||
				return pokeball.get(choice);
 | 
			
		||||
			}
 | 
			
		||||
		} else {
 | 
			
		||||
			in.nextLine();
 | 
			
		||||
		}
 | 
			
		||||
		return null;
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	/**
 | 
			
		||||
	 * Chooses a random pokemon from a list.
 | 
			
		||||
	 * @param pokemon	The list to choose from.
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,8 @@
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.util.Scanner;
 | 
			
		||||
 | 
			
		||||
public class Inventory {
 | 
			
		||||
	public static Scanner in = new Scanner(System.in);
 | 
			
		||||
	private ArrayList<Pokeball> pokeballs;
 | 
			
		||||
	private ArrayList<Potion> potions;
 | 
			
		||||
	
 | 
			
		||||
@@ -47,4 +49,49 @@ public class Inventory {
 | 
			
		||||
		}
 | 
			
		||||
		return potions;
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	public void availablePokeballs() {
 | 
			
		||||
		System.out.println("You may choose from these items:");
 | 
			
		||||
		for (int i = 0; i < this.pokeballs.size(); i++) {
 | 
			
		||||
			System.out.printf("%d: %s%n", i + 1, this.pokeballs.get(i));
 | 
			
		||||
		}
 | 
			
		||||
		System.out.print(">");
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	public void availablePotions() {
 | 
			
		||||
		System.out.println("You may choose from these items:");
 | 
			
		||||
		ArrayList<Potion> potionList = this.getPotions();
 | 
			
		||||
		for (int i = 0; i < potionList.size(); i++) {
 | 
			
		||||
			System.out.printf("%d: %s%n", i + 1, potionList.get(i));
 | 
			
		||||
		}
 | 
			
		||||
		System.out.print(">");
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	public Potion chosenPotion() {
 | 
			
		||||
		ArrayList<Potion> potions = this.getPotions();
 | 
			
		||||
		if (in.hasNextInt()) {
 | 
			
		||||
			int choice = in.nextInt() - 1;
 | 
			
		||||
			if (choice >= 0 && choice < potions.size()) {
 | 
			
		||||
				in.nextLine();
 | 
			
		||||
				return potions.get(choice);
 | 
			
		||||
			}
 | 
			
		||||
		} else {
 | 
			
		||||
			in.nextLine();
 | 
			
		||||
		}
 | 
			
		||||
		return null;
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	public Pokeball chosenPokeball() {
 | 
			
		||||
		ArrayList<Pokeball> pokeballs = this.getPokeballs();
 | 
			
		||||
		if (in.hasNextInt()) {
 | 
			
		||||
			int choice = in.nextInt() - 1;
 | 
			
		||||
			if (choice >= 0 && choice < pokeballs.size()) {
 | 
			
		||||
				in.nextLine();
 | 
			
		||||
				return pokeballs.get(choice);
 | 
			
		||||
			}
 | 
			
		||||
		} else {
 | 
			
		||||
			in.nextLine();
 | 
			
		||||
		}
 | 
			
		||||
		return null;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
@@ -103,5 +103,4 @@ public class Potion {
 | 
			
		||||
			return false;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										46
									
								
								Trainer.java
									
									
									
									
									
								
							
							
						
						
									
										46
									
								
								Trainer.java
									
									
									
									
									
								
							@@ -1,6 +1,8 @@
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.util.Scanner;
 | 
			
		||||
 | 
			
		||||
public class Trainer {
 | 
			
		||||
	public static Scanner in = new Scanner(System.in);
 | 
			
		||||
	String name;
 | 
			
		||||
	private ArrayList<Pokemon> pokemon;
 | 
			
		||||
	private Inventory inventory;
 | 
			
		||||
@@ -50,4 +52,48 @@ public class Trainer {
 | 
			
		||||
	public Inventory getInventory() {
 | 
			
		||||
		return this.inventory;
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	/** Lists all currently available pokemon for the trainer.*/
 | 
			
		||||
	public void availablePokemon(boolean alive) {
 | 
			
		||||
		ArrayList<Pokemon> pokemonList = null;
 | 
			
		||||
		if (alive) {
 | 
			
		||||
			pokemonList = this.getConsciousPokemon();
 | 
			
		||||
		} else {
 | 
			
		||||
			pokemonList = this.getFaintedPokemon();
 | 
			
		||||
		}
 | 
			
		||||
		System.out.println("You may choose from these pokemon:");
 | 
			
		||||
		for (int i = 0; i < pokemonList.size(); i++) {
 | 
			
		||||
			System.out.printf("%d: %s%n", i + 1, pokemonList.get(i));
 | 
			
		||||
		}
 | 
			
		||||
		System.out.print(">");
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	public void printPokemon() {
 | 
			
		||||
		for (Pokemon pokemon : this.pokemon) {
 | 
			
		||||
			System.out.println(pokemon);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	/**
 | 
			
		||||
	 * Asks the user for the name of a pokemon and returns it.
 | 
			
		||||
	 * @param pokemonList	A list of available pokemon
 | 
			
		||||
	 * @return				A pokemon object or null.
 | 
			
		||||
	 */
 | 
			
		||||
	public Pokemon choosePokemon(boolean alive) {
 | 
			
		||||
		ArrayList<Pokemon> pokemonList = null;
 | 
			
		||||
		if (alive) {
 | 
			
		||||
			pokemonList = this.getConsciousPokemon();
 | 
			
		||||
		} else {
 | 
			
		||||
			pokemonList = this.getFaintedPokemon();
 | 
			
		||||
		}
 | 
			
		||||
		if (in.hasNextInt()) {
 | 
			
		||||
			int choice = in.nextInt() - 1;
 | 
			
		||||
			if (choice >= 0 && choice < pokemonList.size()) {
 | 
			
		||||
				in.nextLine();
 | 
			
		||||
				return pokemonList.get(choice);
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		in.nextLine();
 | 
			
		||||
		return null;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user