[Back to MISC SWAG index] [Back to Main SWAG index] [Original]
{
(* NOTE *)
Dice Object was created by Todd A. Jacobs and is hereby released
into the public domain. Long live SWAG!
This unit is intended as a stand-alone object. The idea was to
create a reusable object for dice games, such that types for 2d6,
2d10, 1d20, etc. (you role-playing gamers know what I mean) wouldn't
have to be created for each dice type.
The following sample code shows it's usage by writing a screenful of
random dice rolls:
program DiceDemo;
uses Dice;
var
d6: TDice;
i: byte;
begin
randomize;
d6.init (3, 6);
for i := 1 to 23 do
writeln (d6.roll);
d6.done;
readln;
end. (*DiceDemo*)
No, it didn't have to be an object, but that's what I wanted to do.
Use it any way you like. =)
If you have any improvements to offer, please submit them to SWAG.
Thanks!
}
Unit
Dice;
interface
type
TDice = object
NumDice: byte;
Sides: byte;
constructor Init (iDice, iSides: byte);
function Roll: word; virtual;
destructor Done; virtual;
end; {type definition of TDice}
implementation
constructor TDice.Init;
begin
NumDice := iDice;
Sides := iSides;
end;
function TDice.Roll;
var
iLoopCounter: byte;
CurrValue: word;
begin
CurrValue := 0;
while iLoopCounter < NumDice do begin
CurrValue := CurrValue + Random (Sides) + 1;
inc (iLoopCounter);
end; {while iLoopCounter}
Roll := CurrValue;
end; {function Roll}
destructor TDice.Done;
begin
end;
end. {Unit Dice}
[Back to MISC SWAG index] [Back to Main SWAG index] [Original]