diff options
author | Mark Powers <mark@marks.kitchen> | 2024-07-14 15:49:48 -0500 |
---|---|---|
committer | Mark Powers <mark@marks.kitchen> | 2024-07-14 15:49:48 -0500 |
commit | d4c45c02890143fb8cfbc60be9d2b79240d9ad8e (patch) | |
tree | b7fc54bbf17742609ed1bd84dbffb0f6f1064822 /main.py |
Initial commitmain
Diffstat (limited to 'main.py')
-rw-r--r-- | main.py | 79 |
1 files changed, 79 insertions, 0 deletions
@@ -0,0 +1,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() |