PDA

View Full Version : Rock Paper Scissors!!


inkedmn
09-20-2002, 08:10 PM
decided to hack out some java (since i haven't been using it nearly as much as i should).

this is (loose) translation of Vince's python game on ccae...



import java.util.HashMap;

public class RockPaperScissors {

String[] weapons = {"Rock", "Paper", "Scissors"};
EasyIn easy = new EasyIn();
HashMap winners = new HashMap();
String playerWeapon;
String cpuWeapon;

public static void main(String[] args) {
RockPaperScissors rps = new RockPaperScissors();

rps.playerWeapon = rps.getPlayerWeapon();
rps.cpuWeapon = rps.getCpuWeapon();
System.out.println("\n\nYou chose: " + rps.playerWeapon);
System.out.println("The computer chose: " + rps.cpuWeapon + "\n\n");

rps.getWinner(rps.cpuWeapon, rps.playerWeapon);
}

public RockPaperScissors() {
String rock = "Rock";
String paper = "Paper";
String scissors = "Scissors";


winners.put(rock, scissors);
winners.put(scissors, paper);
winners.put(paper, rock);

System.out.println("Welcome to Rock-Paper-Scissors!");
}

public String getPlayerWeapon() {
int choice = 6;
String weapon = null;
System.out.println("Please Choose your Weapon: ");
System.out.println("1. Rock \n2. Paper \n3. Scissors \n\n0. Quit");
choice = easy.readInt();
if (choice == 0) {
System.out.println("Quitting...");
System.exit(0);
} else {
try {
weapon = weapons[(choice - 1)];
} catch (IndexOutOfBoundsException e) {
errorMsg();
getPlayerWeapon();
}
}
return weapon;
}
public void errorMsg() {
System.out.println("\nInvalid Entry.");
System.out.println("Please Select Again...\n\n");
}

public String getCpuWeapon() {
int rounded = -1;
while (rounded < 0 || rounded > 2) {
double randomNum = Math.random();
rounded = Math.round(3 * (float)(randomNum));
}
return weapons[rounded];
}

public void getWinner(String cpuWeapon, String playerWeapon) {
if (cpuWeapon == playerWeapon) {
System.out.println("Tie!");
} else if (winners.get(cpuWeapon) == playerWeapon) {
System.out.println("Computer Wins!");
} else if (winners.get(playerWeapon) == cpuWeapon) {
System.out.println("You Win!");
}
}
}


any feedback would be most welcome :)

gufmn
09-20-2002, 08:32 PM
How about a best of 3 option or the choice of playing again? It's over pretty quick ;)

inkedmn
09-20-2002, 11:41 PM
ask and you shall receive:

(quite a bit longer this time)



import java.util.HashMap;

public class RockPaperScissors {

String[] weapons = {"Rock", "Paper", "Scissors"};
EasyIn easy = new EasyIn();
HashMap winners = new HashMap();
String playerWeapon;
String cpuWeapon;
int cpuScore = 0;
int playerScore = 0;

public static void main(String[] args) {
RockPaperScissors rps = new RockPaperScissors();

boolean quit = false;
while (quit == false) {
rps.playerWeapon = rps.getPlayerWeapon();
rps.cpuWeapon = rps.getCpuWeapon();
System.out.println("\nYou chose: " + rps.playerWeapon);
System.out.println("The computer chose: " + rps.cpuWeapon + "\n");

rps.getWinner(rps.cpuWeapon, rps.playerWeapon);
if (rps.playAgain() == false) {
quit = true;
System.out.println("Bye!");
}
}
}

public RockPaperScissors() {
String rock = "Rock";
String paper = "Paper";
String scissors = "Scissors";
winners.put(rock, scissors);
winners.put(scissors, paper);
winners.put(paper, rock);
System.out.println("\n\t\tWelcome to Rock-Paper-Scissors!\n");
}

public String getPlayerWeapon() {
int choice = 6;
String weapon = null;
System.out.println("\nPlease Choose your Weapon: \n");
System.out.println("1. Rock \n2. Paper \n3. Scissors \n\n0. Quit");
try {
choice = easy.readInt();
} catch (Exception e) {
errorMsg();
return getPlayerWeapon();
}
if (choice == 0) {
System.out.println("Quitting...");
System.exit(0);
} else {
try {
weapon = weapons[(choice - 1)];
} catch (IndexOutOfBoundsException e) {
errorMsg();
return getPlayerWeapon();
}
}
return weapon;
}
public void errorMsg() {
System.out.println("\nInvalid Entry.");
System.out.println("Please Select Again...\n\n");
}

public String getCpuWeapon() {
int rounded = -1;
while (rounded < 0 || rounded > 2) {
double randomNum = Math.random();
rounded = Math.round(3 * (float)(randomNum));
}
return weapons[rounded];
}

public void getWinner(String cpuWeapon, String playerWeapon) {
if (cpuWeapon == playerWeapon) {
System.out.println("Tie!\n");
} else if (winners.get(cpuWeapon) == playerWeapon) {
System.out.println("Computer Wins!\n");
cpuScore++;
} else if (winners.get(playerWeapon) == cpuWeapon) {
System.out.println("You Win!\n");
playerScore++;
}
}

public boolean playAgain() {
printScore();
System.out.print("\nPlay Again (y/n)? ");
char answer = easy.readChar();
while (true) {
if (Character.toUpperCase(answer) == 'Y') {
return true;
} else if (Character.toUpperCase(answer) == 'N') {
return false;
} else {
errorMsg();
return playAgain();
}
}
}

public void printScore() {
System.out.println("Current Score:");
System.out.println("Player: " + playerScore);
System.out.println("Computer: " + cpuScore);
}
}


and it all works!

hooray for java!

gufmn
09-24-2002, 03:40 PM
Cool, now how about a gui? ;)

inkedmn
09-24-2002, 03:59 PM
i was thinking of doing that, actually...