Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from random import randint
- import random
- # suit=['C','D','H','S']
- suit=[u'\u2660', u'\u2661', u'\u2662', u'\u2663']
- rank=[2,3,4,5,6,7,8,9,10,'J', 'Q', 'K', 'A']
- values={'A':1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,10:10,'J':10,'Q':10,'K':10}
- class Card(object):
- def __init__(self):
- self.rank=random.choice(rank)
- self.suit=random.choice(suit)
- self.value=values[self.rank]
- def card(self):
- return str(self.rank)+self.suit
- def __eq__(self, other):
- return self.card()==other.card()
- talia=[]
- k=0
- while k<52:
- karta=Card()
- if karta not in talia:
- talia.append(karta)
- k+=1
- class Player(object):
- def __init__(self, name):
- self.name=name
- self.player_cards=[]
- self.cards_value=0
- self.wallet=int(input('JAK ZASOBNY MASZ PORTFEL: '))
- self.bet=0
- self.move=''
- self.splitted_cards=[]
- self.splitted_cards_value=0
- self.bet_splitted_cards=0
- class Game(object):
- def __init__(self, number_of_players):
- self.number_of_players=int(number_of_players)
- self.croupier_cards=[]
- self.croupier_cards_value=0
- self.list_of_player=[]
- def add_players(self):
- k=0
- while k<self.number_of_players:
- k+=1
- self.list_of_player.append(Player(input('Jak nazywa się gracz?')))
- def hit(self,gracz):
- gracz.player_cards.append(talia[0])
- del talia[0]
- def double(self,gracz):
- gracz.wallet=gracz.wallet-gracz.bet
- gracz.bet=gracz.bet*2
- def split(self,gracz):
- gracz.splitted_cards.append(gracz.player_cards[0])
- del gracz.player_cards[0]
- gracz.bet_splitted_cards=gracz.bet
- gracz.wallet=gracz.wallet-gracz.bet
- self.hit(gracz)
- self.split_hit(gracz)
- def split_hit(self,gracz):
- gracz.splitted_cards.append(talia[0])
- del(talia[0])
- def auction(self,gracz):
- gracz.move=input('Wprowadz s - żeby spasować, h - żeby dobrać kartę, d - żeby podwoić zakład lub p - żeby rozdzielić karty.')
- if gracz.move=='s' or gracz.move=='S':
- self.card_value(gracz)
- pass
- elif gracz.move=='h' or gracz.move=='H':
- self.hit(gracz)
- self.card_value(gracz)
- elif gracz.move=='d' or gracz.move=='D':
- self.double(gracz)
- self.card_value(gracz)
- elif gracz.move=='p' or gracz.move=='P':
- if gracz.player_cards[0].rank==gracz.player_cards[1].rank and gracz.wallet>=gracz.bet:
- self.split(gracz)
- else:
- print('You could not SPLIT your cards!')
- return self.auction(gracz)
- else:
- print ('%s please give a commend from list!' %(gracz.name))
- return self.auction(gracz)
- def auction_for_all(self):
- for gracz in self.list_of_player:
- while gracz.move!='s':
- self.print_players_cards()
- print('Licytuje %s'%(gracz.name))
- self.auction(gracz)
- def get_bet(self, gracz):
- bet = int(input('%s za ile grasz?' %(gracz.name)))
- if bet>gracz.wallet:
- print('Nie masz tyle hajsu!')
- return self.get_bet(gracz)
- else:
- gracz.wallet=gracz.wallet-bet
- gracz.bet+=bet
- def get_bet_players(self):
- for gracz in self.list_of_player:
- self.get_bet(gracz)
- def splitted_card_value(self, gracz):
- gracz.splitted_cards_value=0
- for card in gracz.splitted_cards:
- gracz.splitted_cards_value+=card.value
- if gracz.splitted_cards_value<=11:
- for card in gracz.splitted_cards:
- if card.rank=='A':
- gracz.splitted_cards_value+=10
- def card_value(self,gracz):
- gracz.cards_value=0
- for card in gracz.player_cards:
- gracz.cards_value+=card.value
- if gracz.cards_value<=11:
- for card in gracz.player_cards:
- if card.rank=='A':
- gracz.cards_value+=10
- def give_cards_player(self):
- k=0
- while k<2:
- k+=1
- self.croupier_cards.append(talia[0])
- del talia[0]
- for gracz in self.list_of_player:
- gracz.player_cards.append(talia[0])
- del talia[0]
- def print_player_cards(self,gracz):
- lists=[]
- for numbers in range(len(gracz)):
- lists.append(gracz[numbers].card())
- return lists
- def print_players_cards(self):
- for gracz in self.list_of_player:
- self.card_value(gracz)
- if len(gracz.splitted_cards)>0:
- print (gracz.name,'Portfel:', gracz.wallet, 'Stawka:', gracz.bet, self.print_player_cards(gracz.player_cards), 'Wartość kart:', gracz.cards_value)
- print (gracz.name,'Portfel:', gracz.wallet, 'Stawka:', gracz.bet_splitted_cards, self.print_player_cards(gracz.splitted_cards), 'Wartość kart:', gracz.splitted_cards_value)
- else:
- print (gracz.name, 'Portfel:', gracz.wallet, 'Stawka:', gracz.bet, self.print_player_cards(gracz.player_cards), 'Wartość kart:', gracz.cards_value)
- def winning(self, gracz):
- if gracz.cards_value>21:
- gracz.bet=0
- return ('%s PRZEGRYWASZ'%(gracz.name), 'Portfel:', gracz.wallet)
- elif gracz.cards_value==21 and len(gracz.player_cards)==2:
- if self.croupier_cards_value==21 and len(self.croupier_cards)==2:
- gracz.wallet=gracz.wallet+gracz.bet
- gracz.bet=0
- return ('%s REMISUJE'%(gracz.name), 'Portfel:', gracz.wallet)
- else:
- gracz.wallet=gracz.wallet+int((gracz.bet*3)/2)
- gracz.bet=0
- return ('%s WYGRYWA! BLACKJACK'%(gracz.name), 'Portfel:', gracz.wallet)
- elif gracz.cards_value==self.croupier_cards_value:
- gracz.wallet=gracz.wallet+gracz.bet
- gracz.bet=0
- return('%s REMISUJE'%(gracz.name), 'Portfel:', gracz.wallet)
- elif gracz.cards_value>self.croupier_cards_value:
- gracz.wallet=gracz.wallet+(gracz.bet*2)
- gracz.bet=0
- return('%s WYGRYWA!'%(gracz.name), 'Portfel:', gracz.wallet)
- elif gracz.cards_value<22 and self.croupier_cards_value>21:
- gracz.wallet=gracz.wallet+(gracz.bet*2)
- gracz.bet=0
- return('%s WYGRYWA!'%(gracz.name),'Portfel:', gracz.wallet)
- elif gracz.cards_value<self.croupier_cards_value:
- gracz.bet=0
- return ('%s PRZEGRYWASZ'%(gracz.name), 'Portfel:', gracz.wallet)
- def winning_players(self):
- for gracz in self.list_of_player:
- print (self.winning(gracz))
- def croupier_drawing(self):
- for cards in self.croupier_cards:
- self.croupier_cards_value+=cards.value
- while self.croupier_cards_value<17:
- self.croupier_cards.append(talia[0])
- self.croupier_cards_value+=talia[0].value
- del talia[0]
- def croupier_card_printing(self):
- lists=[]
- for cards in self.croupier_cards:
- lists.append(cards.card())
- print ('Karty KRUPIERA', lists)
- def playing(self):
- self.add_players()
- self.get_bet_players()
- self.give_cards_player()
- print('Karta KRUPIERA', self.croupier_cards[0].card())
- self.auction_for_all()
- self.croupier_drawing()
- self.croupier_card_printing()
- self.winning_players()
- aretek=Game(input('How many players plays a game?'))
- aretek.playing()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement