Add a thread for getting player input

master
En Yi 2019-06-10 13:38:15 +01:00
parent 6c07b77077
commit c414d2c562
2 changed files with 21 additions and 16 deletions

35
main.py
View File

@ -4,6 +4,8 @@ import players
import random import random
import pickle import pickle
import sys import sys
import queue
import threading
class GameScreen(view.PygView): class GameScreen(view.PygView):
@ -13,9 +15,9 @@ class GameScreen(view.PygView):
autoplay=autoplay, view_all_cards=view_all_cards) autoplay=autoplay, view_all_cards=view_all_cards)
self.table.update_table.connect(self.draw_table) self.table.update_table.connect(self.draw_table)
self.draw_table() self.draw_table()
self.player_commands = queue.Queue(1)
def load_assets(self): self.player_thread = threading.Thread(target=self.get_player_inputs)
pass self.running = False
def draw_table(self, **kwargs): def draw_table(self, **kwargs):
# TODO: optimise this by only redrawing the parts that changes # TODO: optimise this by only redrawing the parts that changes
@ -35,29 +37,32 @@ class GameScreen(view.PygView):
pygame.display.flip() pygame.display.flip()
def get_player_inputs(self):
while self.running:
if not self.player_commands.full():
player_cmd = input("Enter something:")
self.player_commands.put(player_cmd)
print('Finished')
def run(self): def run(self):
running = True self.running = True
while running: #self.player_thread.start()
while self.running:
for event in pygame.event.get(): for event in pygame.event.get():
if event.type == pygame.QUIT: if event.type == pygame.QUIT:
running = False self.running = False
elif event.type == pygame.KEYDOWN: elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE: if event.key == pygame.K_ESCAPE:
running = False self.running = False
if event.key == pygame.K_p: if event.key == pygame.K_p:
if not self.table.ongoing: if not self.table.ongoing:
self.table.ongoing = True self.table.ongoing = True
#if event.key == pygame.K_l: #if event.key == pygame.K_l:
if self.table.ongoing: if self.table.ongoing:
self.table.continue_game() self.table.continue_game()
if not self.player_commands.empty():
milliseconds = self.clock.tick(self.fps) player_cmd = self.player_commands.get()
#self.playtime += milliseconds / 1000.0 print("Player Command Received: " + player_cmd)
#self.draw_function()
#pygame.display.flip()
#self.screen.blit(self.background, (0, 0))
pygame.quit() pygame.quit()

View File

@ -705,7 +705,7 @@ class Player(cards.Deck):
return True return True
class MainPlayer(cards.PlayerDeck): class MainPlayer(cards.Deck):
def __init__(self, *args, ai_component=None, **kwargs): def __init__(self, *args, ai_component=None, **kwargs):
super().__init__(*args, **kwargs) super().__init__(*args, **kwargs)