diff --git a/cards.py b/cards.py index 2aedf10..97252d2 100644 --- a/cards.py +++ b/cards.py @@ -177,6 +177,7 @@ class Deck(): class PlayerDeck(Deck): + # TODO: Maybe merge with Regular Deck def get_selected_card(self, pos): # TODO: convert pos to card num, deselect if no card is clicked or out of range @@ -197,7 +198,9 @@ def prepare_playing_cards(width, height): for i in range(4): for j in range(13): - all_cards.append(Card(0, 0, width, height, i*100 + j+1, image_data=card_img)) + all_cards.append(Card(0, 0, width, height, (i+1)*100 + j+1, image_data=card_img)) + + return all_cards class test_screen(view.PygView): diff --git a/main.py b/main.py index fbcf1d5..3652919 100644 --- a/main.py +++ b/main.py @@ -37,6 +37,9 @@ class GameScreen(view.PygView): if event.key == pygame.K_p: print('add cards') pass + if event.key == pygame.K_l: + self.table.start_game() + pass milliseconds = self.clock.tick(self.fps) #self.playtime += milliseconds / 1000.0 diff --git a/players.py b/players.py index 2eebfda..050e1be 100644 --- a/players.py +++ b/players.py @@ -1,10 +1,13 @@ import pygame import cards import view +import random from signalslot import Signal from enum import Enum +NUM_OF_PLAYERS = 4 +STARTING_HAND = 13 class GameState(Enum): DEALING = 0 @@ -67,10 +70,10 @@ class Table: self.background.fill(clear_colour) self.background = self.background.convert() - self.discard_deck = [] # This is not a deck as it will never be drawn + self.discard_deck = cards.prepare_playing_cards(50, 50) # This is not a deck as it will never be drawn w_deck = min(self.height, self.width) * 0.15 - l_deck = min(self.width, self.height) * 0.6 + l_deck = min(self.width, self.height) * 0.7 playerx = ((self.width - l_deck)//2, 0, @@ -84,16 +87,16 @@ class Table: spacing = 20 for i in range(4): - if i == 0: - self.players.append(MainPlayer(playerx[i], playery[i], - l_deck, w_deck, - spacing)) - else: - vert = i % 2 == 1 - self.players.append(Player(playerx[i], playery[i], - l_deck, w_deck, - spacing, vert_orientation=vert, - deck_reveal=cards.DeckReveal.HIDE_ALL)) + #if i == 0: + # self.players.append(MainPlayer(playerx[i], playery[i], + # l_deck, w_deck, + # spacing)) + #else: + vert = i % 2 == 1 + self.players.append(Player(playerx[i], playery[i], + l_deck, w_deck, + spacing, vert_orientation=vert, + deck_reveal=cards.DeckReveal.HIDE_ALL)) self.players[i].connect_to_table(self.table_status) playfield_margins = 10 @@ -133,17 +136,23 @@ class Table: return self.x, self.y def start_game(self): - while(True): - if self.game_state == GameState.DEALING: - pass - elif self.game_state == GameState.POINT_CHECK: - pass - elif self.game_state == GameState.BIDDING: - pass - elif self.game_state == GameState.PLAYING: - pass - else: - pass + #while(True): + if self.game_state == GameState.DEALING: + if self.discard_deck: + random.shuffle(self.discard_deck) + for i in range(NUM_OF_PLAYERS): + for j in range(STARTING_HAND): + self.players[i].add_card(self.discard_deck.pop()) + self.update_table.emit() + + elif self.game_state == GameState.POINT_CHECK: + pass + elif self.game_state == GameState.BIDDING: + pass + elif self.game_state == GameState.PLAYING: + pass + else: + pass class Player(cards.Deck):