summaryrefslogtreecommitdiff
path: root/lib/rbot/plugins/roshambo.rb
diff options
context:
space:
mode:
authorTom Gilbert <tom@linuxbrit.co.uk>2005-07-27 16:32:32 +0000
committerTom Gilbert <tom@linuxbrit.co.uk>2005-07-27 16:32:32 +0000
commit2a96c9198c1f6e13407d0999083f6ce5e0bc06fa (patch)
treeb3b9247d275d9b554665bc22884104d266d2e757 /lib/rbot/plugins/roshambo.rb
parent21949774b91eaec6ecde4eaa8ad121e2c0a36b87 (diff)
move rbot into lib - still rearranging for packaging/installation
Diffstat (limited to 'lib/rbot/plugins/roshambo.rb')
-rw-r--r--lib/rbot/plugins/roshambo.rb54
1 files changed, 54 insertions, 0 deletions
diff --git a/lib/rbot/plugins/roshambo.rb b/lib/rbot/plugins/roshambo.rb
new file mode 100644
index 00000000..4f20fb15
--- /dev/null
+++ b/lib/rbot/plugins/roshambo.rb
@@ -0,0 +1,54 @@
+# Play the game of roshambo (rock-paper-scissors)
+# Copyright (C) 2004 Hans Fugal
+# Distributed under the same license as rbot itself
+require 'time'
+class RoshamboPlugin < Plugin
+ def initialize
+ super
+ @scoreboard = {}
+ end
+ def help(plugin, topic="")
+ "roshambo <rock|paper|scissors> => play roshambo"
+ end
+ def privmsg(m)
+ # simultaneity
+ choice = choose
+
+ # init scoreboard
+ if (not @scoreboard.has_key?(m.sourcenick) or (Time.now - @scoreboard[m.sourcenick]['timestamp']) > 3600)
+ @scoreboard[m.sourcenick] = {'me'=>0,'you'=>0,'timestamp'=>Time.now}
+ end
+ case m.params
+ when 'rock','paper','scissors'
+ s = score(choice,m.params)
+ @scoreboard[m.sourcenick]['timestamp'] = Time.now
+ myscore=@scoreboard[m.sourcenick]['me']
+ yourscore=@scoreboard[m.sourcenick]['you']
+ case s
+ when 1
+ yourscore=@scoreboard[m.sourcenick]['you'] += 1
+ m.reply "#{choice}. You win. Score: me #{myscore} you #{yourscore}"
+ when 0
+ m.reply "#{choice}. We tie. Score: me #{myscore} you #{yourscore}"
+ when -1
+ myscore=@scoreboard[m.sourcenick]['me'] += 1
+ m.reply "#{choice}! I win! Score: me #{myscore} you #{yourscore}"
+ end
+ else
+ m.reply "incorrect usage: " + help(m.plugin)
+ end
+ end
+
+ def choose
+ ['rock','paper','scissors'][rand(3)]
+ end
+ def score(a,b)
+ beats = {'rock'=>'scissors', 'paper'=>'rock', 'scissors'=>'paper'}
+ return -1 if beats[a] == b
+ return 1 if beats[b] == a
+ return 0
+ end
+end
+plugin = RoshamboPlugin.new
+plugin.register("roshambo")
+plugin.register("rps")