For my computer science class I am tasked with writing a rock/paper/scissors game. I understand how to write the game, but I was wondering if someone more experienced than I could give me some pointers on how to become a better programmer.
Is there anything I could do to reduce the size of the code, but without diminishing functionality?
public class RockPaperScissors
{
static double wins = 0;
static double losses = 0;
static double draws = 0;
static double games = 0;
private static void lose() {
System.out.println("YOU LOSE! :D");
losses++;
games++;
}
private static void win() {
System.out.println("you win :D");
wins++;
games++;
}
// main method
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
// variables
Integer answer1 = 0;
boolean playing = true;
// start of game
do
{
// main menu
System.out.println("Input R, P, S, or Q(to quit).");
// player's move
String answer = scan.next();
answer = answer.toLowerCase();
// converts player's move from str to int
switch (answer.charAt(0))
{
case 'r':
answer1 = 0;
break;
case 'p':
answer1 = 1;
break;
case 's':
answer1 = 2;
break;
case 'q':
System.out.println("User exit.");
double winP = wins/games*100;
double loseP = losses/games*100;
double drawP = draws/games*100;
System.out.println("Wins: " + wins);
System.out.printf("%.2f", winP);
System.out.println(" Percent");
System.out.println("Losses: " + losses);
System.out.printf("%.2f", loseP);
System.out.println(" Percent");
System.out.println("Draws: " + draws);
System.out.printf("%.2f", drawP);
System.out.println(" Percent");
playing = false;
break;
default:
System.out.println("ERROR!!");
playing = false;
break;
}
// checks for conditions
if (playing)
{
// computer's move
Random random = new Random();
Integer choice = random.nextInt(3); // (n-1) 0 = rock, 1 = paper, 2 = scissors
String comp = choice.toString();
switch (comp)
{
case "0":
System.out.println("computer chose rock");
break;
case "1":
System.out.println("computer chose paper");
break;
case "2":
System.out.println("computer chose scissors");
break;
default:
System.out.println("ERROR!");
break;
}
// checks results
if (answer1 == choice)
{
System.out.println("Draw");
draws++;
games++;
}
else if ((answer1 + 1) % 3 == choice)
lose();
else if ((choice + 1) % 3 == answer1)
win();
else
System.out.println("ERROR! ERROR!");
}
} while (playing);
}
}