import java.util.Scanner; // Player.java ... RJM Programming ... May, 2014 import java.util.Random; public class Player { private String username; private String name; private int points; private static int numPlayers = 0; private static String playerNamesList = " "; public Player ( ) { System.out.print("Please enter Player Name (enter exits): "); Scanner in = new Scanner(System.in); String inplayer = in.nextLine().trim(); if (inplayer != "") { if (getName(inplayer) != "") { setName( inplayer ); setUsername( getName(inplayer) ); setPoints( getPoints(username) ); } else { numPlayers++; setName( inplayer ); setUsername( "" ); setPoints( 0 ); playerNamesList = playerNamesList + String.format(username + ";" + name + ";" + points) + " "; } } } public Player ( String newUsername ) { if (getUsername(newUsername) != "") { setName( getName(newUsername) ); setUsername( newUsername ); setPoints( getPoints(newUsername) ); } else if (getName(newUsername) != "") { setName( getName(newUsername) ); setUsername( newUsername ); setPoints( getPoints(newUsername) ); } } public Player( String newUsername, String newName, int newPoints ) { if (getUsername(newUsername) == "") { numPlayers++; setName( newName ); setUsername( newUsername ); setPoints( newPoints ); playerNamesList = playerNamesList + String.format(username + ";" + name + ";" + points) + " "; } else if (newName != "") { setName( getName(newUsername) ); setUsername( newUsername ); setPoints( getPoints(newUsername) ); playerNamesList = playerNamesList.replace(String.format(username + ";" + name + ";" + points), String.format(username + ";" + name + ";" + newPoints)); setPoints( newPoints ); } else { System.err.println( "Need a name." ); } } public String getUsername( String proposedUsername ) { if (playerNamesList.indexOf(" " + proposedUsername + ";") != -1) { return proposedUsername; } else { return ""; } } public String getName( String proposedUsername ) { if (playerNamesList.indexOf(" " + proposedUsername + ";") != -1) { int npos = playerNamesList.indexOf(" " + proposedUsername + ";") + proposedUsername.length() + 2; return playerNamesList.substring(npos, playerNamesList.substring(npos).indexOf(";") + npos); } else if (playerNamesList.indexOf(";" + proposedUsername + ";") != -1) { String[] splitArray = playerNamesList.substring(0,(playerNamesList.indexOf(";" + proposedUsername + ";")-0)).split(" "); return getUsername(splitArray[splitArray.length - 1]); } else { return ""; } } public int getPoints( String proposedUsername ) { if (playerNamesList.indexOf(" " + proposedUsername + ";") != -1) { int npos = playerNamesList.indexOf(" " + proposedUsername + ";") + proposedUsername.length() + 2; int nnpos = playerNamesList.substring(npos).indexOf(";") + npos + 1; setPoints(Integer.parseInt(playerNamesList.substring(nnpos, playerNamesList.substring(nnpos).indexOf(" ") + nnpos))); return Integer.parseInt(playerNamesList.substring(nnpos, playerNamesList.substring(nnpos).indexOf(" ") + nnpos)); } else if (playerNamesList.indexOf(";" + proposedUsername + ";") != -1) { String[] splitArray = playerNamesList.substring(0,(playerNamesList.indexOf(";" + proposedUsername + ";")-0)).split(" "); return getPoints(splitArray[splitArray.length - 1]); } else { return 0; } } public String getUsername( ) { return username; } public void setUsername( String newUsername ) { if (newUsername == "") { String[] splitArray = name.split("\\s+"); try { username = splitArray[0].substring(0,1) + String.format("" + numPlayers); } catch (Exception e) { username = ""; } } else { username = newUsername; } } public String getName( ) { return name; } public void setName( String newName ) { name = newName; } public int getPoints( ) { return points; } public static int getnumbPlayers( ) { return numPlayers; } public void setPoints( int newPoints ) { if ( newPoints >= 0 ) { playerNamesList = playerNamesList.replace(String.format(username + ";" + name + ";" + points), String.format(username + ";" + name + ";" + newPoints)); points = newPoints; } else { points = 0; System.err.println( "Points cannot be negative." ); System.err.println( "Points set to 0." ); } } @Override public String toString() { return String.format(username + ";" + name + ";" + points); } public boolean equals(Object object) { if(object instanceof Player && ((Player)object).getUsername() == this.username){ return true; } else { return false; } } public static void main(String[] args) { Player playerleft, playerright; int pointsleft = 0, pointsright = 0; int other = 0, winneris = 0; Random rnum = new Random(); Random rwinner = new Random(); for (int ic=1; ic<=args.length; ic++) { if (((ic - 1) % 2) == 0) { playerleft = new Player("", args[ic - 1].replace("_", " "), 0); if (playerleft.equals(playerleft)) System.out.println(playerleft.toString()); String[] splitArray1 = playerNamesList.substring(playerNamesList.indexOf(";" + args[ic - 1].replace("_", " ") + ";") + args[ic - 1].length() + 2).split(" "); pointsleft = Integer.parseInt(splitArray1[0]); // playerleft.getPoints(args[ic - 1].replace("_", " ")); if (ic > 1) { other = rnum.nextInt(ic - 1) + 0; playerright = new Player((args[other].replace("_", " "))); String[] splitArray2 = playerNamesList.substring(playerNamesList.indexOf(";" + args[other].replace("_", " ") + ";") + args[other].length() + 2).split(" "); pointsright = Integer.parseInt(splitArray2[0]); // playerleft.getPoints(args[ic - 1].replace("_", " ")); winneris = rwinner.nextInt(1) + 0; if (winneris == 0) { System.out.println("Game between " + ic + " and " + (other + 1) + " is won by " + ic); playerNamesList = playerNamesList.replace(String.format(";" + args[ic - 1].replace("_", " ") + ";" + pointsleft), String.format(";" + args[ic - 1].replace("_", " ") + ";" + (pointsleft + 1))); } else { System.out.println("Game between " + ic + " and " + (other + 1) + " is won by " + (other + 1)); playerNamesList = playerNamesList.replace(String.format(";" + args[other].replace("_", " ") + ";" + pointsright), String.format(";" + args[other].replace("_", " ") + ";" + (pointsright + 1))); } } } else { playerright = new Player("", args[ic - 1].replace("_", " "), 0); if (playerright.equals(playerright)) System.out.println(playerright.toString()); String[] splitArray3 = playerNamesList.substring(playerNamesList.indexOf(";" + args[ic - 1].replace("_", " ") + ";") + args[ic - 1].length() + 2).split(" "); pointsright = Integer.parseInt(splitArray3[0]); // playerleft.getPoints(args[ic - 1].replace("_", " ")); if (ic > 2) { other = rnum.nextInt(ic - 1) + 0; playerleft = new Player((args[other].replace("_", " "))); String[] splitArray4 = playerNamesList.substring(playerNamesList.indexOf(";" + args[other].replace("_", " ") + ";") + args[other].length() + 2).split(" "); pointsleft = Integer.parseInt(splitArray4[0]); // playerleft.getPoints(args[ic - 1].replace("_", " ")); } winneris = rwinner.nextInt(1) + 0; if (winneris == 0) { System.out.println("Game between " + ic + " and " + (other + 1) + " is won by " + (other + 1)); playerNamesList = playerNamesList.replace(String.format(";" + args[other].replace("_", " ") + ";" + pointsleft), String.format(";" + args[other].replace("_", " ") + ";" + (pointsleft + 1))); } else { System.out.println("Game between " + ic + " and " + (other + 1) + " is won by " + ic); playerNamesList = playerNamesList.replace(String.format(";" + args[ic - 1].replace("_", " ") + ";" + pointsright), String.format(";" + args[ic - 1].replace("_", " ") + ";" + (pointsright + 1))); } } } System.out.println(playerNamesList); } }