[Tutor] list of objects?

Walter Prins wprins at gmail.com
Tue Nov 15 15:22:08 CET 2011


Hi Elwin,

On 15 November 2011 13:40, Elwin Estle <chrysalis_reborn at yahoo.com> wrote:

> 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?
>

Off the top of my head, your problem is likely due to the line that reads:
card_list = card_list * 8

What this will do is put the *same* set of card objects in the list to
begin with, into a new card_list 8 times over.  So the *same* Jack (for
example) will appear 8 times in the resulting list.

This list, card_list, is the list that implements then later on sliced in
your deal method.  So, when you then set the cards in the dealt hand to
visible in your self.dealt[5] loop, because these same cards (card objects)
also are part of the other piles/hands, they also appear visible elsewhere
when the display method is called.

To fix: Replace the line above (e.g. card_list = card_list * 8)  with
something that explicitly constructs new cards 8 times, thereby not holding
mutliple refernces from seperate piles to the same card, then you should
have no further issues.  Maybe loop 8 times and make a function of te
preceding code etc.

Walter
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/tutor/attachments/20111115/8a348e56/attachment.html>


More information about the Tutor mailing list