All pastes #584840 Raw Edit

Mine

public java v1 · immutable
·published 2007-06-22 23:14 UTC
rendered paste body
import org.jibble.pircbot.*;import java.io.*;import java.util.Scanner;import java.util.ArrayList;import java.util.Random;public class Bot extends PircBot {    public final String PARENT = "C:\\Documents and Settings\\Tanner Rogalsky\\My Documents\\RPS\\users";    public String mainChannel;        public ArrayList<RPSUser> users;    public ArrayList<String> playing;    public ArrayList<Integer> playingIndex; //index of the playing user in the users arraylist    public boolean gameOn, signup, throwing;    public RPSUser player1, player2;    public String p1Throw, p2Throw;    public Bot(String channel, String nick) {        setName(nick);        setLogin(nick);        mainChannel = channel;        readStats();        newGame();    }             public void onMessage(String channel, String sender, String login, String hostname, String message) {        String[] command = message.toLowerCase().trim().split(" ");        if ((command[0].equals("!rps")) && (!gameOn)){            message ("Type \"aye\" if you wish to play. " + sender + " should type \"!start\" to begin the game.");            addPlayer(sender);            gameOn = true;            signup = true;        } else if ((command[0].equals("end")) && (gameOn) && (sender.equals(playing.get(0)))){            message("Game exited.");            User[] temp = getUsers(mainChannel);            for(User user : temp){                if(user.hasVoice()){                    deVoice(mainChannel, user.getNick());                }            }            newGame();        } else if ((command[0].equals("aye")) && (signup)){            addPlayer(sender);        } else if ((command[0].equals("!start")) && (signup) && (sender.equals(playing.get(0))) && (playing.size() > 1)){            signup = false;            Random r = new Random();            player1 = users.get(playingIndex.get(playing.indexOf(playing.get(r.nextInt(playing.size())))).intValue());            do {                player2 = users.get(playingIndex.get(playing.indexOf(playing.get(r.nextInt(playing.size())))).intValue());            } while (player1.equals(player2));            message(player1.getNick() + " vs. " + player2.getNick() + ". PM me your throws.");            throwing = true;        } else if ((command[0].equals("!start")) && (signup) && (sender.equals(playing.get(0))) && (playing.size() <= 1)){            message("Not enough players, douchebag. Recruit!");        }    }        public void onPrivateMessage(String sender, String login, String hostname, String message){        message = message.toLowerCase().trim();        if ((throwing) && (sender.equals(player1.getNick()))){            if (message.equals("rock")){                player1.incrementRocksThrown();                p1Throw = message;                sendMessage(sender, "Your throw has been registered.");            } else if (message.equals("paper")){                player1.incrementPapersThrown();                p1Throw = message;                sendMessage(sender, "Your throw has been registered.");            } else if (message.equals("scissors")){                player1.incrementScissorsThrown();                p1Throw = message;                sendMessage(sender, "Your throw has been registered.");            } else {                sendMessage(sender, "Invalid throw.");            }        } else if ((throwing) && (sender.equals(player2.getNick()))){            if (message.equals("rock")){                player2.incrementRocksThrown();                p2Throw = message;                sendMessage(sender, "Your throw has been registered.");            } else if (message.equals("paper")){                player2.incrementPapersThrown();                p2Throw = message;                sendMessage(sender, "Your throw has been registered.");            } else if (message.equals("scissors")){                player2.incrementScissorsThrown();                p2Throw = message;                sendMessage(sender, "Your throw has been registered.");            } else {                sendMessage(sender, "Invalid throw.");            }        } else if (message.equals("info")){            for (RPSUser user : users){                sendMessage(sender, user.toString());            }        } else if (message.equals("you should go now.")){            quitServer();        }        if ((p1Throw != null) && (p2Throw != null)){            evaluateThrows();        }    }        public void onJoin(String channel, String sender, String login, String hostname){        sendNotice(sender, "Type \"/msg " + getNick() + " help\" for help.");    }        public void onDisconnect(){        writeStats();        System.exit(0);    }        // Returns the index of the specified nick in the stats arraylist    private int indexOf(String nick){        int index = 0;        for(RPSUser user : users){            if (nick.equals(user.getNick())){                return index;            }        }        return -1;    }        private void newGame(){        playing = new ArrayList();        playingIndex = new ArrayList();        gameOn = false;        signup = false;        throwing = false;        player1 = null;        player2 = null;    }        private void addPlayer(String nick){        boolean already = false;        for (String temp : playing){            if (temp.equals(nick)){                already = true;            }        }        if (!already){            playing.add(nick);            voice(mainChannel, nick);            int index = indexOf(nick);            if (index == -1){                users.add(new RPSUser(nick + ",0,0,0,0,0,0"));                playingIndex.add(new Integer(users.size()-1));            } else {                playingIndex.add(new Integer(index));            }        }    }        private void readStats(){        users = new ArrayList();        Scanner s = null;        try {            s = new Scanner(new BufferedReader(new FileReader(new File(PARENT, "stats.csv"))));            s.nextLine();            while (s.hasNextLine()) {                users.add(new RPSUser(s.nextLine()));            }        } catch(Exception e){            s.close();        } finally {            if (s != null) {                s.close();            }        }        for (RPSUser user : users){           System.out.println(user.toString());        }    }        private void writeStats(){        PrintWriter out = null;        try {            out = new PrintWriter(new BufferedWriter(new FileWriter(new File(PARENT, "stats.csv"))));            out.println("Nick,wins,loses,ties,rocks thrown,papers thrown,scissors thrown");            for (RPSUser user : users) {                out.println(user.toString());            }        } catch(Exception e){        } finally {            if (out != null) {                out.close();            }        }    }        public void message(String message){        sendMessage(mainChannel, message);    }        private void winOrLose(RPSUser winner, RPSUser loser){        message(winner.getNick() + " wins the hand! " + loser.getNick() + " loses.");        winner.incrementWins();        loser.incrementLoses();                String nick = loser.getNick();        deVoice(mainChannel, nick);        int index = playing.indexOf(nick);        playing.remove(index);        playingIndex.remove(index);                p1Throw = null;        p2Throw = null;                if (playing.size() > 1){            Random r = new Random();            player1 = users.get(playingIndex.get(playing.indexOf(playing.get(r.nextInt(playing.size())))).intValue());            do {                player2 = users.get(playingIndex.get(playing.indexOf(playing.get(r.nextInt(playing.size())))).intValue());            } while (player1.equals(player2));            message("New game: " + player1.getNick() + " vs. " + player2.getNick() + ". PM me your throws.");        } else {            deVoice(mainChannel, playing.get(0));            message(playing.get(0) + " has won the ladder! Game over.");            newGame();        }    }         private void evaluateThrows(){        String message = player1.getNick() + " threw " + p1Throw + ". " + player2.getNick() + " threw " + p2Throw + ". ";        if ((p1Throw.equals("rock")) && (p2Throw.equals("paper"))){            winOrLose(player2, player1);        } else if ((p1Throw.equals("paper")) && (p2Throw.equals("scissors"))){            winOrLose(player2, player1);        } else if ((p1Throw.equals("scissors")) && (p2Throw.equals("rock"))){            winOrLose(player2, player1);        } else if ((p1Throw.equals("rock")) && (p2Throw.equals("scissors"))){            winOrLose(player1, player2);        } else if ((p1Throw.equals("paper")) && (p2Throw.equals("rock"))){            winOrLose(player1, player2);        } else if ((p1Throw.equals("scissors")) && (p2Throw.equals("paper"))){            winOrLose(player1, player2);        } else if (p1Throw.equals(p2Throw)){            message("Tie! PM me your next throws.");            player1.incrementTies();            player2.incrementTies();            p1Throw = null;            p2Throw = null;        }    } }