import roshambo.RoshamboApp.Roshambo;
public class Bart extends Player{
/*
* Create classes named Bart and Lisa that inherit the Player class and implement
* the generateRoshambo method. The Bart class should always select rock. The Lisa
* class should randomly select rock, paper, or scissors (a 1 in 3 chance of each).
*
*/
private Roshambo r;
@Override
public Roshambo generateRoshambo()
{//The Bart class should always select rock.
r = Roshambo.ROCK;
return r;
}
@Override
public Roshambo getRoshambo()
{
return r;
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
package roshambo;
import roshambo.RoshamboApp.Roshambo;
public class Lisa extends Player{
/*
* Create classes named Bart and Lisa that inherit the Player class and implement
* the generateRoshambo method. The Bart class should always select rock. The Lisa
* class should randomly select rock, paper, or scissors (a 1 in 3 chance of each).
*
*/
private Roshambo r;
public Roshambo generateRoshambo(String choice)
{//The Lisa class should randomly select rock, paper, or scissors (a 1 in 3 chance of each).
switch(choice)
{
case "r":
r = Roshambo.ROCK;
break;
case "p":
r = Roshambo.PAPER;
break;
case "s":
r = Roshambo.SCISSORS;
break;
}
return r;
}
@Override
public Roshambo generateRoshambo() {
// TODO Auto-generated method stub
return Roshambo.PAPER;
}
@Override
public Roshambo getRoshambo()
{
return r;
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
package roshambo;
import roshambo.RoshamboApp.Roshambo;
public abstract class Player {
/*
* Create an abstract class named Player that stores a name and a Roshambo value.
* This class should include an abstract method named generateRoshambo that allows an
* inheriting class to generate and return a Roshambo value.
* It should also include get and set methods for the name and Roshambo value.
*
*/
//private Roshambo r;
public Player()
{
//r = Roshambo.ROCK;
}
public abstract Roshambo generateRoshambo();
public abstract Roshambo getRoshambo();
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
package roshambo;
import roshambo.RoshamboApp.Roshambo;
public class Player1 extends Player{
/*
* Create a class named Player1 that inherits the Player class and
* implements the generateRoshambo method (even though it isn’t necessary
* for this player). This method can return any value you choose.
* */
private Roshambo r;
@Override
public Roshambo generateRoshambo()
{
r = Roshambo.values()[(int)(Math.random() * 3)];
return r;
}
@Override
public Roshambo getRoshambo()
{
return r;
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
package roshambo;
public enum Roshambo {
/*
* Create an enumeration named Roshambo that stores three values: rock, paper,
* and scissors. This enumeration should
* include a toString method that can convert the selected value to a string.
*
*/
ROCK, PAPER, SCISSORS
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
package roshambo;
import java.util.Scanner;
public class Validator {
public static String getAnswer(Scanner sc, String prompt) {
String answer = "";
System.out.println(prompt);
while (true) {
answer = sc.nextLine();
if (answer.equalsIgnoreCase("y") || answer.equalsIgnoreCase("n"))
return answer;
else
System.out.println("Error: Please enter y or n");
}
}
//only take l or b
public static String getTeam(Scanner sc, String prompt) {
String answer = "";
System.out.println(prompt);
while (true) {
answer = sc.nextLine();
if (answer.equalsIgnoreCase("b") || answer.equalsIgnoreCase("l"))
return answer;
else
System.out.println("Error: Please enter l or b");
}
}
public static String getString(Scanner sc, String prompt) {
System.out.println(prompt);
String s = sc.next();
sc.nextLine();
return s;
}
//only take r, p, or s
public static String getSelection(Scanner sc, String prompt) {
String answer = "";
System.out.println(prompt);
while (true) {
answer = sc.nextLine();
if (answer.equalsIgnoreCase("r") || answer.equalsIgnoreCase("p") || answer.equalsIgnoreCase("s"))
return answer;
else
System.out.println("Error: Please enter r, p, or s");
}
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
package roshambo;
import java.util.Scanner;
import roshambo.Bart;
import roshambo.Lisa;
import roshambo.Player;
import roshambo.Player1;
import roshambo.Roshambo;
public class RoshamboApp {
/*
* Author: Piano Hagens
* Date: Mar 12th, 2017
*
* Create a class named RoshamboApp that allows the player to play Bart or Lisa as
* shown in the console output. Rock should beat scissors,
* paper should beat rock, and scissors should beat paper.
*/
enum Roshambo
{
ROCK, PAPER, SCISSORS;
public String toString()
{
switch(this)
{
case ROCK:
return "rock";
case PAPER:
return "paper";
case SCISSORS:
return "scissors";
default:
return "";
}
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
String name = "";
String player1 = "";
String team = "";
String answer = "";
Player b;
Lisa l = new Lisa();
Roshambo pick;
Roshambo cpuPick;
System.out.println("Welcome to the game of Roshambo");
name = Validator.getString(sc, "Enter your name: ");
team = Validator.getTeam(sc, "Would you like to play Bart or Lisa? (b/l): ");
if(team.equalsIgnoreCase("b"))
{
b = new Bart();
b = (Bart)b;
player1 = "Bart";
}
else if(team.equalsIgnoreCase("l"))
{
b = new Player1();
b = (Player1)b;
player1 = "Lisa";
}
else
{
b = new Bart();
b = (Bart)b;
}
do
{
// get Validate
answer = Validator.getSelection(sc, "Rock, paper, or scissors? (r/p/s):");
l.generateRoshambo(answer);
b.generateRoshambo();
pick = l.getRoshambo();
cpuPick = b.getRoshambo();
System.out.println(name + ": " + pick.toString());
System.out.println(player1 + ": " + cpuPick.toString());
if(pick == b.getRoshambo())
{
System.out.println("Draw");
}
else if(pick == Roshambo.PAPER)
{
if(cpuPick == Roshambo.ROCK)
{
System.out.println(name + " Wins!");
}
else if(cpuPick == Roshambo.SCISSORS)
{
System.out.println(player1 + " Wins!");
}
}
else if(pick == Roshambo.ROCK)
{
if(cpuPick == Roshambo.SCISSORS)
{
System.out.println(name + " Wins!");
}
else if(cpuPick == Roshambo.PAPER)
{
System.out.println(player1 + " Wins!");
}
}
else if(pick == Roshambo.SCISSORS)
{
if(cpuPick == Roshambo.PAPER)
{
System.out.println(name + " Wins!");
}
else if(cpuPick == Roshambo.ROCK)
{
System.out.println(player1 + " Wins!");
}
}
answer = Validator.getAnswer(sc, "Would you like to play again?");
}
while(answer.equalsIgnoreCase("y"));
}
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
No comments:
Post a Comment