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 import Flask
|
||||||
from flask_sock import Sock
|
from flask_sock import Sock
|
||||||
from queue import Queue
|
from queue import Queue
|
||||||
|
from random import Random
|
||||||
from threading import Thread, Lock
|
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:
|
class Client:
|
||||||
def __init__(self, sock, client_id):
|
def __init__(self, sock, client_id):
|
||||||
self.sock = sock
|
self.sock = sock
|
||||||
@ -24,6 +52,9 @@ class GlebbyState:
|
|||||||
|
|
||||||
self.incoming_messages = Queue()
|
self.incoming_messages = Queue()
|
||||||
|
|
||||||
|
self.board_generator = BoardGenerator(42)
|
||||||
|
self.board = None
|
||||||
|
|
||||||
# domain stuff
|
# domain stuff
|
||||||
|
|
||||||
def handle_message_from(self, client_id, payload):
|
def handle_message_from(self, client_id, payload):
|
||||||
@ -40,6 +71,12 @@ class GlebbyState:
|
|||||||
'type': 'chat',
|
'type': 'chat',
|
||||||
'message': payload['message']
|
'message': payload['message']
|
||||||
})
|
})
|
||||||
|
elif payload['type'] == 'roll':
|
||||||
|
self.board = self.board_generator.generate_board()
|
||||||
|
self.broadcast(client_id, {
|
||||||
|
'type': 'roll',
|
||||||
|
'board': self.board
|
||||||
|
})
|
||||||
else:
|
else:
|
||||||
print("Unhandled!")
|
print("Unhandled!")
|
||||||
|
|
||||||
@ -49,7 +86,8 @@ class GlebbyState:
|
|||||||
'players': [
|
'players': [
|
||||||
self.clients[other_client_id].data
|
self.clients[other_client_id].data
|
||||||
for other_client_id in self.clients
|
for other_client_id in self.clients
|
||||||
]
|
],
|
||||||
|
'board': self.board
|
||||||
}
|
}
|
||||||
|
|
||||||
# message receiving and sending
|
# message receiving and sending
|
||||||
|
Loading…
x
Reference in New Issue
Block a user