Implement server-side board generation

This commit is contained in:
Paul Brinkmeier 2023-01-17 18:32:10 +01:00
parent 2d294ddfd2
commit 52a6bb0389

View File

@ -5,8 +5,36 @@ from collections import OrderedDict
from flask import Flask
from flask_sock import Sock
from queue import Queue
from random import Random
from threading import Thread, Lock
class BoardGenerator:
def __init__(self, seed):
self.dice = [
'aeaneg',
'wngeeh',
'ahspco',
'lnhnrz',
'aspffk',
'tstiyd',
'objoab',
'owtoat',
'iotmuc',
'erttyl',
'ryvdel',
'toessi',
'lreixd',
'terwhv',
'eiunes',
'nuihmq'
]
self.rng = Random(seed)
def generate_board(self):
shuffled_dice = self.rng.sample(self.dice, k=len(self.dice))
roll_results = [self.rng.choice(die) for die in shuffled_dice]
return [roll_results[4 * i : 4 * (i+1)] for i in range(0, 4)]
class Client:
def __init__(self, sock, client_id):
self.sock = sock
@ -24,6 +52,9 @@ class GlebbyState:
self.incoming_messages = Queue()
self.board_generator = BoardGenerator(42)
self.board = None
# domain stuff
def handle_message_from(self, client_id, payload):
@ -40,6 +71,12 @@ class GlebbyState:
'type': 'chat',
'message': payload['message']
})
elif payload['type'] == 'roll':
self.board = self.board_generator.generate_board()
self.broadcast(client_id, {
'type': 'roll',
'board': self.board
})
else:
print("Unhandled!")
@ -49,7 +86,8 @@ class GlebbyState:
'players': [
self.clients[other_client_id].data
for other_client_id in self.clients
]
],
'board': self.board
}
# message receiving and sending