kit carlson

This commit is contained in:
Alberto Xamin 2020-11-23 17:54:38 +01:00
parent 08ff9abad6
commit d2a67b7350
No known key found for this signature in database
GPG Key ID: 4F026F48309500A2
2 changed files with 34 additions and 17 deletions

View File

@ -26,6 +26,9 @@ class Deck:
self.game.notify_scrap_pile() self.game.notify_scrap_pile()
return card return card
def put_on_top(self, card: Card):
self.cards.insert(0, card)
def draw(self) -> Card: def draw(self) -> Card:
card = self.cards.pop(0) card = self.cards.pop(0)
if len(self.cards) == 0: if len(self.cards) == 0:

View File

@ -1,3 +1,4 @@
import deck
from enum import IntEnum from enum import IntEnum
import json import json
from random import randrange from random import randrange
@ -124,24 +125,30 @@ class Player:
def draw(self, pile): def draw(self, pile):
if self.pending_action != PendingAction.DRAW: if self.pending_action != PendingAction.DRAW:
return return
self.pending_action = PendingAction.PLAY if isinstance(self.character, characters.KitCarlson):
if pile == 'scrap' and isinstance(self.character, characters.PedroRamirez): self.is_drawing = True
self.hand.append(self.game.deck.draw_from_scrap_pile()) self.available_cards = [self.game.deck.draw() for i in range(3)]
self.hand.append(self.game.deck.draw()) self.pending_action = PendingAction.CHOOSE
if type(pile) == str and pile != self.name and pile in self.game.players_map and isinstance(self.character, characters.JesseJones) and len(self.game.get_player_named(pile).hand) > 0: self.notify_self()
self.hand.append(self.game.get_player_named(pile).hand.pop(randrange(0, len(self.game.get_player_named(pile).hand))))
self.hand.append(self.game.deck.draw())
else: else:
for i in range(2): self.pending_action = PendingAction.PLAY
card: cards.Card = self.game.deck.draw() if pile == 'scrap' and isinstance(self.character, characters.PedroRamirez):
self.hand.append(card) self.hand.append(self.game.deck.draw_from_scrap_pile())
if i == 1 and isinstance(self.character, characters.BlackJack): self.hand.append(self.game.deck.draw())
for p in self.game.players: if type(pile) == str and pile != self.name and pile in self.game.players_map and isinstance(self.character, characters.JesseJones) and len(self.game.get_player_named(pile).hand) > 0:
if p != self: self.hand.append(self.game.get_player_named(pile).hand.pop(randrange(0, len(self.game.get_player_named(pile).hand))))
p.notify_card(self, card) self.hand.append(self.game.deck.draw())
if card.suit == cards.Suit.HEARTS or card.suit == cards.Suit.DIAMONDS: else:
self.hand.append(self.game.deck.draw()) for i in range(2):
self.notify_self() card: cards.Card = self.game.deck.draw()
self.hand.append(card)
if i == 1 and isinstance(self.character, characters.BlackJack):
for p in self.game.players:
if p != self:
p.notify_card(self, card)
if card.suit == cards.Suit.HEARTS or card.suit == cards.Suit.DIAMONDS:
self.hand.append(self.game.deck.draw())
self.notify_self()
def pick(self): def pick(self):
if self.pending_action != PendingAction.PICK: if self.pending_action != PendingAction.PICK:
@ -316,6 +323,13 @@ class Player:
self.choose_action = '' self.choose_action = ''
self.pending_action = PendingAction.PLAY self.pending_action = PendingAction.PLAY
self.notify_self() self.notify_self()
elif self.is_drawing and isinstance(self.character, characters.KitCarlson):
self.hand.append(self.available_cards.pop(card_index))
if len(self.available_cards) == 1:
self.game.deck.put_on_top(self.available_cards.pop())
self.is_drawing = False
self.pending_action = PendingAction.PLAY
self.notify_self()
else: else:
self.game.respond_emporio(self, card_index) self.game.respond_emporio(self, card_index)