Initial setup - the test command is for command line use and shouldn't really be in production

master
root 9 years ago
commit e6a0c07dc7
  1. 9
      README
  2. 2
      db.rb
  3. 53
      die.rb
  4. 8
      dieroller.html
  5. 36
      display.rb
  6. 6
      display.rb.bk
  7. 8
      roller.rb
  8. 3
      test.rb

@ -0,0 +1,9 @@
Basically, it's a slightly lower tech version of InvisibleCastle.com
You use the dieroller.html to roll some dice, and then, use display.rb to view the resutls. Longterm goal is to emulate most of the functionality of Invisible castle.
Currently uses the format:
NdM for a roll of N dice with M sides.
If you add a ! to the end of the roll line, dice will reroll if they roll the largest number
If you add a > sign followed by a number, it will assume that you want to roll successes, and will only roll dice and count the number that come up higher than the number after the > sign

@ -0,0 +1,2 @@
require "mysql"
$my = Mysql.connect('localhost', 'dice', 'Yqv8JPzsYew34YY7', 'dieroller')

@ -0,0 +1,53 @@
def roll(rollstring)
if rollstring[rollstring.length-1] == "!"
@explode = true
rollstring = rollstring.chop
else
@explode = false
end
@token = rollstring.split("d")
@total = 0
@retval = ""
if @token[1].include? ">"
temp = @token[1].split(">")
@token[1] = temp[0]
diff = temp[1]
successes(@token[0].to_i, @token[1].to_i, diff.to_i)
@retval = @retval.to_s + " Successes: " + @total.to_s
else
@token[0].to_i.times do
adddie(@token[1].to_i)
end
@retval = @retval.to_s + " Total: " + @total.to_s
end
return @retval
end
def onedie(min,max)
return(rand(max)+min)
end
def adddie(size)
singleroll = onedie(1,size)
@retval = @retval + " " + singleroll.to_s
if @explode
if singleroll == size
adddie(size)
end
end
@total = @total.to_i + singleroll.to_i
end
def successes(num, size, diff)
num.times do
singleroll = onedie(1,size)
@retval = @retval + " " + singleroll.to_s
if @explode
if singleroll == size
successes(1, size, diff)
end
end
@total = @total+1 if singleroll.to_i >= diff
end
end

@ -0,0 +1,8 @@
<html>
<form action="roller.rb" method="post">
<p>Die Roll<input type="text" name="rollstring" /></p>
<p>User<input type="text" name="user" /></p>
<p>Game<input type="text" name="game" /></p>
<input type="submit" value="Roll Them Bones" />
</form>
</html>

@ -0,0 +1,36 @@
#!/usr/bin/ruby
require "cgi"
require "./db"
cgi = CGI.new
clause = ""
emptyclause = 0
if cgi.has_key?("user")
unless cgi.params["user"][0]==""
clause = " WHERE user='" + cgi.params["user"][0] +"'"
emptyclause = 1
end
end
if cgi.has_key?("game")
unless cgi.params["game"][0]==""
if emptyclause == 1
clause = clause + " AND "
else
clause = " WHERE "
end
clause = clause + "game ='" + cgi.params['game'][0] + "'"
end
end
print '<html>'
print ' <form action="display.rb" method="post">'
print ' User<input type="text" name="user" />'
print ' Game<input type="text" name="game" />'
print ' <input type="submit" value="Display Rolls" />'
print ' </form>'
print '</html>'
result = $my.query("SELECT * from rolls" + clause)
result.num_rows.times do
puts result.fetch_row.join("\s") + "<br />"
end

@ -0,0 +1,6 @@
#!/usr/bin/ruby
require "./db"
result = $my.query("SELECT * from rolls")
result.num_rows.times do
puts result.fetch_row.join("\s") + "<br />"
end

@ -0,0 +1,8 @@
#!/usr/bin/ruby
require "./db"
require "./die"
require "cgi"
cgi = CGI.new
result = roll(cgi.params["rollstring"][0].to_s)
$my.query("INSERT INTO rolls set result='" + cgi.params["rollstring"][0] + "', roll='" + result.to_s + "', user='" + cgi.params["user"][0] + "', game='" + cgi.params["game"][0] + "'")
puts result

@ -0,0 +1,3 @@
#!/usr/bin/ruby
require "./die.rb"
print roll (ARGV[0])
Loading…
Cancel
Save