diff options
author | Tom Gilbert <tom@linuxbrit.co.uk> | 2005-07-27 16:32:32 +0000 |
---|---|---|
committer | Tom Gilbert <tom@linuxbrit.co.uk> | 2005-07-27 16:32:32 +0000 |
commit | 2a96c9198c1f6e13407d0999083f6ce5e0bc06fa (patch) | |
tree | b3b9247d275d9b554665bc22884104d266d2e757 /lib/rbot/plugins/roshambo.rb | |
parent | 21949774b91eaec6ecde4eaa8ad121e2c0a36b87 (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.rb | 54 |
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") |