// // Game.java // Game // // Created by William Donaldson on 1/26/07. // Copyright (c) 2007 __MyCompanyName__. All rights reserved. // import java.util.*; public class Game { public static void main (String args[]) { String name = "Generic RPG Character"; final int MAX_HP = 100; int yourHP = MAX_HP; String atk_word = "Attack"; String run_word = "Run"; String itm_word = "Item"; String def_word = "Defend"; final int MIN_ATK = 1; final int MAX_ATK = 10; final int SPC_ATK = 15; final int PERCENT_SPC = 15; final int PERCENT_MISS = 20; final int SHIELD_STRENGTH = 80; final int SHIELD_REFLECT = 30; int yourShieldWork = 2; String ptn_word = "Potion"; boolean defeat = false; final int MAX_HP_ENEMY = 100; int enemyHP = MAX_HP_ENEMY; final int MIN_ATK_ENEMY = 1; final int MAX_ATK_ENEMY = 10; final int SPC_ATK_ENEMY = 15; final int SHIELD_STRENGTH_ENEMY = 80; final int SHIELD_REFLECT_ENEMY = 30; final int ENEMY_USE_SHIELD_PERCENT = 30; int enemyShieldWork = 2; String input = ""; Scanner get = new Scanner (System.in); Random rand = new Random (); int yourattack = 0; int enemyattack = 0; int yourno = 0; int enemyno = 0; String youratkout = ""; String enemyatkout = ""; boolean go = false; // items int numOfPotions = 0; int numOfHiPotions = 0; final int POTION_HPREC = 10; final int HIPOTION_HPREC = 25; final String POTION_NAME = "potion"; final String HIPOTION_NAME = "hipotion"; while (!defeat) { input = ""; youratkout = ""; enemyatkout = ""; System.out.println("Your HP: " + yourHP + "/" + MAX_HP); System.out.println("Enemy HP: " + enemyHP + "/" + MAX_HP_ENEMY); while (!go) { System.out.println(""); System.out.print("(A)ttack or (D)efend? "); input = get.next(); System.out.println(""); if (!input.equalsIgnoreCase("a") && !input.equalsIgnoreCase("d") && !input.equalsIgnoreCase("i")) { System.out.println("Sorry, I can't understand you."); } else go = true; } go = false; if (input.equalsIgnoreCase("a")) { yourno = rand.nextInt(100); if (yourno < PERCENT_SPC) { yourattack = SPC_ATK; } else if (yourno < (PERCENT_SPC + PERCENT_MISS)) { yourattack = 0; } else { yourattack = rand.nextInt(MAX_ATK) + MIN_ATK; } yourShieldWork = 2; } else if (input.equalsIgnoreCase("d")) { yourno = rand.nextInt(100); if (yourno > SHIELD_STRENGTH) { yourShieldWork = 0; } else if (yourno < SHIELD_REFLECT) { yourShieldWork = 3; } else yourShieldWork = 1; yourattack = 0; } else if (input.equalsIgnoreCase("i")) { // item support // System.out.println("Item support not yet implemented!"); while (go == false) { System.out.print("(L)ist or use an item by name: "); input = get.next(); if (input.equalsIgnoreCase("l")) { System.out.println("Potions: " + numOfPotions + " (" + POTION_NAME + ")"); System.out.println("Hi-Potions: " + numOfHiPotions + " (" + HIPOTION_NAME + ")"); } else if (input.equalsIgnoreCase(POTION_NAME) || input.equalsIgnoreCase(HIPOTION_NAME)) { if (input.equalsIgnoreCase(POTION_NAME) && (numOfPotions > 0)) { numOfPotions--; yourHP += POTION_HPREC; System.out.println("Healed " + POTION_HPREC + " HP!"); go = true; } else if (input.equalsIgnoreCase(HIPOTION_NAME) && (numOfHiPotions > 0)) { numOfHiPotions--; yourHP += HIPOTION_HPREC; System.out.println("Healed " + HIPOTION_HPREC + " HP!"); go = true; } else System.out.println("You don't have any."); } else System.out.println("I couldn't understand you."); } } enemyno = rand.nextInt(100); if (enemyno < ENEMY_USE_SHIELD_PERCENT) { enemyno = rand.nextInt(100); if (enemyno > SHIELD_STRENGTH_ENEMY) { enemyShieldWork = 0; } else if (enemyno < SHIELD_REFLECT_ENEMY) { enemyShieldWork = 3; } else enemyShieldWork = 1; yourattack = 0; } else { enemyno = rand.nextInt(100); if (enemyno < PERCENT_SPC) { enemyattack = SPC_ATK_ENEMY; } else if (enemyno < (PERCENT_SPC + PERCENT_MISS)) { enemyattack = 0; } else { enemyattack = rand.nextInt(MAX_ATK_ENEMY) + MIN_ATK_ENEMY; } enemyShieldWork = 2; } if (yourShieldWork == 2) { if (yourattack == 0) { youratkout += "But you missed!"; } else { youratkout += "You dealt " + yourattack + " damage!"; if (yourattack == SPC_ATK) { youratkout += " A critical hit!"; } } } else { youratkout += "You tried to defend!\n"; if (yourShieldWork == 1) { youratkout += "The shields held!"; } else if (yourShieldWork == 3) { youratkout += "The shields held and reflected the attack!"; } else { youratkout += "But the shields didn't hold!"; } } if (enemyShieldWork == 2) { if (enemyattack == 0) { enemyatkout += "But it missed!"; } else { enemyatkout += "It dealt " + enemyattack + " damage!"; if (enemyattack == SPC_ATK_ENEMY) { enemyatkout += " A critical hit!"; } } } else { enemyatkout += "The enemy tried to defend!\n"; if (enemyShieldWork == 1) { enemyatkout += "The shields held!"; } else if (enemyShieldWork == 3) { enemyatkout += "The shields held and reflected the attack!"; } else { enemyatkout += "But the shields didn't hold!"; } } if ((yourShieldWork == 2) && (enemyShieldWork == 2)) { yourno = rand.nextInt(20); enemyno = rand.nextInt(20); if (yourno > enemyno) { System.out.println("You attacked first!"); enemyHP = enemyHP - yourattack; System.out.println(youratkout); System.out.println(""); System.out.println("The enemy attacked next!"); yourHP = yourHP - enemyattack; System.out.println(enemyatkout); System.out.println(""); } else if (enemyno > yourno) { System.out.println("The enemy attacked first!"); yourHP = yourHP - enemyattack; System.out.println(enemyatkout); System.out.println(""); System.out.println("You attacked next!"); enemyHP = enemyHP - yourattack; System.out.println(youratkout); System.out.println(""); } } else { if (enemyShieldWork == 2) { System.out.println(youratkout); if (yourShieldWork == 0) { System.out.println(""); yourHP = yourHP - enemyattack; System.out.println("The enemy attacked!"); System.out.println(enemyatkout); } else if (yourShieldWork == 3) { System.out.println(""); enemyHP = enemyHP - enemyattack; System.out.print("The enemy took " + enemyattack + " damage!"); if (enemyattack == SPC_ATK_ENEMY) System.out.print(" A critical hit!"); System.out.println(""); } } else if (yourShieldWork == 2) { System.out.println(enemyatkout); if (enemyShieldWork == 0) { System.out.println(""); enemyHP = enemyHP - yourattack; System.out.println("You attacked!"); System.out.println(youratkout); } else if (enemyShieldWork == 3) { System.out.println(""); yourHP = yourHP - yourattack; System.out.print("You took " + yourattack + " damage!"); if (yourattack == SPC_ATK) System.out.print(" A critical hit!"); System.out.println(""); } } else { System.out.println("You both tried to defend! Nobody got hurt!"); } System.out.println(""); } if (enemyHP <= 0) { System.out.println("The enemy has been slain! Congratulations!"); defeat = true; } else if (yourHP <= 0) { System.out.println("The enemy has killed you! Too bad."); defeat = true; } } System.out.println("Game over."); } }