86 lines
1.1 KiB
Plaintext
86 lines
1.1 KiB
Plaintext
macro Gluttony(vartype, capacity, foodlist)
|
|
'==========================================
|
|
|
|
typedef vartype physical
|
|
|
|
enum food foodlist
|
|
|
|
type ActualFood
|
|
sys name
|
|
physical size
|
|
physical quantity
|
|
end type
|
|
|
|
Class foodbox
|
|
'============
|
|
has ActualFood Item[capacity]
|
|
sys max
|
|
|
|
method put(sys f, physical s,q)
|
|
max++
|
|
Item[max]<=f,s,q
|
|
end method
|
|
|
|
method GetNext(ActualFood *Stuff)
|
|
if max then
|
|
copy @stuff,@Item[max], sizeof Item
|
|
max--
|
|
end if
|
|
end method
|
|
|
|
end class
|
|
|
|
Class Gourmand
|
|
'=============
|
|
physical WeightGain, SleepTime
|
|
|
|
method eats(ActualFood *stuff)
|
|
WeightGain+=stuff.size*stuff.quantity*0.75
|
|
stuff.size=0
|
|
stuff.quantity=0
|
|
end method
|
|
|
|
end class
|
|
|
|
end macro
|
|
|
|
|
|
'IMPLEMENTATION
|
|
'==============
|
|
|
|
|
|
Gluttony (
|
|
double,100,{
|
|
oyster,trout,bloater,
|
|
chocolate,truffles,
|
|
cheesecake,cream,pudding,pie
|
|
})
|
|
|
|
% small 1
|
|
% medium 2
|
|
% large 3
|
|
% huge 7
|
|
|
|
% none 0
|
|
% single 1
|
|
% few 3
|
|
% several 7
|
|
% many 12
|
|
|
|
'INSTANCE
|
|
'========
|
|
|
|
FoodBox Hamper
|
|
Gourmand MrG
|
|
|
|
'TEST
|
|
'====
|
|
|
|
Hamper.put food.pudding,large,several
|
|
Hamper.put food.pie,huge,few
|
|
ActualFood Course
|
|
Hamper.GetNext Course
|
|
MrG.eats Course
|
|
|
|
print MrG.WeightGain 'result 15.75
|