1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
import random
import states
import string
import pyxel
from rounds import ROUNDS, END_DIALOG
class App:
def __init__(self):
pyxel.init(64, 64)
pyxel.load("my_resource.pyxres")
self.guessed = set()
self.frame = 0
self.round = -1
# Generate a random mix of fake letters
self.glyph_map = {}
for key in list(string.ascii_uppercase):
if random.random() < 0.4:
self.glyph_map[key] = 1
else:
self.glyph_map[key] = 0
self.set_state(states.TitleScreen)
pyxel.run(self.update, self.draw)
def next_round(self, winner=None):
self.guessed = set()
self.round += 1
pyxel.stop()
if self.round == 5:
pyxel.playm(3, loop=True)
# TODO special for grand prize.
self.set_state(
states.Dialog, dialog=END_DIALOG,
is_end=True, next=states.Credits
)
else:
current_round = ROUNDS[self.round]
phrase_obj = random.choice(current_round["phrases"])
self.outcomes = current_round["wheel_outcomes"]
self.phrase = phrase_obj["phrase"]
self.category = phrase_obj["category"]
if winner:
current_round["dialog"].insert(0,
{
"who": "camera",
"text": f"Congrats, {winner}!",
},
)
current_round["dialog"].append(
{
"who": "camera",
"text": f"The category is: {self.category}.",
},
)
self.set_state(states.Dialog, dialog=current_round["dialog"])
song = 2 if self.round < 2 else 1
pyxel.playm(song, loop=True)
def set_state(self, new_state_class, **kwargs):
self.state_change_at = self.frame
kwargs["app"] = self
self.state = new_state_class(**kwargs)
def update(self):
self.frame += 1
self.state.update(self)
def draw(self):
pyxel.cls(0)
self.state.draw(self)
App()
|