fortunes_foundation/dealer.lua

45 lines
775 B
Lua

function deal(ruleset,seed)
local n_usable_cards=ruleset.n_usable_cards
local n_usable_slots=ruleset.n_slots-1
local tower_height = n_usable_cards\n_usable_slots
local r=rnd()
--
srand(seed)
local slots={}
for i=1,n_usable_slots do
slots[i]={}
end
local cards={}
for i=1,#ruleset.deck.cards do
add(cards,i)
end
for a in all(ruleset.deck.aces) do
del(cards,a)
end
assert(#cards==n_usable_cards)
local slot=0
while #cards>0 do
local arr=slots[1+(slot%#slots)]
local i=flr(rnd(#cards))
local card=cards[i+1]
if (ruleset.deck.instantly_accepted[card] and #arr==0) then
-- do not use
else
add(arr,card,1)
deli(cards,i+1)
slot+=1
end
end
for i=1,#slots do
assert(#slots[i]==tower_height)
end
srand(r)
return slots
end