I am attempting to write a text based spider solitaire game. I have a pretty simple card class, and a deck class, which has a list of card objects, which are shuffled, then individual elements are put into self.dealt, which is a 'list of lists' when the cards are dealt.
I am trying to control the visibility of the cards. There is a small "for" loop in the "deal" method of the deck class, this is intended to toggle the visibility of four of the cards. It does that just fine, but for some reason, it seems to be randomly toggling the visibility of other cards in the self.dealt list and I am thoroughly confused as to why that is. Is it something to do with the way objects are referenced? Is my list of card objects a bad way to approach this?
import random class Card(object): def __init__(self): self.value = '' self.display = 'X' class Deck(object): def __init__(self): self.cards = self.create_cards() self.shuffle() self.dealt = [] self.draw_piles = [] self.deal() def create_cards(self): card_list = [] values = [] for i in range(1, 11): values.append(str(i)) values.append('J') values.append('Q') values.append('K') for value in values: card = Card() card.value = value card_list.append(card) card_list = card_list * 8 return card_list def shuffle(self): random.shuffle(self.cards) random.shuffle(self.cards) def deal(self): self.dealt.append(self.cards[0:10]) self.dealt.append(self.cards[10:20]) self.dealt.append(self.cards[20:30]) self.dealt.append(self.cards[30:40]) self.dealt.append(self.cards[40:50]) self.dealt.append(self.cards[50:54]) self.draw_piles.append(self.cards[54:64]) self.draw_piles.append(self.cards[64:74]) self.draw_piles.append(self.cards[74:84]) self.draw_piles.append(self.cards[84:94]) self.draw_piles.append(self.cards[94:105]) for index, card in enumerate(self.dealt[5]): self.dealt[5][index].display = self.dealt[5][index].value def display_cards(self): for row in self.dealt: for card in row: print '%5s ' % card.display, print '' mydeck = Deck() mydeck.display_cards()
_______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor