diff options
author | Walter Bender <walter@walter-laptop.(none)> | 2009-12-05 21:52:23 (GMT) |
---|---|---|
committer | Walter Bender <walter@walter-laptop.(none)> | 2009-12-05 21:52:23 (GMT) |
commit | c2daa3ea24f91bbf3daa5711d0b5971a587eb610 (patch) | |
tree | 26a010a4ed194d14e80916d24e465c70aa9f785b /deck.py | |
parent | 7cd15de24ee4f27a392129dbddfaf7d1c27cf156 (diff) |
automated dealing of extra cards
Diffstat (limited to 'deck.py')
-rw-r--r-- | deck.py | 90 |
1 files changed, 90 insertions, 0 deletions
@@ -0,0 +1,90 @@ +#Copyright (c) 2009, Walter Bender + +#Permission is hereby granted, free of charge, to any person obtaining a copy +#of this software and associated documentation files (the "Software"), to deal +#in the Software without restriction, including without limitation the rights +#to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +#copies of the Software, and to permit persons to whom the Software is +#furnished to do so, subject to the following conditions: + +#The above copyright notice and this permission notice shall be included in +#all copies or substantial portions of the Software. + +#THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +#IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +#FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +#AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +#LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +#OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +#THE SOFTWARE. + +import pygtk +pygtk.require('2.0') +import gtk +import gobject +import random + +from sprites import * +from constants import * +from card import * + +# +# class for defining deck of cards +# +class Deck: + def __init__(self, tw): + # create the deck of cards + self.deck = {} + # remember the position in the deck + self.index = 0 + # how many cards are in the deck? + self.count = 0 + # Initialize the deck of cards by looping through all the patterns + for shape in range(0,SHAPES): + for color in range(0,COLORS): + for num in range(0,NUMBER): + for fill in range(0,FILLS): + self.deck[self.count] = Card(tw,shape,color,num,fill) + self.count += 1 + + # shuffle the deck + def shuffle(self): + # hide all the cards + for c in self.deck: + self.deck[c].hide_card() + # randomize the deck + for n in range(0,DECKSIZE*4): + i = random.randrange(DECKSIZE) + j = random.randrange(DECKSIZE) + self.swap_cards(i,j) + # reset the index to the beginning of the deck after a shuffle + self.index = 0 + return + + # swap the position of two cards in the deck + def swap_cards(self,i,j): + tmp = self.deck[j] + self.deck[j] = self.deck[i] + self.deck[i] = tmp + return + + # given a sprite, find the corresponding card in the deck + def spr_to_card(self, spr): + for c in self.deck: + if self.deck[c].spr == spr: + return self.deck[c] + return None + + # deal the next card from the deck + def deal_next_card(self): + self.index += 1 + if self.empty(): + return None + return self.deck[self.index] + + # is the deck empty? + def empty(self): + if self.index < self.count: + return False + else: + return True |