Advertisement
Czeffik

Untitled

Jan 20th, 2017
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 7.90 KB | None | 0 0
  1. from random import randint
  2. import random
  3. # suit=['C','D','H','S']
  4. suit=[u'\u2660', u'\u2661', u'\u2662', u'\u2663']
  5. rank=[2,3,4,5,6,7,8,9,10,'J', 'Q', 'K', 'A']
  6. 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}
  7.  
  8. class Card(object):
  9.     def __init__(self):
  10.         self.rank=random.choice(rank)
  11.         self.suit=random.choice(suit)
  12.         self.value=values[self.rank]
  13.     def card(self):
  14.         return str(self.rank)+self.suit
  15.     def __eq__(self, other):
  16.         return self.card()==other.card()
  17.    
  18. talia=[]
  19. k=0
  20. while k<52:
  21.     karta=Card()
  22.     if karta not in talia:
  23.         talia.append(karta)
  24.         k+=1
  25.  
  26. class Player(object):
  27.     def __init__(self, name):
  28.         self.name=name
  29.         self.player_cards=[]
  30.         self.cards_value=0
  31.         self.wallet=int(input('JAK ZASOBNY MASZ PORTFEL: '))
  32.         self.bet=0
  33.         self.move=''
  34.         self.splitted_cards=[]
  35.         self.splitted_cards_value=0
  36.         self.bet_splitted_cards=0
  37.  
  38. class Game(object):
  39.     def __init__(self, number_of_players):
  40.         self.number_of_players=int(number_of_players)
  41.         self.croupier_cards=[]
  42.         self.croupier_cards_value=0
  43.         self.list_of_player=[]
  44.  
  45.     def add_players(self):
  46.         k=0
  47.         while k<self.number_of_players:
  48.             k+=1
  49.             self.list_of_player.append(Player(input('Jak nazywa się gracz?')))
  50.            
  51.     def hit(self,gracz):
  52.         gracz.player_cards.append(talia[0])
  53.         del talia[0]
  54.        
  55.     def double(self,gracz):
  56.         gracz.wallet=gracz.wallet-gracz.bet
  57.         gracz.bet=gracz.bet*2
  58.        
  59.     def split(self,gracz):
  60.         gracz.splitted_cards.append(gracz.player_cards[0])
  61.         del gracz.player_cards[0]
  62.         gracz.bet_splitted_cards=gracz.bet
  63.         gracz.wallet=gracz.wallet-gracz.bet
  64.         self.hit(gracz)
  65.         self.split_hit(gracz)
  66.        
  67.     def split_hit(self,gracz):
  68.         gracz.splitted_cards.append(talia[0])
  69.         del(talia[0])
  70.        
  71.     def auction(self,gracz):
  72.         gracz.move=input('Wprowadz s - żeby spasować, h - żeby dobrać kartę, d - żeby podwoić zakład lub p - żeby rozdzielić karty.')
  73.         if gracz.move=='s' or gracz.move=='S':
  74.             self.card_value(gracz)
  75.             pass
  76.         elif gracz.move=='h' or gracz.move=='H':
  77.             self.hit(gracz)
  78.             self.card_value(gracz)
  79.         elif gracz.move=='d' or gracz.move=='D':
  80.             self.double(gracz)
  81.             self.card_value(gracz)
  82.         elif gracz.move=='p' or gracz.move=='P':
  83.             if gracz.player_cards[0].rank==gracz.player_cards[1].rank and gracz.wallet>=gracz.bet:
  84.                 self.split(gracz)
  85.             else:
  86.                 print('You could not SPLIT your cards!')
  87.                 return self.auction(gracz)
  88.         else:
  89.             print ('%s please give a commend from list!' %(gracz.name))
  90.             return self.auction(gracz)
  91.  
  92.     def auction_for_all(self):
  93.         for gracz in self.list_of_player:
  94.             while gracz.move!='s':
  95.                 self.print_players_cards()
  96.                 print('Licytuje %s'%(gracz.name))
  97.                 self.auction(gracz)
  98.                
  99.     def get_bet(self, gracz):
  100.         bet = int(input('%s za ile grasz?' %(gracz.name)))
  101.         if bet>gracz.wallet:
  102.             print('Nie masz tyle hajsu!')
  103.             return self.get_bet(gracz)
  104.         else:
  105.             gracz.wallet=gracz.wallet-bet
  106.             gracz.bet+=bet
  107.            
  108.     def get_bet_players(self):
  109.         for gracz in self.list_of_player:
  110.             self.get_bet(gracz)
  111.            
  112.     def splitted_card_value(self, gracz):
  113.         gracz.splitted_cards_value=0
  114.         for card in gracz.splitted_cards:
  115.             gracz.splitted_cards_value+=card.value
  116.         if gracz.splitted_cards_value<=11:
  117.             for card in gracz.splitted_cards:
  118.                 if card.rank=='A':
  119.                     gracz.splitted_cards_value+=10
  120.                    
  121.     def card_value(self,gracz):
  122.         gracz.cards_value=0
  123.         for card in gracz.player_cards:
  124.             gracz.cards_value+=card.value
  125.         if gracz.cards_value<=11:
  126.             for card in gracz.player_cards:
  127.                 if card.rank=='A':
  128.                     gracz.cards_value+=10
  129.                    
  130.  
  131.     def give_cards_player(self):
  132.         k=0
  133.         while k<2:
  134.             k+=1
  135.             self.croupier_cards.append(talia[0])
  136.             del talia[0]
  137.             for gracz in self.list_of_player:
  138.                 gracz.player_cards.append(talia[0])
  139.                 del talia[0]
  140.                
  141.     def print_player_cards(self,gracz):
  142.         lists=[]
  143.         for numbers in range(len(gracz)):
  144.             lists.append(gracz[numbers].card())
  145.         return lists
  146.    
  147.     def print_players_cards(self):
  148.         for gracz in self.list_of_player:
  149.             self.card_value(gracz)
  150.             if len(gracz.splitted_cards)>0:
  151.                 print (gracz.name,'Portfel:', gracz.wallet, 'Stawka:', gracz.bet, self.print_player_cards(gracz.player_cards), 'Wartość kart:', gracz.cards_value)
  152.                 print (gracz.name,'Portfel:', gracz.wallet, 'Stawka:', gracz.bet_splitted_cards, self.print_player_cards(gracz.splitted_cards), 'Wartość kart:', gracz.splitted_cards_value)
  153.             else:
  154.                 print (gracz.name, 'Portfel:', gracz.wallet, 'Stawka:', gracz.bet, self.print_player_cards(gracz.player_cards), 'Wartość kart:', gracz.cards_value)
  155.                
  156.     def winning(self, gracz):
  157.         if gracz.cards_value>21:
  158.             gracz.bet=0
  159.             return ('%s PRZEGRYWASZ'%(gracz.name), 'Portfel:', gracz.wallet)
  160.         elif gracz.cards_value==21 and len(gracz.player_cards)==2:
  161.             if self.croupier_cards_value==21 and len(self.croupier_cards)==2:
  162.                 gracz.wallet=gracz.wallet+gracz.bet
  163.                 gracz.bet=0
  164.                 return ('%s REMISUJE'%(gracz.name), 'Portfel:', gracz.wallet)
  165.             else:
  166.                 gracz.wallet=gracz.wallet+int((gracz.bet*3)/2)
  167.                 gracz.bet=0
  168.                 return ('%s WYGRYWA! BLACKJACK'%(gracz.name), 'Portfel:', gracz.wallet)
  169.         elif gracz.cards_value==self.croupier_cards_value:
  170.             gracz.wallet=gracz.wallet+gracz.bet
  171.             gracz.bet=0
  172.             return('%s REMISUJE'%(gracz.name), 'Portfel:', gracz.wallet)
  173.         elif gracz.cards_value>self.croupier_cards_value:
  174.             gracz.wallet=gracz.wallet+(gracz.bet*2)
  175.             gracz.bet=0
  176.             return('%s WYGRYWA!'%(gracz.name), 'Portfel:', gracz.wallet)
  177.         elif gracz.cards_value<22 and self.croupier_cards_value>21:
  178.             gracz.wallet=gracz.wallet+(gracz.bet*2)
  179.             gracz.bet=0
  180.             return('%s WYGRYWA!'%(gracz.name),'Portfel:', gracz.wallet)
  181.         elif gracz.cards_value<self.croupier_cards_value:
  182.             gracz.bet=0
  183.             return ('%s PRZEGRYWASZ'%(gracz.name), 'Portfel:', gracz.wallet)
  184.        
  185.     def winning_players(self):
  186.         for gracz in self.list_of_player:
  187.             print (self.winning(gracz))
  188.            
  189.     def croupier_drawing(self):
  190.         for cards in self.croupier_cards:
  191.             self.croupier_cards_value+=cards.value
  192.         while self.croupier_cards_value<17:
  193.             self.croupier_cards.append(talia[0])
  194.             self.croupier_cards_value+=talia[0].value
  195.             del talia[0]
  196.            
  197.     def croupier_card_printing(self):
  198.         lists=[]
  199.         for cards in self.croupier_cards:
  200.             lists.append(cards.card())
  201.         print ('Karty KRUPIERA', lists)
  202.  
  203.     def playing(self):
  204.         self.add_players()
  205.         self.get_bet_players()
  206.         self.give_cards_player()
  207.         print('Karta KRUPIERA', self.croupier_cards[0].card())
  208.         self.auction_for_all()
  209.         self.croupier_drawing()
  210.         self.croupier_card_printing()
  211.         self.winning_players()
  212.  
  213. aretek=Game(input('How many players plays a game?'))
  214. aretek.playing()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement