Add Shuffle and Deal

master
En Yi 2019-05-04 18:50:45 +01:00
parent 6093d19d75
commit 679b205d02
3 changed files with 39 additions and 24 deletions

View File

@ -177,6 +177,7 @@ class Deck():
class PlayerDeck(Deck): class PlayerDeck(Deck):
# TODO: Maybe merge with Regular Deck
def get_selected_card(self, pos): def get_selected_card(self, pos):
# TODO: convert pos to card num, deselect if no card is clicked or out of range # 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 i in range(4):
for j in range(13): 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): class test_screen(view.PygView):

View File

@ -37,6 +37,9 @@ class GameScreen(view.PygView):
if event.key == pygame.K_p: if event.key == pygame.K_p:
print('add cards') print('add cards')
pass pass
if event.key == pygame.K_l:
self.table.start_game()
pass
milliseconds = self.clock.tick(self.fps) milliseconds = self.clock.tick(self.fps)
#self.playtime += milliseconds / 1000.0 #self.playtime += milliseconds / 1000.0

View File

@ -1,10 +1,13 @@
import pygame import pygame
import cards import cards
import view import view
import random
from signalslot import Signal from signalslot import Signal
from enum import Enum from enum import Enum
NUM_OF_PLAYERS = 4
STARTING_HAND = 13
class GameState(Enum): class GameState(Enum):
DEALING = 0 DEALING = 0
@ -67,10 +70,10 @@ class Table:
self.background.fill(clear_colour) self.background.fill(clear_colour)
self.background = self.background.convert() 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 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, playerx = ((self.width - l_deck)//2,
0, 0,
@ -84,16 +87,16 @@ class Table:
spacing = 20 spacing = 20
for i in range(4): for i in range(4):
if i == 0: #if i == 0:
self.players.append(MainPlayer(playerx[i], playery[i], # self.players.append(MainPlayer(playerx[i], playery[i],
l_deck, w_deck, # l_deck, w_deck,
spacing)) # spacing))
else: #else:
vert = i % 2 == 1 vert = i % 2 == 1
self.players.append(Player(playerx[i], playery[i], self.players.append(Player(playerx[i], playery[i],
l_deck, w_deck, l_deck, w_deck,
spacing, vert_orientation=vert, spacing, vert_orientation=vert,
deck_reveal=cards.DeckReveal.HIDE_ALL)) deck_reveal=cards.DeckReveal.HIDE_ALL))
self.players[i].connect_to_table(self.table_status) self.players[i].connect_to_table(self.table_status)
playfield_margins = 10 playfield_margins = 10
@ -133,17 +136,23 @@ class Table:
return self.x, self.y return self.x, self.y
def start_game(self): def start_game(self):
while(True): #while(True):
if self.game_state == GameState.DEALING: if self.game_state == GameState.DEALING:
pass if self.discard_deck:
elif self.game_state == GameState.POINT_CHECK: random.shuffle(self.discard_deck)
pass for i in range(NUM_OF_PLAYERS):
elif self.game_state == GameState.BIDDING: for j in range(STARTING_HAND):
pass self.players[i].add_card(self.discard_deck.pop())
elif self.game_state == GameState.PLAYING: self.update_table.emit()
pass
else: elif self.game_state == GameState.POINT_CHECK:
pass pass
elif self.game_state == GameState.BIDDING:
pass
elif self.game_state == GameState.PLAYING:
pass
else:
pass
class Player(cards.Deck): class Player(cards.Deck):