No older revisions available
No older revisions available
import random
class Card:
def __init__(self, shape=None, number=None):
self.shape = shape
self.number = number
def __str__(self):
s = '%s %s' % (self.shape, self.number)
return s
def shuffleCards():
cards = []
cardsNums = range(2,11) + ['J', 'Q', 'K', 'Q', 'A']
cardShapes = ['~W~F','~Y| ','~Y','~Y']
for number in cardsNums:
for shape in cardShapes:
cards.append(Card(shape, number))
random.shuffle(cards)
return cards
def printCardDeck(pcCards, myCards, cardOnTable):
jobs = [pcCards, [cardOnTable], myCards]
for job in jobs:
if job != None:
printDeck(job)
def printDeck(cards):
leftUp = '~T~L'
post = '~T~B'
rightUp = '~T~P'
leftDown = '~T~T'
rightDown = '~T~X'
crossBar = '~T~@'*len(cards)*3
allCards = ''
for card in cards:
allCards += str(card) + ', '
allCards = allCards[0:len(allCards)-2]
upperCrossBar = leftUp+crossBar+rightUp
lowerCrossBar = leftDown+crossBar+rightDown
spaces = ' ' * (len(upperCrossBar)-len(allCards)-4)
allCards += spaces
print upperCrossBar
print '%s%s%s' % (post, allCards, post)
print lowerCrossBar
##############################################################
def game():
cards = shuffleCards()
pcCards = cards[1:10]
myCards = cards[11:20]
cardOnTable = cards[0]
numCardsRemoved = 0
printCardDeck(pcCards, myCards, cardOnTable)
while not (len(pcCards)==0 or len(myCards)==0):
cardOnTable, myResult = userProc(cardOnTable, myCards)
cardOnTable, pcResult = pcProc(cardOnTable, pcCards)
numCardsRemoved = myResult + pcResult
if numCardsRemoved == 0:
break
printCardDeck(pcCards, myCards, cardOnTable)
def userProc(cardOnTable, myCards):
cnt = 0
while True:
select = input('card index (-1:skip) : ')
if select == -1 :
return cardOnTable, cnt
if not canHandOut(cardOnTable, myCards[select]):
print 'you cannot handout that card'
continue
else:
cardOnTable = myCards.pop(select)
cnt += 1
printDeck([cardOnTable])
printDeck(myCards)
continue
def pcProc(cardOnTable, pcCards):
cnt = 0
removed = False
while True:
for index in range(0, len(pcCards)):
if canHandOut(cardOnTable, pcCards[index]):
cardOnTable = pcCards.pop(index)
removed = True
break
if removed:
removed = False
continue
return cardOnTable, cnt
def canHandOut(cardOnTable, myCard):
if cardOnTable.shape==myCard.shape or cardOnTable.number==myCard.number:
return True
else:
return False
##############################################################
if __name__=='__main__':
game()