Files
venture/venture/game.py
2023-02-25 10:50:51 -06:00

59 lines
1.5 KiB
Python

import requests
from random import randrange
MAX_CATEGORIES = 28100
class Game:
def __init__(self, code):
self.code = code
self.locked = False
self.contestants = {}
self.categories = {}
self.buzzers_armed = False
def add_contestant(self, sid, signature):
self.contestants[sid] = Contestant(signature)
def load_clues(self):
while len(self.categories) < 6:
category_id = randrange(MAX_CATEGORIES)
r = requests.get(
'https://jservice.io/api/category?id=%d' % category_id)
j = r.json()
category = check_and_build_category(j)
if category:
name, clues = category
self.categories[name] = clues
class Contestant:
def __init__(self, signature):
self.signature = signature
self.locked = False
class Category:
def __init__(self, name):
self.name = name
self.questions = []
def check_and_build_category(j):
if not j or not j['title'] or not j['clues_count'] or j['clues_count'] < 5:
return None
name = j['title']
all_clues = [{key: c[key] for key in ['value', 'question', 'answer']}
for c in j['clues']]
clues = []
for value in [200, 400, 600, 800, 1000]:
for clue in all_clues:
if clue['value'] == value:
clues.append(clue)
break
if len(clues) == 5:
return name, clues
else:
return None