Anonymous user
Rock-paper-scissors: Difference between revisions
→{{header|Java}}
(Go solution) |
|||
Line 433:
This could probably be made simpler, but some more complexity is necessary so that other items besides rock, paper, and scissors can be added (as school children and nerds like to do [setup for rock-paper-scissors-lizard-spock is in multi-line comments]). The method <code>getAIChoice()</code> borrows from [[#Ada|the Ada example]] in spirit, but is more generic to additional items.
<lang java5>import java.util.Arrays;
import java.util.Collections;▼
import java.util.EnumMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
public class RPS {
public enum Item{
ROCK, PAPER, SCISSORS, /*LIZARD, SPOCK*/;
public List<Item> losesToList;
public boolean losesTo(Item other) {
return losesToList.contains(other);
static {
/*▼
*/▼
}
}
//EnumMap uses a simple array under the hood
public
▲ put(Item.ROCK, Arrays.asList(Item.SCISSORS/*, Item.LIZARD*/));
▲ put(Item.PAPER, Arrays.asList(Item.ROCK/*, Item.SPOCK*/));
▲ /*
▲ */
}};
▲ put(Item.ROCK, Arrays.asList(Item.PAPER/*, Item.SPOCK*/));
▲ /*
▲ put(Item.SPOCK, Arrays.asList(Item.PAPER, Item.LIZARD));
▲ put(Item.LIZARD, Arrays.asList(Item.SCISSORS, Item.ROCK));
▲ put(Item.ROCK, 1);
▲ private static int totalThrows = Item.values().length;
public static void main(String[] args){
RPS rps = new RPS();
rps.run();
▲ }
public void run() {
Scanner in = new Scanner(System.in);
System.out.print("Make your choice: ");
Line 493 ⟶ 485:
totalThrows++;
System.out.println("Computer chose: " + aiChoice);
if(aiChoice
System.out.println("Tie!");
}else if(
System.out.println("You chose...wisely. You win!");
}else{
Line 504 ⟶ 496:
}
private static
private Item getAIChoice() {
int rand =
▲ for(Item item:Item.values()){
Item item = entry.getKey();
int count = entry.getValue();
return losesTo.get(item).get(0);▼
if(rand < count){
List<Item> losesTo = item.losesToList;
}
rand -=
}
return null;
|