|
21 | 21 | SIDE_FACE = 0
|
22 | 22 | SIDE_BACK = 1
|
23 | 23 |
|
24 |
| -SLIPPING_OFFSET = 20 |
25 |
| -DEAL_N = 3 |
| 24 | +BOUNCE_ENERGY = 0.8 |
26 | 25 |
|
27 | 26 | # We store cards as numbers 1-13, since we only need
|
28 | 27 | # to know their order for solitaire.
|
@@ -187,14 +186,6 @@ def remove_all_cards(self):
|
187 | 186 | card.stack = None
|
188 | 187 | self.cards = []
|
189 | 188 |
|
190 |
| - def take_top_card(self): |
191 |
| - try: |
192 |
| - card = self.cards[-1] |
193 |
| - self.remove_card(card) |
194 |
| - return card |
195 |
| - except IndexError: |
196 |
| - pass |
197 |
| - |
198 | 189 | def is_valid_drop(self, card):
|
199 | 190 | return True
|
200 | 191 |
|
@@ -239,6 +230,14 @@ def restack(self, fromstack):
|
239 | 230 | self.add_card(card)
|
240 | 231 | card.turn_back_up()
|
241 | 232 |
|
| 233 | + def take_top_card(self): |
| 234 | + try: |
| 235 | + card = self.cards[-1] |
| 236 | + self.remove_card(card) |
| 237 | + return card |
| 238 | + except IndexError: |
| 239 | + pass |
| 240 | + |
242 | 241 | def set_color(self, color):
|
243 | 242 | color = QColor(color)
|
244 | 243 | color.setAlpha(50)
|
@@ -636,18 +635,20 @@ def check_win_condition(self):
|
636 | 635 | def win_animation(self):
|
637 | 636 | # Start off a new card
|
638 | 637 | for drop in self.drops:
|
639 |
| - card = drop.take_top_card() |
640 |
| - if card and card.vector is None: |
641 |
| - card.vector = QPoint(-random.randint(1, 10), 0) |
642 |
| - break |
| 638 | + if drop.cards: |
| 639 | + card = drop.cards.pop() |
| 640 | + if card.vector is None: |
| 641 | + card.vector = QPoint(-random.randint(1, 10), 0) |
| 642 | + break |
643 | 643 |
|
644 | 644 | for card in self.deck:
|
645 | 645 | if card.vector is not None:
|
646 | 646 | card.setPos(card.pos() + card.vector)
|
647 | 647 | card.vector += QPoint(0, 1) # Gravity
|
648 | 648 |
|
649 | 649 | if card.pos().y() > WINDOW_SIZE[1] - CARD_DIMENSIONS.height():
|
650 |
| - card.vector = QPoint(card.vector.x(), -card.vector.y() ) |
| 650 | + # Bounce the card, losing some energy. |
| 651 | + card.vector = QPoint(card.vector.x(), -int(card.vector.y() * BOUNCE_ENERGY) ) |
651 | 652 |
|
652 | 653 | if card.pos().x() < - CARD_DIMENSIONS.width():
|
653 | 654 | card.vector = None
|
|
0 commit comments