Code archives/Algorithms/D&D Dice Roller
This code has been declared by its author to be Public Domain code.
Download source code
| |||||
My old D&D roots flared up while I was messing around with arrays today. Maybe I'll use this in the future. Accepts any sided die input. Use is simple: Print RollDice("3d6") Print RollDice("1d6+2") Print RollDice("1d20-3") etc etc | |||||
SeedRnd MilliSecs() Local dice$ = "1d20+3" For i = 1 To 20 Print "Rolling "+dice+": "++RollDice(dice) Next End Function RollDice:Int(die$) If Left$(die,1) = "d" Then die = "1" + die Local roll$[] = die.split("d") Local ppos = Instr(roll[1],"+") Local mpos = Instr(roll[1],"-") Local bonus%, total% If ppos > 0 bonus = Int(Mid$(roll[1], ppos+1, roll[1].length-ppos)) roll[1] = Left(roll[1], ppos-1) ElseIf mpos > 0 bonus = Int(Mid$(roll[1], mpos, roll[1].length-mpos+1)) roll[1] = Left(roll[1], mpos-1) EndIf For Local i% = 1 To Int(roll[0]) total:+ Rand(Int(roll[1])) Next Return total + bonus End Function |
Comments
| ||
Very nice! I think all of us D&D guys have done this at some point. |
| ||
thanks, im always doing games that need dice rolls |
| ||
is there an easy way to see if the number is within certain values? |
| ||
If you require a Blitz .bb version go to http://www.blitzbasic.com/codearcs/codearcs.php?code=2124 |
| ||
Well I guess this would do just as well...Local attackRoll% = RollDice(1,20,3) '1d20+3 Function RollDice%(rolls%, die%, bonus%) Local dieTotal%, i% For i = 1 to rolls dieTotal :+ Rand(die) Next Return dieTotal + bonus End Function |
Code Archives Forum