Implement server-side board generation
This commit is contained in:
parent
2d294ddfd2
commit
52a6bb0389
@ -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
|
||||
@ -23,6 +51,9 @@ class GlebbyState:
|
||||
self.next_client_id = 0
|
||||
|
||||
self.incoming_messages = Queue()
|
||||
|
||||
self.board_generator = BoardGenerator(42)
|
||||
self.board = None
|
||||
|
||||
# domain stuff
|
||||
|
||||
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user