fortunes_foundation/dealer.lua

45 lines
775 B
Lua
Raw Permalink Normal View History

2024-02-10 02:13:39 +00:00
function deal(ruleset,seed)
2024-02-08 04:59:31 +00:00
local n_usable_cards=ruleset.n_usable_cards
2024-02-10 02:13:39 +00:00
local n_usable_slots=ruleset.n_slots-1
local tower_height = n_usable_cards\n_usable_slots
2024-02-08 04:59:31 +00:00
2024-02-10 02:13:39 +00:00
local r=rnd()
2024-02-08 04:59:31 +00:00
2024-02-10 02:13:39 +00:00
--
srand(seed)
local slots={}
for i=1,n_usable_slots do
slots[i]={}
end
2024-02-08 04:59:31 +00:00
2024-02-10 02:13:39 +00:00
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
2024-02-08 04:59:31 +00:00
2024-02-10 02:13:39 +00:00
assert(#cards==n_usable_cards)
2024-02-08 04:59:31 +00:00
2024-02-10 02:13:39 +00:00
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
2024-02-08 04:59:31 +00:00
end
end
2024-02-10 02:13:39 +00:00
for i=1,#slots do
assert(#slots[i]==tower_height)
2024-02-08 04:59:31 +00:00
end
2024-02-10 02:13:39 +00:00
srand(r)
return slots
2024-02-08 04:59:31 +00:00
end