Professional Documents
Culture Documents
img_path = './images/'
face_names = ['Ace', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'Jack', 'Queen', 'King']
"""
"""
class Card:
pass
"""
Create a list("deck") of all 52 cards, shuffle them and return the list.
A Card is represented by a object with four attributes: the face, the suit, value, state, and the
image object
"""
card_list = []
for i in range(4):
for j in range(13):
card = Card()
card.face = face_names[j]
card.suit = suit_names[i]
card.value = value[j]
card.state = True
card_list.append(card)
random.shuffle(card_list)
return card_list
def hand_value(hand):
"""
"""
value = 0
for i in range(len(hand)):
value += hand[i].value
return value
def card_string(card):
"""
"""
def ask_yesno(prompt):
"""
Display the text prompt and let's the user enter a string.
If the user enters anything else, the function prints "I beg your pardon!", and asks again,
"""
while True:
temp = input(prompt)
if temp == "y":
return True
return False
else:
def draw_card(dealer,player):
"""
This funuction add the cards of dealer and player to canvas, bj_board.
If the state of each Card object is false, then you have to show the hidden card
image(Back.png).
The parameter dealer and player are List objects including Card Objects.
You can use the following methods for positioning images and text:
"""
depth = 100
x0,y0 = 100,100
x1,y1 = 100,300
bj_board.clear()
for i in range(len(player)):
player[i].state = True
for i in range(len(player)):
if player[i].state == True:
player[i].image.setDepth(100 - i)
bj_board.add(player[i].image)
for i in range(len(dealer)):
if dealer[i].state == True:
dealer[i].image.setDepth(100 - i)
bj_board.add(dealer[i].image)
back_img = Image("./images/Back.png")
back_img.setDepth(100 - i)
bj_board.add(back_img)
player_total.setFontColor('yellow')
dealer_total.setFontColor('yellow')
player_total.setFontSize(17)
dealer_total.setFontSize(17)
player_total.moveTo(400, 300)
bj_board.add(player_total)
if dealer[0].state == True:
dealer_total.moveTo(400, 100)
bj_board.add(dealer_total)
def main():
deck = []
while True:
# prompt for starting a new game and create a deck
deck = create_deck()
dealer = []
player = []
card = deck.pop()
player.append(card)
card = deck.pop()
card.state=False
dealer.append(card)
card = deck.pop()
player.append(card)
card = deck.pop()
dealer.append(card)
draw_card(dealer,player)
# player's turn to draw cards
while hand_value(player) < 21 and ask_yesno("Would you like another card? (y/n) "):
card = deck.pop()
player.append(card)
draw_card(dealer,player)
dealer[0].state = True
draw_card(dealer,player)
else:
# draw cards for the dealer while the dealer's score is less than 17
card = deck.pop()
dealer.append(card)
dealer[0].state = True
draw_card(dealer,player)
# summary
player_total = hand_value(player)
dealer_total = hand_value(dealer)
else:
else:
bj_board.close()
break
main()