rendered paste bodyimport 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;
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.equals("rock"))){
sendMessage (channel, Colors.RED + player1 + ": scissors. " + player2 + ": rock. " + player2 + " wins!");
deVoice (channel, player1);
loser = player1;
}else if ((p1Choice.equals("rock")) && (p2Choice.equals("scissors"))){
sendMessage (channel, Colors.RED + player1 + ": rock. " + player2 + ": scissors. " + player1 + " wins!");
deVoice (channel, player2);
loser = player2;
}else if ((p1Choice.equals("scissors")) && (p2Choice.equals("paper"))){
sendMessage (channel, Colors.RED + player1 + ": scissors. " + player2 + ": paper. " + player1 + " wins!");
deVoice (channel, player2);
loser = player2;
}else if ((p1Choice.equals("paper")) && (p2Choice.equals("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);
}
}