graph-games-proto 0.3.2100__py3-none-any.whl → 0.3.2107__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- graph_games_proto/fns.py +116 -68
- {graph_games_proto-0.3.2100.dist-info → graph_games_proto-0.3.2107.dist-info}/METADATA +1 -1
- {graph_games_proto-0.3.2100.dist-info → graph_games_proto-0.3.2107.dist-info}/RECORD +5 -5
- {graph_games_proto-0.3.2100.dist-info → graph_games_proto-0.3.2107.dist-info}/WHEEL +0 -0
- {graph_games_proto-0.3.2100.dist-info → graph_games_proto-0.3.2107.dist-info}/top_level.txt +0 -0
graph_games_proto/fns.py
CHANGED
@@ -1684,28 +1684,76 @@ class Action2(PClass):
|
|
1684
1684
|
)
|
1685
1685
|
|
1686
1686
|
|
1687
|
+
class CardStack(PClass):
|
1688
|
+
hidden = field(type=bool)
|
1689
|
+
cards = field(type=list) # List[Card]
|
1690
|
+
def __todict__(self):
|
1691
|
+
return {
|
1692
|
+
"hidden": self.hidden,
|
1693
|
+
"cards": self.cards,
|
1694
|
+
}
|
1695
|
+
@staticmethod
|
1696
|
+
def __fromdict__(d):
|
1697
|
+
return CardStack(
|
1698
|
+
hidden=d["hidden"],
|
1699
|
+
cards=d["cards"],
|
1700
|
+
)
|
1701
|
+
|
1702
|
+
|
1703
|
+
class CardSpread(PClass):
|
1704
|
+
hidden = field(type=bool)
|
1705
|
+
spots = field(type=list) # List[Card|None]
|
1706
|
+
def __todict__(self):
|
1707
|
+
return {
|
1708
|
+
"hidden": self.hidden,
|
1709
|
+
"spots": self.spots,
|
1710
|
+
}
|
1711
|
+
@staticmethod
|
1712
|
+
def __fromdict__(d):
|
1713
|
+
return CardSpread(
|
1714
|
+
hidden=d["hidden"],
|
1715
|
+
spots=d["spots"],
|
1716
|
+
)
|
1717
|
+
|
1718
|
+
|
1719
|
+
|
1687
1720
|
class Deck(PClass):
|
1688
1721
|
idx = field(type=int)
|
1689
1722
|
uuid = field(type=str)
|
1690
|
-
|
1691
|
-
|
1692
|
-
|
1723
|
+
faceup_stack = field(type=CardStack)
|
1724
|
+
faceup_spread = field(type=CardSpread)
|
1725
|
+
facedown_stack = field(type=CardStack)
|
1726
|
+
facedown_spread = field(type=CardSpread)
|
1727
|
+
discard_faceup_stack = field(type=CardStack)
|
1728
|
+
discard_faceup_spread = field(type=CardSpread)
|
1729
|
+
discard_facedown_stack = field(type=CardStack)
|
1730
|
+
discard_facedown_spread = field(type=CardSpread)
|
1693
1731
|
def __todict__(self):
|
1694
1732
|
return {
|
1695
1733
|
"idx": self.idx,
|
1696
1734
|
"uuid": self.uuid,
|
1697
|
-
"
|
1698
|
-
"
|
1699
|
-
"
|
1735
|
+
"faceup_stack": self.faceup_stack.__todict(),
|
1736
|
+
"faceup_spread": self.faceup_spread.__todict(),
|
1737
|
+
"facedown_stack": self.facedown_stack.__todict(),
|
1738
|
+
"facedown_spread": self.facedown_spread.__todict(),
|
1739
|
+
"discard_faceup_stack": self.discard_faceup_stack.__todict(),
|
1740
|
+
"discard_faceup_spread": self.discard_faceup_spread.__todict(),
|
1741
|
+
"discard_facedown_stack": self.discard_facedown_stack.__todict(),
|
1742
|
+
"discard_facedown_spread": self.discard_facedown_spread.__todict(),
|
1700
1743
|
}
|
1701
1744
|
@staticmethod
|
1702
1745
|
def __fromdict__(d):
|
1703
1746
|
return Deck(
|
1704
1747
|
idx=d["idx"],
|
1705
1748
|
uuid=d["uuid"],
|
1706
|
-
|
1707
|
-
|
1708
|
-
|
1749
|
+
faceup_stack=CardStack.__fromdict__(d["faceup_stack"]),
|
1750
|
+
faceup_spread=CardSpread.__fromdict__(d["faceup_spread"]),
|
1751
|
+
facedown_stack=CardStack.__fromdict__(d["facedown_stack"]),
|
1752
|
+
facedown_spread=CardSpread.__fromdict__(d["facedown_spread"]),
|
1753
|
+
discard_faceup_stack=CardStack.__fromdict__(d["discard_faceup_stack"]),
|
1754
|
+
discard_faceup_spread=CardSpread.__fromdict__(d["discard_faceup_spread"]),
|
1755
|
+
discard_facedown_stack=CardStack.__fromdict__(d["discard_facedown_stack"]),
|
1756
|
+
discard_facedown_spread=CardSpread.__fromdict__(d["discard_facedown_spread"]),
|
1709
1757
|
)
|
1710
1758
|
|
1711
1759
|
|
@@ -2231,9 +2279,9 @@ def init_state_kernel(game_config, **kwargs):
|
|
2231
2279
|
deck_obj = Deck(
|
2232
2280
|
uuid=dek.uuid,
|
2233
2281
|
idx=dek.idx,
|
2234
|
-
|
2235
|
-
|
2236
|
-
|
2282
|
+
facedown_stack=CardStack(hidden=True, cards=[c.uuid for c in cards]),
|
2283
|
+
faceup_spread=CardSpread(hidden=False, spots=[]),
|
2284
|
+
discard_facedown_stack=CardStack(hidden=True, cards=[]),
|
2237
2285
|
)
|
2238
2286
|
starting_decks.append(deck_obj)
|
2239
2287
|
|
@@ -3198,13 +3246,13 @@ def replenish_decks_if_needed(kernel):
|
|
3198
3246
|
def replenish_faceup_spot_if_needed(kernel, deck_idx, spot_idx):
|
3199
3247
|
deck = kernel.decks[deck_idx]
|
3200
3248
|
|
3201
|
-
if deck.
|
3249
|
+
if deck.faceup_spread.spots[spot_idx] is not None:
|
3202
3250
|
return kernel
|
3203
3251
|
|
3204
|
-
if len(deck.facedown_stack) == 0:
|
3252
|
+
if len(deck.facedown_stack.cards) == 0:
|
3205
3253
|
return kernel
|
3206
|
-
|
3207
|
-
deck.
|
3254
|
+
|
3255
|
+
deck.faceup_spread.spots[spot_idx] = deck.facedown_stack.cards.pop()
|
3208
3256
|
|
3209
3257
|
kernel = ensure_faceup_spots_valid(kernel)
|
3210
3258
|
|
@@ -3216,7 +3264,7 @@ def replenish_faceup_spot_if_needed(kernel, deck_idx, spot_idx):
|
|
3216
3264
|
@dispatch(StateKernel, int)
|
3217
3265
|
def replenish_faceup_if_needed(kernel, deck_idx):
|
3218
3266
|
deck = kernel.decks[deck_idx]
|
3219
|
-
for spot_idx in range(len(deck.
|
3267
|
+
for spot_idx in range(len(deck.faceup_spread.spots)):
|
3220
3268
|
kernel = replenish_faceup_spot_if_needed(kernel, deck_idx, spot_idx)
|
3221
3269
|
return kernel
|
3222
3270
|
|
@@ -3224,12 +3272,12 @@ def replenish_faceup_if_needed(kernel, deck_idx):
|
|
3224
3272
|
@dispatch(StateKernel, int)
|
3225
3273
|
def recycle_if_needed(kernel, deck_idx):
|
3226
3274
|
deck = kernel.decks[deck_idx]
|
3227
|
-
if len(deck.facedown_stack) == 0:
|
3228
|
-
shuffled_discards = list(deck.
|
3275
|
+
if len(deck.facedown_stack.cards) == 0:
|
3276
|
+
shuffled_discards = list(deck.discard_facedown_stack.cards)
|
3229
3277
|
kernel.rng.shuffle(shuffled_discards)
|
3230
3278
|
deck = deck.set(
|
3231
|
-
facedown_stack =
|
3232
|
-
|
3279
|
+
facedown_stack=CardStack(hidden=True, cards=shuffled_discards),
|
3280
|
+
discard_facedown_stack=CardStack(hidden=True, cards=[])
|
3233
3281
|
)
|
3234
3282
|
kernel = set_deck(kernel, deck.idx, deck)
|
3235
3283
|
return kernel
|
@@ -3244,11 +3292,11 @@ def handle_draw_action(kernel, action):
|
|
3244
3292
|
player = kernel.players[legal_action.player_idx]
|
3245
3293
|
deck = kernel.decks[draw.deck_idx]
|
3246
3294
|
|
3247
|
-
if len(deck.facedown_stack) == 0:
|
3295
|
+
if len(deck.facedown_stack.cards) == 0:
|
3248
3296
|
return kernel # No cards to draw
|
3249
3297
|
|
3250
3298
|
for _ in range(draw.quantity):
|
3251
|
-
drawn_card = deck.facedown_stack.pop()
|
3299
|
+
drawn_card = deck.facedown_stack.cards.pop()
|
3252
3300
|
player.cards.append(drawn_card)
|
3253
3301
|
kernel = recycle_if_needed(kernel, draw.deck_idx)
|
3254
3302
|
|
@@ -3272,11 +3320,11 @@ def handle_draw_discard_action(kernel, action):
|
|
3272
3320
|
player = kernel.players[legal_action.player_idx]
|
3273
3321
|
deck = kernel.decks[draw_discard.deck_idx]
|
3274
3322
|
|
3275
|
-
if len(deck.facedown_stack) == 0:
|
3323
|
+
if len(deck.facedown_stack.cards) == 0:
|
3276
3324
|
return kernel # No cards to draw
|
3277
3325
|
|
3278
3326
|
for _ in range(draw_discard.quantity):
|
3279
|
-
drawn_card = deck.facedown_stack.pop()
|
3327
|
+
drawn_card = deck.facedown_stack.cards.pop()
|
3280
3328
|
player.discard_tray.append(drawn_card)
|
3281
3329
|
|
3282
3330
|
return kernel.set(
|
@@ -3292,8 +3340,8 @@ def get_follow_up_draw_legal_actions(kernel, action):
|
|
3292
3340
|
if len(kernel.history) >= 2:
|
3293
3341
|
last_action = kernel.history[-2]
|
3294
3342
|
if (last_action.legal_action.player_idx != legal_action.player_idx) or last_action.legal_action.name == "INITIAL-GOAL-KEEP":
|
3295
|
-
|
3296
|
-
if len(kernel.decks[0].facedown_stack) >= 1:
|
3343
|
+
|
3344
|
+
if len(kernel.decks[0].facedown_stack.cards) >= 1:
|
3297
3345
|
to_return.append(
|
3298
3346
|
LegalAction(
|
3299
3347
|
auto_preferred=True,
|
@@ -3308,8 +3356,8 @@ def get_follow_up_draw_legal_actions(kernel, action):
|
|
3308
3356
|
)
|
3309
3357
|
)
|
3310
3358
|
)
|
3311
|
-
|
3312
|
-
for card_uuid in kernel.decks[0].
|
3359
|
+
|
3360
|
+
for card_uuid in kernel.decks[0].faceup_spread.spots:
|
3313
3361
|
if card_uuid:
|
3314
3362
|
if not kernel.carduuid2card[card_uuid].is_wild:
|
3315
3363
|
to_return.append(
|
@@ -3332,7 +3380,7 @@ def get_follow_up_draw_legal_actions(kernel, action):
|
|
3332
3380
|
@dispatch(StateKernel, int)
|
3333
3381
|
def get_num_faceup_wilds(kernel, deck_idx):
|
3334
3382
|
deck = kernel.decks[deck_idx]
|
3335
|
-
non_empty_spots = [spot for spot in deck.
|
3383
|
+
non_empty_spots = [spot for spot in deck.faceup_spread.spots if spot]
|
3336
3384
|
if not non_empty_spots:
|
3337
3385
|
return 0
|
3338
3386
|
return sum(1 for card_uuid in non_empty_spots if kernel.carduuid2card[card_uuid].is_wild)
|
@@ -3352,14 +3400,14 @@ def ensure_faceup_spots_valid(kernel):
|
|
3352
3400
|
@dispatch(StateKernel, int)
|
3353
3401
|
def discardfaceup_shuffle_flip(kernel, deck_idx):
|
3354
3402
|
deck = kernel.decks[deck_idx]
|
3355
|
-
num_faceup_spots = len(deck.
|
3356
|
-
for faceup_spot in deck.
|
3403
|
+
num_faceup_spots = len(deck.faceup_spread.spots)
|
3404
|
+
for faceup_spot in deck.faceup_spread.spots:
|
3357
3405
|
if faceup_spot:
|
3358
|
-
deck.
|
3359
|
-
deck = deck.set(
|
3360
|
-
while len(deck.
|
3361
|
-
card = deck.
|
3362
|
-
deck.facedown_stack.append(card)
|
3406
|
+
deck.discard_facedown_stack.cards.append(faceup_spot)
|
3407
|
+
deck = deck.set(faceup_spread=CardStack(hidden=False, cards=[]))
|
3408
|
+
while len(deck.discard_facedown_stack.cards) > 0:
|
3409
|
+
card = deck.discard_facedown_stack.cards.pop()
|
3410
|
+
deck.facedown_stack.cards.append(card)
|
3363
3411
|
deck = shuffle(kernel.rng, deck)
|
3364
3412
|
kernel = set_deck(kernel, deck.idx, deck)
|
3365
3413
|
kernel = flip_cards(kernel, deck.idx, num_faceup_spots)
|
@@ -3375,11 +3423,11 @@ def handle_faceup_draw_action(kernel, action):
|
|
3375
3423
|
player = kernel.players[legal_action.player_idx]
|
3376
3424
|
deck = kernel.decks[faceup_draw.deck_idx]
|
3377
3425
|
# find the faceup spot idx with uuid "faceup_draw.card_uuid"
|
3378
|
-
spot_idx = next((i for i, card_uuid in enumerate(deck.
|
3379
|
-
drawn_card = deck.
|
3426
|
+
spot_idx = next((i for i, card_uuid in enumerate(deck.faceup_spread.spots) if card_uuid == faceup_draw.card_uuid), None)
|
3427
|
+
drawn_card = deck.faceup_spread.spots[spot_idx] if spot_idx is not None else None
|
3380
3428
|
player.cards.append(drawn_card)
|
3381
|
-
|
3382
|
-
deck.
|
3429
|
+
|
3430
|
+
deck.faceup_spread.spots[spot_idx] = None
|
3383
3431
|
kernel = kernel.set(decks=kernel.decks)
|
3384
3432
|
kernel = replenish_faceup_spot_if_needed(kernel, faceup_draw.deck_idx, spot_idx)
|
3385
3433
|
|
@@ -3596,9 +3644,9 @@ def handle_move_longest_path_card(kernel, action):
|
|
3596
3644
|
|
3597
3645
|
if len(kernel.decks) > 2:
|
3598
3646
|
longest_path_deck = kernel.decks[2]
|
3599
|
-
if longest_path_deck.facedown_stack:
|
3647
|
+
if longest_path_deck.facedown_stack.cards:
|
3600
3648
|
# Move the longest path card to the player's hand
|
3601
|
-
longest_path_card = longest_path_deck.facedown_stack.pop()
|
3649
|
+
longest_path_card = longest_path_deck.facedown_stack.cards.pop()
|
3602
3650
|
else:
|
3603
3651
|
# Search for the longest path card in each player's cards
|
3604
3652
|
player_with_card = find_player_with_longest_path_card(kernel)
|
@@ -3664,7 +3712,7 @@ def handle_move_pieces_to_path_action(kernel, action):
|
|
3664
3712
|
# Remove the card from player's cards
|
3665
3713
|
card_uuid = player.cards.pop(card_idx)
|
3666
3714
|
# add to discard
|
3667
|
-
kernel.decks[kernel.carduuid2card[card_uuid].deck_idx].
|
3715
|
+
kernel.decks[kernel.carduuid2card[card_uuid].deck_idx].discard_facedown_stack.cards.append(card_uuid)
|
3668
3716
|
|
3669
3717
|
kernel = recycle_decks_if_needed(kernel)
|
3670
3718
|
kernel = replenish_decks_if_needed(kernel)
|
@@ -3756,7 +3804,7 @@ def handle_keep_action(kernel, action):
|
|
3756
3804
|
|
3757
3805
|
|
3758
3806
|
# Discard the non-kept cards to the deck's discard pile
|
3759
|
-
deck.
|
3807
|
+
deck.discard_facedown_stack.cards.extend(non_kept_cards)
|
3760
3808
|
|
3761
3809
|
# Clear the discard tray and add the kept cards back
|
3762
3810
|
player.cards.extend([c for c in kept_cards if c is not None])
|
@@ -3798,7 +3846,7 @@ def handle_discard_action(kernel, action):
|
|
3798
3846
|
print("****************************** handle_discard_action 6", non_kept_cards)
|
3799
3847
|
|
3800
3848
|
# Discard the non-kept cards to the deck's discard pile
|
3801
|
-
deck.
|
3849
|
+
deck.discard_facedown_stack.cards.extend(non_kept_cards)
|
3802
3850
|
|
3803
3851
|
# Clear the discard tray and add the kept cards back
|
3804
3852
|
player.cards.extend([c for c in kept_cards if c is not None])
|
@@ -3827,9 +3875,9 @@ def set_deck(kernel, deck_idx, deck):
|
|
3827
3875
|
|
3828
3876
|
|
3829
3877
|
def shuffle(rng, deck):
|
3830
|
-
shuffled_cards = list(deck.facedown_stack)
|
3878
|
+
shuffled_cards = list(deck.facedown_stack.cards)
|
3831
3879
|
rng.shuffle(shuffled_cards)
|
3832
|
-
return deck.set(facedown_stack=shuffled_cards)
|
3880
|
+
return deck.set(facedown_stack=CardStack(hidden=True, cards=shuffled_cards))
|
3833
3881
|
|
3834
3882
|
|
3835
3883
|
@dispatch(StateKernel, int)
|
@@ -3838,7 +3886,7 @@ def shuffle_deck(kernel, deck_idx):
|
|
3838
3886
|
return kernel
|
3839
3887
|
|
3840
3888
|
deck = kernel.decks[deck_idx]
|
3841
|
-
if not deck or not deck.facedown_stack:
|
3889
|
+
if not deck or not deck.facedown_stack.cards:
|
3842
3890
|
return kernel
|
3843
3891
|
|
3844
3892
|
shuffled_deck = shuffle(kernel.rng, deck)
|
@@ -3864,14 +3912,14 @@ def flip_cards(kernel, deck_idx, num_cards):
|
|
3864
3912
|
return kernel
|
3865
3913
|
|
3866
3914
|
deck = kernel.decks[deck_idx]
|
3867
|
-
if not deck or not deck.facedown_stack:
|
3915
|
+
if not deck or not deck.facedown_stack.cards:
|
3868
3916
|
return kernel
|
3869
3917
|
|
3870
|
-
# Flip the top num_cards from the facedown_stack to the
|
3918
|
+
# Flip the top num_cards from the facedown_stack to the faceup_spread
|
3871
3919
|
for _ in range(num_cards):
|
3872
|
-
if deck.facedown_stack:
|
3873
|
-
card = deck.facedown_stack.pop()
|
3874
|
-
deck.
|
3920
|
+
if deck.facedown_stack.cards:
|
3921
|
+
card = deck.facedown_stack.cards.pop()
|
3922
|
+
deck.faceup_spread.spots.append(card)
|
3875
3923
|
|
3876
3924
|
return kernel.set(decks=kernel.decks)
|
3877
3925
|
|
@@ -3899,14 +3947,14 @@ def deal_cards_to_each_player_discard_tray(kernel, deck_idx, num_cards):
|
|
3899
3947
|
return kernel
|
3900
3948
|
|
3901
3949
|
deck = kernel.decks[deck_idx]
|
3902
|
-
if not deck or not deck.facedown_stack:
|
3950
|
+
if not deck or not deck.facedown_stack.cards:
|
3903
3951
|
return kernel
|
3904
3952
|
|
3905
3953
|
for player in kernel.players:
|
3906
3954
|
# Deal cards to the player's discard tray
|
3907
3955
|
for _ in range(num_cards):
|
3908
|
-
if deck.facedown_stack:
|
3909
|
-
card = deck.facedown_stack.pop()
|
3956
|
+
if deck.facedown_stack.cards:
|
3957
|
+
card = deck.facedown_stack.cards.pop()
|
3910
3958
|
player.discard_tray.append(card)
|
3911
3959
|
|
3912
3960
|
return kernel.set(players=kernel.players, decks=kernel.decks)
|
@@ -3918,15 +3966,15 @@ def deal_cards_to_each_player(kernel, deck_idx, num_cards):
|
|
3918
3966
|
return kernel
|
3919
3967
|
|
3920
3968
|
deck = kernel.decks[deck_idx]
|
3921
|
-
if not deck or not deck.facedown_stack:
|
3969
|
+
if not deck or not deck.facedown_stack.cards:
|
3922
3970
|
return kernel
|
3923
3971
|
|
3924
3972
|
for player in kernel.players:
|
3925
3973
|
player_hand = player.cards
|
3926
3974
|
# Deal cards to the player's hand
|
3927
3975
|
for _ in range(num_cards):
|
3928
|
-
if deck.facedown_stack:
|
3929
|
-
card = deck.facedown_stack.pop()
|
3976
|
+
if deck.facedown_stack.cards:
|
3977
|
+
card = deck.facedown_stack.cards.pop()
|
3930
3978
|
player_hand.append(card)
|
3931
3979
|
|
3932
3980
|
return kernel.set(players=kernel.players, decks=kernel.decks)
|
@@ -4751,9 +4799,9 @@ def getpublicdeck(s, d):
|
|
4751
4799
|
return PublicDeck(
|
4752
4800
|
idx=d.idx,
|
4753
4801
|
uuid=d.uuid,
|
4754
|
-
facedown_stack_len=len(d.facedown_stack),
|
4755
|
-
discard_len=len(d.
|
4756
|
-
faceup_spots=d.
|
4802
|
+
facedown_stack_len=len(d.facedown_stack.cards),
|
4803
|
+
discard_len=len(d.discard_facedown_stack.cards),
|
4804
|
+
faceup_spots=d.faceup_spread.spots,
|
4757
4805
|
)
|
4758
4806
|
|
4759
4807
|
|
@@ -5353,7 +5401,7 @@ def getscorecodes(f):
|
|
5353
5401
|
# filter(n -> !isnothing(s.faceup_spots[n]), 1:length(s.faceup_spots))
|
5354
5402
|
# end
|
5355
5403
|
def getvalidspotnums(s):
|
5356
|
-
return [n for n in range(1, len(s.
|
5404
|
+
return [n for n in range(1, len(s.faceup_spread.spots) + 1) if s.faceup_spread.spots[n-1] is not None]
|
5357
5405
|
|
5358
5406
|
|
5359
5407
|
def json_serializer(obj):
|
@@ -5789,7 +5837,7 @@ def get_default_legal_actions(state_kernel, player_idx):
|
|
5789
5837
|
allotted_since_action_idx = len(state_kernel.history) - 1
|
5790
5838
|
legal_actions = []
|
5791
5839
|
|
5792
|
-
if len(state_kernel.decks[1].facedown_stack) >= 1:
|
5840
|
+
if len(state_kernel.decks[1].facedown_stack.cards) >= 1:
|
5793
5841
|
legal_actions.append(
|
5794
5842
|
LegalAction(
|
5795
5843
|
player_idx=player_idx,
|
@@ -5805,7 +5853,7 @@ def get_default_legal_actions(state_kernel, player_idx):
|
|
5805
5853
|
)
|
5806
5854
|
)
|
5807
5855
|
|
5808
|
-
if len(state_kernel.decks[0].facedown_stack) >= 1:
|
5856
|
+
if len(state_kernel.decks[0].facedown_stack.cards) >= 1:
|
5809
5857
|
legal_actions.append(
|
5810
5858
|
LegalAction(
|
5811
5859
|
auto_preferred=True,
|
@@ -5821,7 +5869,7 @@ def get_default_legal_actions(state_kernel, player_idx):
|
|
5821
5869
|
)
|
5822
5870
|
)
|
5823
5871
|
|
5824
|
-
if len(state_kernel.decks[0].facedown_stack) >= 2:
|
5872
|
+
if len(state_kernel.decks[0].facedown_stack.cards) >= 2:
|
5825
5873
|
legal_actions.append(
|
5826
5874
|
LegalAction(
|
5827
5875
|
player_idx=player_idx,
|
@@ -5836,7 +5884,7 @@ def get_default_legal_actions(state_kernel, player_idx):
|
|
5836
5884
|
)
|
5837
5885
|
)
|
5838
5886
|
|
5839
|
-
for card_uuid in state_kernel.decks[0].
|
5887
|
+
for card_uuid in state_kernel.decks[0].faceup_spread.spots:
|
5840
5888
|
if card_uuid:
|
5841
5889
|
legal_actions.append(
|
5842
5890
|
LegalAction(
|
@@ -1,9 +1,9 @@
|
|
1
1
|
graph_games_proto/__init__.py,sha256=_EVQR-51XehfH45XZlba1WPdx3omS3Gm1nTwrgGyn2Q,667
|
2
2
|
graph_games_proto/all_types.py,sha256=IpbwftEcHS5Ewz-saFNk0lO9FvcbuHG36odRTayCXUk,54911
|
3
|
-
graph_games_proto/fns.py,sha256=
|
3
|
+
graph_games_proto/fns.py,sha256=hjbhH7cyvxpZncYg2LTGqlBt_mrDAjKG56VuvCiO54Y,202019
|
4
4
|
graph_games_proto/main.py,sha256=fj2U7KcwrpZtuUhjOX5yVxY18LZvvsxDFYZ_S5mxe04,145
|
5
5
|
graph_games_proto/state.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
6
|
-
graph_games_proto-0.3.
|
7
|
-
graph_games_proto-0.3.
|
8
|
-
graph_games_proto-0.3.
|
9
|
-
graph_games_proto-0.3.
|
6
|
+
graph_games_proto-0.3.2107.dist-info/METADATA,sha256=dutsrkox9vObZA9gR7Cqk0htBKvxmDQKB6erQi69UyQ,188
|
7
|
+
graph_games_proto-0.3.2107.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
|
8
|
+
graph_games_proto-0.3.2107.dist-info/top_level.txt,sha256=-4QSrBMf_MM4BGsr2QXBpqDx8c8k_OPnzGyFjqjakes,18
|
9
|
+
graph_games_proto-0.3.2107.dist-info/RECORD,,
|
File without changes
|
File without changes
|