1- '''
2-
3- Welcome to GDB Online.
4- GDB online is an online compiler and debugger tool for C, C++, Python, Java, PHP, Ruby, Perl,
5- C#, VB, Swift, Pascal, Fortran, Haskell, Objective-C, Assembly, HTML, CSS, JS, SQLite, Prolog.
6- Code, Compile, Run and Debug online from anywhere in world.
7-
8- '''
9-
101import random
112
12- class Player : #
13- #__init__
14- def __init__ (self , inputname , inputage , playerType ):
15- self .name = inputname
3+ class Player :
4+ def __init__ (self , inputname , inputage , playerType ):
5+ self .name = inputname
166 self .age = inputage
177 self .cards = []
188 self .score = 0
19- self .money = 100
20- self .bet = 10
9+ self .money = 1000 # Initial bankroll
10+ self .bet = 0
2111 self .playerType = playerType
2212 self .scoreDictionary = {
23- '2' : 2 ,
24- '3' : 3 ,
25- '4' : 4 ,
26- '5' : 5 ,
27- '6' : 6 ,
28- '7' : 7 ,
29- '8' : 8 ,
30- '9' : 9 ,
31- '10' : 10 ,
32- 'J' : 10 ,
33- 'Q' : 10 ,
34- 'K' : 10 ,
35- 'A' : 11
13+ '2' : 2 ,
14+ '3' : 3 ,
15+ '4' : 4 ,
16+ '5' : 5 ,
17+ '6' : 6 ,
18+ '7' : 7 ,
19+ '8' : 8 ,
20+ '9' : 9 ,
21+ '10' : 10 ,
22+ 'J' : 10 ,
23+ 'Q' : 10 ,
24+ 'K' : 10 ,
25+ 'A' : 11
3626 }
37-
38- def playRound ():
39- #dosomething
40- #player
41- pass
42-
43- def drawCards (self ,inputCard ):
44- self .cards .append ( inputCard )
27+
28+ def placeBet (self ):
29+ while True :
30+ try :
31+ bet = int (input ("Enter your bet amount: " ))
32+ if bet < min_bet or bet > max_bet :
33+ print ("Invalid bet amount. Please enter a bet between" , min_bet , "and" , max_bet )
34+ elif bet > self .money :
35+ print ("You don't have enough money for that bet." )
36+ else :
37+ self .bet = bet
38+ break
39+ except ValueError :
40+ print ("Invalid input. Please enter a valid number." )
41+
42+ def playRound (self ):
43+ if self .playerType == 'human' :
44+ while self .score < 21 :
45+ userChoice = input ("Do you want to draw extra card? Answer yes or no: " )
46+ if userChoice .lower () == 'yes' :
47+ cardDrawn = self .drawCard ()
48+ self .drawCards (cardDrawn )
49+ print (self .cards )
50+ self .getScore ()
51+ else :
52+ break
53+
54+ def drawCards (self , inputCard ):
55+ self .cards .append (inputCard )
4556
4657 def getScore (self ):
4758 self .score = 0
4859 for card in self .cards :
49- self .score = self . score + self .scoreDictionary [card ]
60+ self .score += self .scoreDictionary [card ]
5061 return self .score
51-
62+
63+ def adjustAceValue (self ):
64+ while self .score > 21 and 'A' in self .cards :
65+ self .score -= 10
66+
5267class GameBlackJack :
53- #__init__
5468 def __init__ (self , dealer , playerlist ):
5569 self .playerlist = playerlist
5670 self .dealer = dealer
57- self .cardDeck = []
58- self .genDeck () #
71+ self .cardDeck = []
72+ self .genDeck ()
5973
74+ def startRound (self ):
75+ for player in self .playerlist :
76+ player .placeBet ()
6077
6178 def drawCardsRound1 (self ):
62- # playerlist = [player1, player2]
63- for i in range (2 ):
79+ for i in range (2 ):
6480 for player in self .playerlist :
6581 cardDrawn = self .drawCard ()
66- # player
67- player .drawCards ( cardDrawn )
82+ player .drawCards (cardDrawn )
6883
69- # for dealer #cardDrawn = self.cardDeck.pop( randNumber )
7084 cardDrawn = self .drawCard ()
71- # dealer
72- self .dealer .drawCards ( cardDrawn )
85+ self .dealer .drawCards (cardDrawn )
7386
74- # cards human
7587 for player in self .playerlist :
7688 if player .playerType == 'human' :
7789 print (player .cards )
7890
7991 def drawCard (self ):
80- #randNumber = random.randint(0, 51)
81- randNumber = random .randint (0 , len (self .cardDeck )- 1 )
82- # card deck cardDeck
83- cardDrawn = self .cardDeck .pop ( randNumber )
92+ randNumber = random .randint (0 , len (self .cardDeck )- 1 )
93+ cardDrawn = self .cardDeck .pop (randNumber )
8494 return cardDrawn
8595
8696 def drawCardsRound2 (self ):
87- # Loop through AI players
8897 for player in self .playerlist :
8998 if player .playerType == 'AI' :
90- # check player score
91- while player .getScore () < 14 :
99+ while player .getScore () < 14 :
92100 cardDrawn = self .drawCard ()
93- player .drawCards ( cardDrawn )
101+ player .drawCards (cardDrawn )
94102 elif player .playerType == 'human' :
95103 userChoice = 'yes'
96104 while userChoice == 'yes' :
97- userChoice = input ("Do you want to draw extra card? Answer yes or no : " )
105+ userChoice = input ("Do you want to draw extra card? Answer yes or no: " )
98106 if userChoice == 'yes' :
99107 cardDrawn = self .drawCard ()
100- player .drawCards ( cardDrawn )
108+ player .drawCards (cardDrawn )
101109 print (player .cards )
102-
110+
103111 def playRound3 (self ):
104- # dealer function
105- # dealer 14 card
106- while self .dealer .getScore () < 14 :
112+ while self .dealer .getScore () < 14 :
107113 cardDrawn = self .drawCard ()
108- self .dealer .drawCards ( cardDrawn )
109-
110- print ("dealer.cards" + str (self .dealer .cards ))
114+ self .dealer .drawCards (cardDrawn )
115+
116+ print ("dealer.cards: " + str (self .dealer .cards ))
111117
112118 for player in self .playerlist :
113119 if (self .dealer .getScore () <= 21 ) and (player .getScore () <= 21 ):
114120 if self .dealer .getScore () > player .getScore ():
115- self .dealer .money = self . dealer . money + player .bet
116- player .money = player . money - player .bet
117- print ('dealer wins ' + player .name )
121+ self .dealer .money += player .bet
122+ player .money -= player .bet
123+ print ('dealer wins ' + player .name )
118124 elif self .dealer .getScore () < player .getScore ():
119- self .dealer .money = self . dealer . money - player .bet
120- player .money = player . money + player .bet
121- print ('dealer loses ' + player .name )
125+ self .dealer .money -= player .bet
126+ player .money += player .bet
127+ print ('dealer loses ' + player .name )
122128 else :
123- pass
124- print ('dealer draw ' + player .name )
129+ print ('dealer draw ' + player .name )
125130
126131 elif (self .dealer .getScore () <= 21 ) and (player .getScore () > 21 ):
127- print ('dealer wins ' + player .name )
128-
132+ print ('dealer wins ' + player .name )
133+
129134 elif (self .dealer .getScore () > 21 ) and (player .getScore () <= 21 ):
130- print ('dealer loses ' + player .name )
131- self .dealer .money = self . dealer . money + player .bet
132- player .money = player . money - player .bet
135+ print ('dealer loses ' + player .name )
136+ self .dealer .money -= player .bet
137+ player .money += player .bet
133138
134139 elif (self .dealer .getScore () > 21 ) and (player .getScore () > 21 ):
135- print ('dealer wins ' + player .name )
136- player .money = player . money + player .bet
137- print ('dealer loses ' + player .name )
140+ print ('dealer wins ' + player .name )
141+ player .money += player .bet
142+ print ('dealer loses ' + player .name )
138143
139144 if player .playerType == "human" :
140145 print ("My Money: " + str (player .money ))
141146
142-
143147 def removeLossers (self ):
144148 i = 0
145149 for player in self .playerlist :
146150 if player .money <= 0 :
147151 self .playerlist .pop (i )
148- i = i + 1
149-
152+ i += 1
153+
150154 def refreshPlayerCard (self ):
151155 for player in self .playerlist :
152156 player .cards = []
153157 dealer .cards = []
154-
158+
155159 def genDeck (self ):
156160 cardType = ['2' ,'3' ,'4' ,'5' ,'6' ,'7' ,'8' ,'9' ,'10' ,'J' ,'Q' ,'K' ,'A' ]
157161 self .cardDeck = []
158162 for card in cardType :
159- self .cardDeck .append (card )
160163 self .cardDeck .append (card )
161164 self .cardDeck .append (card )
162165 self .cardDeck .append (card )
163- #print(cardType)
164- #print(self.cardDeck)
166+ self .cardDeck .append (card )
165167
166- # Play
167- player1 = Player ('chawin' , 22 , 'human' )
168+ # Set betting limits
169+ min_bet = 5
170+ max_bet = 100
171+
172+ # Players
173+ player1 = Player ('George' , 22 , 'human' )
168174player2 = Player ('soon' , 21 , 'AI' )
169175player3 = Player ('PAXI' , 28 , 'AI' )
170176player4 = Player ('cactus' , 41 , 'AI' )
171177
172178dealer = Player ('Mc Donald' , 78 , 'AI' )
173179
174- playerlist = [ player1 , player2 , player3 , player4 ]
180+ playerlist = [player1 , player2 , player3 , player4 ]
175181
176- game1 = GameBlackJack ( dealer , playerlist )
182+ game1 = GameBlackJack (dealer , playerlist )
177183
178184gameRound = 0
179185
180186while gameRound < 2 :
181187 print ("Round " + str (gameRound + 1 ))
188+ game1 .startRound () # Prompt players to place bets
182189 game1 .genDeck ()
183190 game1 .refreshPlayerCard ()
184191 game1 .drawCardsRound1 ()
185192 game1 .drawCardsRound2 ()
186193 game1 .playRound3 ()
187- game1 .removeLossers
188- gameRound = gameRound + 1
189-
194+ game1 .removeLossers ()
195+ gameRound += 1
0 commit comments