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
-
10
1
import random
11
2
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
16
6
self .age = inputage
17
7
self .cards = []
18
8
self .score = 0
19
- self .money = 100
20
- self .bet = 10
9
+ self .money = 1000 # Initial bankroll
10
+ self .bet = 0
21
11
self .playerType = playerType
22
12
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
36
26
}
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 )
45
56
46
57
def getScore (self ):
47
58
self .score = 0
48
59
for card in self .cards :
49
- self .score = self . score + self .scoreDictionary [card ]
60
+ self .score += self .scoreDictionary [card ]
50
61
return self .score
51
-
62
+
63
+ def adjustAceValue (self ):
64
+ while self .score > 21 and 'A' in self .cards :
65
+ self .score -= 10
66
+
52
67
class GameBlackJack :
53
- #__init__
54
68
def __init__ (self , dealer , playerlist ):
55
69
self .playerlist = playerlist
56
70
self .dealer = dealer
57
- self .cardDeck = []
58
- self .genDeck () #
71
+ self .cardDeck = []
72
+ self .genDeck ()
59
73
74
+ def startRound (self ):
75
+ for player in self .playerlist :
76
+ player .placeBet ()
60
77
61
78
def drawCardsRound1 (self ):
62
- # playerlist = [player1, player2]
63
- for i in range (2 ):
79
+ for i in range (2 ):
64
80
for player in self .playerlist :
65
81
cardDrawn = self .drawCard ()
66
- # player
67
- player .drawCards ( cardDrawn )
82
+ player .drawCards (cardDrawn )
68
83
69
- # for dealer #cardDrawn = self.cardDeck.pop( randNumber )
70
84
cardDrawn = self .drawCard ()
71
- # dealer
72
- self .dealer .drawCards ( cardDrawn )
85
+ self .dealer .drawCards (cardDrawn )
73
86
74
- # cards human
75
87
for player in self .playerlist :
76
88
if player .playerType == 'human' :
77
89
print (player .cards )
78
90
79
91
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 )
84
94
return cardDrawn
85
95
86
96
def drawCardsRound2 (self ):
87
- # Loop through AI players
88
97
for player in self .playerlist :
89
98
if player .playerType == 'AI' :
90
- # check player score
91
- while player .getScore () < 14 :
99
+ while player .getScore () < 14 :
92
100
cardDrawn = self .drawCard ()
93
- player .drawCards ( cardDrawn )
101
+ player .drawCards (cardDrawn )
94
102
elif player .playerType == 'human' :
95
103
userChoice = 'yes'
96
104
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: " )
98
106
if userChoice == 'yes' :
99
107
cardDrawn = self .drawCard ()
100
- player .drawCards ( cardDrawn )
108
+ player .drawCards (cardDrawn )
101
109
print (player .cards )
102
-
110
+
103
111
def playRound3 (self ):
104
- # dealer function
105
- # dealer 14 card
106
- while self .dealer .getScore () < 14 :
112
+ while self .dealer .getScore () < 14 :
107
113
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 ))
111
117
112
118
for player in self .playerlist :
113
119
if (self .dealer .getScore () <= 21 ) and (player .getScore () <= 21 ):
114
120
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 )
118
124
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 )
122
128
else :
123
- pass
124
- print ('dealer draw ' + player .name )
129
+ print ('dealer draw ' + player .name )
125
130
126
131
elif (self .dealer .getScore () <= 21 ) and (player .getScore () > 21 ):
127
- print ('dealer wins ' + player .name )
128
-
132
+ print ('dealer wins ' + player .name )
133
+
129
134
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
133
138
134
139
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 )
138
143
139
144
if player .playerType == "human" :
140
145
print ("My Money: " + str (player .money ))
141
146
142
-
143
147
def removeLossers (self ):
144
148
i = 0
145
149
for player in self .playerlist :
146
150
if player .money <= 0 :
147
151
self .playerlist .pop (i )
148
- i = i + 1
149
-
152
+ i += 1
153
+
150
154
def refreshPlayerCard (self ):
151
155
for player in self .playerlist :
152
156
player .cards = []
153
157
dealer .cards = []
154
-
158
+
155
159
def genDeck (self ):
156
160
cardType = ['2' ,'3' ,'4' ,'5' ,'6' ,'7' ,'8' ,'9' ,'10' ,'J' ,'Q' ,'K' ,'A' ]
157
161
self .cardDeck = []
158
162
for card in cardType :
159
- self .cardDeck .append (card )
160
163
self .cardDeck .append (card )
161
164
self .cardDeck .append (card )
162
165
self .cardDeck .append (card )
163
- #print(cardType)
164
- #print(self.cardDeck)
166
+ self .cardDeck .append (card )
165
167
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' )
168
174
player2 = Player ('soon' , 21 , 'AI' )
169
175
player3 = Player ('PAXI' , 28 , 'AI' )
170
176
player4 = Player ('cactus' , 41 , 'AI' )
171
177
172
178
dealer = Player ('Mc Donald' , 78 , 'AI' )
173
179
174
- playerlist = [ player1 , player2 , player3 , player4 ]
180
+ playerlist = [player1 , player2 , player3 , player4 ]
175
181
176
- game1 = GameBlackJack ( dealer , playerlist )
182
+ game1 = GameBlackJack (dealer , playerlist )
177
183
178
184
gameRound = 0
179
185
180
186
while gameRound < 2 :
181
187
print ("Round " + str (gameRound + 1 ))
188
+ game1 .startRound () # Prompt players to place bets
182
189
game1 .genDeck ()
183
190
game1 .refreshPlayerCard ()
184
191
game1 .drawCardsRound1 ()
185
192
game1 .drawCardsRound2 ()
186
193
game1 .playRound3 ()
187
- game1 .removeLossers
188
- gameRound = gameRound + 1
189
-
194
+ game1 .removeLossers ()
195
+ gameRound += 1
0 commit comments