3 # Play the game of roshambo (rock-paper-scissors)
4 # Copyright (C) 2004 Hans Fugal
5 # Distributed under the same license as rbot itself
9 class RoshamboPlugin < Plugin
14 @plays = [:rock, :paper, :scissor]
15 @beats = { :rock => :scissors, :paper => :rock, :scissors => :paper}
18 def help(plugin, topic="")
19 "roshambo <rock|paper|scissors> or rps <rock|paper|scissors> => play roshambo"
24 choice = @plays.pick_one
27 if not @scoreboard.has_key?(m.sourcenick) or (Time.now - @scoreboard[m.sourcenick]['timestamp']) > 3600
28 @scoreboard[m.sourcenick] = { 'me' => 0, 'you' => 0, 'timestamp' => Time.now }
30 play = params[:play].to_sym
31 s = score(choice, play)
32 @scoreboard[m.sourcenick]['timestamp'] = Time.now
33 myscore=@scoreboard[m.sourcenick]['me']
34 yourscore=@scoreboard[m.sourcenick]['you']
37 yourscore = @scoreboard[m.sourcenick]['you'] += 1
38 m.reply "#{choice}. You win. Score: me #{myscore} you #{yourscore}"
40 m.reply "#{choice}. We tie. Score: me #{myscore} you #{yourscore}"
42 myscore = @scoreboard[m.sourcenick]['me'] += 1
43 m.reply "#{choice}! I win! Score: me #{myscore} you #{yourscore}"
48 return -1 if @beats[a] == b
49 return 1 if @beats[b] == a
54 plugin = RoshamboPlugin.new
55 plugin.map "roshambo :play", :action => :rps, :requirements => { :play => /rock|paper|scissors/ }
56 plugin.map "rps :play", :action => :rps, :requirements => { :play => /rock|paper|scissors/ }