All pastes #390039 Raw Edit

Mine

public text v1 · immutable
·published 2007-03-11 03:06 UTC
rendered paste body
import org.jibble.pircbot.*;
import java.util.*;

public class MyBot extends PircBot {

    ArrayList<User> players;
    String master, player1, player2;
    String p1Choice, p2Choice;
    boolean setup, inProgress;
    int num;
    final int ROCK = 0;
    final int PAPER = 1;
    final int SCISSORS = 2;
    final int NOTHING = -1;

    public MyBot() {
        this.setName("RPSBot");
        this.setLogin("BOT");
    }
    
    //public void onConnect() {}
    public void onMessage(String channel, String sender,
                       String login, String hostname, String message) {
        message = message.toLowerCase().trim();
        if ((message.equalsIgnoreCase("!quit")) && (hostname.equals ("private-A895A092.home.cgocable.net"))){
            disconnect();
        }else if (message.equals("!wumpus")){
            sendMessage (channel, "I'm not the motherfucking WumpusBot!");
        }else if (message.indexOf("!draw") == 0){
            TextInputFile in = new TextInputFile ("map" + getDigits(message) + ".txt");
            while (!in.eof()){
                sendMessage (channel, in.readLine());
            }
            in.close();
        }else if ((message.equals("!rps")) && (!setup) && (!inProgress)){
            master = sender;
            setup = true;
            num = 0;
            sendMessage (channel, Colors.RED + "ROCK PAPER SCISSORS!");
            sendMessage (channel, Colors.RED + "Say AYE if you wish to play.");
            sendMessage (channel, Colors.RED + "The game will commence when the person who typed !rps types !start");
            players = new ArrayList<User>();
        }else if ((message.equals("aye")) && (setup)){
            voice (channel, sender);
            num++;
        }else if ((message.equals("!start")) && (setup) && (sender.equals (master)) && (num >= 2)){
            setup = false;
            inProgress = true;
            sendMessage (channel, Colors.RED + "The player list is being compiled.");
            User[] temp = getUsers(channel);
            for (int i = 0; i < temp.length; i++){
                if (temp[i].hasVoice()) players.add (temp[i]);
            }
            String list = "";
            for (int i = 0; i < players.size(); i++){
                if (i == 0) list = list + players.get(i).getNick();
                else list = list + ", " + players.get(i).getNick();
            }
            sendMessage (channel, Colors.RED + "Playing are: " + list + ".");
            Random r = new Random();
            int x = r.nextInt(players.size());
            player1 = players.get(x).getNick();
            int y = r.nextInt(players.size());
            while (true) {
                y = r.nextInt(players.size());
                if (x != y) break;
            }
            player2 = players.get(y).getNick();
            sendMessage (channel, Colors.RED + "Let's begin: " + player1 + " vs " + player2 + "!");
            sendMessage (channel, Colors.RED + "PM me your choices.");
            p1Choice = "invalid";
            p2Choice = "invalid";
        }
    }
    
    public void onPrivateMessage(String sender, String login, String hostname, String message) {
        message = message.toLowerCase().trim();
        if (sender.equals (player1)){
            if (message.equals("rock")) p1Choice = "rock";
            else if (message.equals("paper")) p1Choice = "paper";
            else if (message.equals("scissors")) p1Choice = "scissors";
            else {
                sendMessage (sender, "Submission not accepted. Your submission should be one puntuationless word.");
                p1Choice = "invalid";
            }
        }else if (sender.equals (player2)){
            if (message.equals("rock")) p1Choice = "rock";
            else if (message.equals("paper")) p1Choice = "paper";
            else if (message.equals("scissors")) p1Choice = "scissors";
            else {
                sendMessage (sender, "Submission not accepted. Your submission should be one puntuationless word.");
                p1Choice = "invalid";
            }
        }
        String channel = "#rps";
        if ((!p1Choice.equals("invalid")) && (!p2Choice.equals("invalid"))){
            String loser = null;
            boolean gameOver = true;
            if (p1Choice.equals(p2Choice)){ 
                sendMessage (channel, Colors.RED + "Tied on " + p1Choice + "! Submit again.");
                p1Choice = "invalid";
                p2Choice = "invalid";
                gameOver = false;
            }else if ((p1Choice.equals("rock")) && (p2Choice.equals("paper"))){ 
                sendMessage (channel, Colors.RED + player1 + ": rock. " + player2 + ": paper. " + player2 + " wins!"); 
                deVoice (channel, player1);
                loser = player1;
            }else if ((p1Choice.equals("paper")) && (p2Choice.equals("scissors"))){ 
                sendMessage (channel, Colors.RED + player1 + ": paper. " + player2 + ": scissors. " + player2 + " wins!"); 
                deVoice (channel, player1);
                loser = player1;
            }else if ((p1Choice.equals("scissors")) && (p2Choice == ROCK)){ 
                sendMessage (channel, Colors.RED + player1 + ": scissors. " + player2 + ": rock. " + player2 + " wins!"); 
                deVoice (channel, player1);
                loser = player1;
            }else if ((p1Choice == ROCK) && (p2Choice == SCISSORS)){ 
                sendMessage (channel, Colors.RED + player1 + ": rock. " + player2 + ": scissors. " + player1 + " wins!"); 
                deVoice (channel, player2);
                loser = player2;
            }else if ((p1Choice == SCISSORS) && (p2Choice == PAPER)){ 
                sendMessage (channel, Colors.RED + player1 + ": scissors. " + player2 + ": paper. " + player1 + " wins!"); 
                deVoice (channel, player2);
                loser = player2;
            }else if ((p1Choice == PAPER) && (p2Choice == ROCK)){ 
                sendMessage (channel, Colors.RED + player1 + ": paper. " + player2 + ": rock. " + player1 + " wins!"); 
                deVoice (channel, player2);
                loser = player2;
            }
            
            if (gameOver){
                for (int i = 0; i < players.size(); i++){
                    if (players.get(i).getNick().equals(loser)) players.remove (i);
                }
            }
            if (players.size() <= 1){
                sendMessage (channel, Colors.RED + "Game over. " + players.get(0).getNick() + " wins the ladder competition.");
                deVoice (channel, players.get(0).getNick());
                inProgress = false;
            } else {
                if (gameOver){
                    Random r = new Random();
                    int x = r.nextInt(players.size());
                    player1 = players.get(x).getNick();
                    int y = r.nextInt(players.size());
                    while (true) {
                        y = r.nextInt(players.size());
                        if (x != y) break;
                    }
                    player2 = players.get(y).getNick();
                }
                sendMessage (channel, Colors.RED + "Let's begin: " + player1 + " vs " + player2 + "!");
                sendMessage (channel, Colors.RED + "PM me your choices.");
                p1Choice = "invalid";
                p2Choice = "invalid";
            }
        }
    }
    
    public void onDisconnect() {
            System.exit (0);
    }
    
    public void onKick(String channel, String kickerNick, String kickerLogin, 
                String kickerHostname, String recipientNick, String reason) {
        if (recipientNick.equals (getNick())){
            joinChannel (channel);
            sendMessage (channel, "Bite me, " + kickerNick + ".");
        }
    }
    
        // Parses the digits from a message.
    public int getDigits (String text){
        char[] chars;
        chars = text.toCharArray();
        text = "";
        for (int i = 0; i < chars.length; i++){
            if (Character.isDigit(chars[i])){
                text += chars[i];
            }
        }
        return (int)Integer.parseInt(text);
    }
}