Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- """Blackjack game."""
- import requests
- class Card:
- """Class for card."""
- def __init__(self, value: str, suit: str, code: str):
- """
- Konstruktor teeb kaardi objekti, võttes sisendparameetriteks kaardi väärtuse, masti ja koodi.
- Väärtused peab salvestama sama nimega isendiväljadele (card, suit, code).
- values = ['2', '3', '4', '5', '6', '7', '8', '9', '10', 'JACK', 'QUEEN', 'KING', 'ACE']
- suits = ['SPADES', 'DIAMONDS', 'HEARTS', 'CLUBS']
- codes = {'AS', '2S', '3S', '4S', '5S', '6S', '7S', '8S', '9S', '0S', 'JS', 'QS', 'KS',
- 'AD', '2D', '3D', '4D', '5D', '6D', '7D', '8D', '9D', '0D', 'JD', 'QD', 'KD',
- 'AC', '2C', '3C', '4C', '5C', '6C', '7C', '8C', '9C', '0C', 'JC', 'QC', 'KC',
- 'AH', '2H', '3H', '4H', '5H', '6H', '7H', '8H', '9H', '0H', 'JH', 'QH', 'KH'}.
- """
- values = ['2', '3', '4', '5', '6', '7', '8', '9', '10', 'JACK', 'QUEEN', 'KING', 'ACE']
- suits = ['SPADES', 'DIAMONDS', 'HEARTS', 'CLUBS']
- codes = {'AS', '2S', '3S', '4S', '5S', '6S', '7S', '8S', '9S', '0S', 'JS', 'QS', 'KS',
- 'AD', '2D', '3D', '4D', '5D', '6D', '7D', '8D', '9D', '0D', 'JD', 'QD', 'KD',
- 'AC', '2C', '3C', '4C', '5C', '6C', '7C', '8C', '9C', '0C', 'JC', 'QC', 'KC',
- 'AH', '2H', '3H', '4H', '5H', '6H', '7H', '8H', '9H', '0H', 'JH', 'QH', 'KH'}
- self.top_down = False
- self.value = value
- self.suit = suit
- self.code = code
- def __str__(self):
- """Prindib kaardi koodi juhul, kui top_down == False, vastasel juhul prindib ??."""
- return self.code if not self.top_down else "??"
- def __repr__(self) -> str:
- """Tagastab code-väljal oleva väärtuse."""
- return self.code
- def __eq__(self, other) -> bool:
- """
- Võrdleb Card objekti teise objektiga. Tagastab True, kui teine object on Card tüüpi.
- ja sama masti ning väärtusega.
- """
- return isinstance(other, Card) and self.suit == other.suit and self.value == other.value
- class Deck:
- """Class for deck."""
- DECK_BASE_API = "https://deckofcardsapi.com/api/deck/"
- def __init__(self, deck_count: int = 1, shuffle: bool = False):
- """
- Konstruktor teeb Deck objekti. Saab sisendiks pakkide arvu (mitu 52 kaardist pakki on) ja boolean muutuja.
- mis määrab, kas kaardipakid peavad olema segatud või ei. Salvestada tuleb deck_count ning ka shuffeled
- väärtused. Viimase salvestamiseks kasutada isendimuutujat nimega is_shuffled. Lisaks peab isendimuutujas nimega
- remaining hoidma kaardipakis olevate kaartide arvu (võib kasutada ka property'd) Kaardipaki genereerimiseks
- kasutada
- Kuna klass peab toimima ka ilma interneti ühenduseta, siis on tuleb valmis genereerida ka n-ö tagavara
- kaardipakk, mida saaks kasutada, kui api lõpetab töötamise. Tagavara kaardipakk salvestada muutujasse
- _backup_deck. Seda tagavara pakki on mõistlik sünkroniseerida API-st tuleneva pakiga. Ehk siis kui API ütleb,
- et järgmine kaart on S3, siis tuleks see ka tagavara pakist eemaldada jne.
- """
- self.deck_count = deck_count
- self.shuffle = shuffle
- self._backup_deck = []
- self.remaining = -1
- try:
- self.response = requests.get(Deck.DECK_BASE_API)
- except requests.exceptions.ConnectionError:
- self.response = None
- if self.response is not None and self.response.status_code == requests.codes.ok:
- self.result = self.response.json()
- self.is_shuffled = self.result["shuffled"]
- self.remaining = self.result["remaining"]
- self.deck_id = self.result["deck_id"]
- def shuffle(self) -> None:
- """Segab kaardipaki, kasutada https: // deckofcardsapi.com / api / deck / << deck_id >> / shuffle /."""
- def draw_card(self, top_down: bool = False): # -> Optional[Card]
- """
- Draw card from the deck.
- :return: card instance.
- """
- pass
- def _request(self, url: str) -> dict:
- """Update deck."""
- pass
- @staticmethod
- def _generate_backup_pile(): # -> List[Card]:
- """Generate backup pile."""
- return []
- if __name__ == '__main__':
- d = Deck(shuffle=True)
- print(d.remaining) # 52
- card1 = d.draw_card() # Random card
- print(card1 in d._backup_deck) # False
- print(d._backup_deck) # 51 shuffled cards
- d2 = Deck(deck_count=2)
- print(d2._backup_deck) # 104 ordered cards (deck after deck)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement