diff options
Diffstat (limited to 'rbot/plugins/roshambo.rb')
-rw-r--r-- | rbot/plugins/roshambo.rb | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/rbot/plugins/roshambo.rb b/rbot/plugins/roshambo.rb new file mode 100644 index 00000000..4f20fb15 --- /dev/null +++ b/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") |