#Section 11, 11-12-07, A simplified version of the Soltaire game from the website.
import random
from cards import CCard, CDeck, displayGame
my_deck = CDeck()
my_card = CCard()
my_pile = CDeck()
#shuffles the deck before the game
my_deck.shuffle()
#creates the card list for play in the game to put into the displayGame function
cardList = [CCard() for i in range(21)]
def gameDeal(my_deck):
keepGoing = True
while keepGoing:
my_card = my_deck.deal()
cardList[0] = my_card
displayGame(cardList)
print "Card dealt from deck:", my_card.disp_card()
gameStr = raw_input ("Choose a space to place the card (input a number 1-20): ")
#the below makes sure that the input is a digit
while gameStr.isdigit() != True:
print "Not valid input. Please input a digit."
gameStr = raw_input ("Choose a space to place the card: ")
gameNum = int(gameStr)
#the below makes sure input is between 1 and 20
while gameNum <= 0 or gameNum > 20:
print "Not a valid space. Please choose again."
gameStr = raw_input ("Choose a space to place the card: ")
gameNum = int(gameStr)
#the below makes sure the user does not place a second card in any slot
while cardList[gameNum].get_val() != 0:
print "Space already taken. Please select a different space."
gameStr = raw_input ("Choose a space to place the card: ")
gameNum = int(gameStr)
else:
my_card.get_val()
cardList[gameNum] = my_card
flag = False
#the below ends the game after slots 1-16 are filled
for i in range(1,17):
if cardList[i].get_suit() == "":
flag = True
if flag == True:
continue
else:
keepGoing = False
gameDeal(my_deck)
displayGame(cardList)
BlackJList1 = [cardList[1].get_val(), cardList[2].get_val(), cardList[3].get_val(), cardList[4].get_val(), cardList[5].get_val()]
BlackJList2 = [cardList[6].get_val(), cardList[7].get_val(), cardList[8].get_val(), cardList[9].get_val(), cardList[10].get_val()]
BlackJList3 = [cardList[11].get_val(), cardList[12].get_val(), cardList[13].get_val()]
BlackJList4 = [cardList[14].get_val(), cardList[15].get_val(), cardList[16].get_val()]
BlackJList5 = [cardList[1].get_val(), cardList[6].get_val()]
BlackJList6 = [cardList[2].get_val(), cardList[7].get_val(), cardList[11].get_val(), cardList[14].get_val()]
BlackJList7 = [cardList[3].get_val(), cardList[8].get_val(), cardList[12].get_val(), cardList[15].get_val()]
BlackJList8 = [cardList[4].get_val(), cardList[9].get_val(), cardList[13].get_val(), cardList[16].get_val()]
BlackJList9 = [cardList[5].get_val(), cardList[10].get_val()]
def calcPoints(handList):
result = 0
BJscore = 0
#searches for an Ace
for i in handList:
if i == 1:
BJscore += 11
else:
BJscore += i
#below fixes scores of Aces for BJscores over 21
for card in handList:
if BJscore > 21:
if card == 1:
BJscore -= 10
#Calculates points from BJ scores
if BJscore == 21:
if len(handList) == 2:
result = 10
else:
result = 7
elif BJscore > 21:
result = 0
elif BJscore == 20:
result = 5
elif BJscore == 19:
result = 4
elif BJscore == 18:
result = 3
elif BJscore == 17:
result = 2
else:
result = 1
return result
PointTotal = 0
BlackJList1
PointTotal += calcPoints(BlackJList1)
BlackJList2
PointTotal += calcPoints(BlackJList2)
BlackJList3
PointTotal += calcPoints(BlackJList3)
BlackJList4
PointTotal += calcPoints(BlackJList4)
BlackJList5
PointTotal += calcPoints(BlackJList5)
BlackJList6
PointTotal += calcPoints(BlackJList6)
BlackJList7
PointTotal += calcPoints(BlackJList7)
BlackJList8
PointTotal += calcPoints(BlackJList8)
BlackJList9
PointTotal += calcPoints(BlackJList9)
print "Score is: ", PointTotal