Browse Source

#34

pull/38/head
みてるぞ 2 weeks ago
parent
commit
8994105d4e
1 changed files with 49 additions and 23 deletions
  1. +49
    -23
      main.py

+ 49
- 23
main.py View File

@@ -51,17 +51,25 @@ def main (
x = CWindow.WIDTH * 3 / 4,
y = CWindow.HEIGHT - 120,
balloon = balloon)
snack_time = SnackTime (game)
CurrentTime (game, SYSTEM_FONT)

try:
broadcast = Broadcast (os.environ['BROADCAST_CODE'])
except Exception:
pass

waiting_balloon = (False, '', '')

while True:
for event in pygame.event.get ():
if event.type == pygame.QUIT:
pygame.quit ()
sys.exit ()
if not balloon.enabled:
if (not balloon.enabled) and (not snack_time.enabled):
if waiting_balloon[0]:
deerjika.talk (waiting_balloon[1], waiting_balloon[2])
waiting_balloon = (False, '', '')
try:
DB.begin_transaction ()
answer_flags = (AnsweredFlag.where ('platform', Platform.YOUTUBE.value)
@@ -70,11 +78,18 @@ def main (
if answer_flags:
answer_flag = random.choice (answer_flags)
answer = Answer.find (answer_flag.answer_id)
if answer.query_rel.query_type == QueryType.YOUTUBE_COMMENT.value:
query = Query.find (answer.query_id)
deerjika.talk (query.content, answer.content)
answer_flag.answered = True
answer_flag.save ()
match QueryType (answer.query_rel.query_type):
case QueryType.YOUTUBE_COMMENT:
query = Query.find (answer.query_id)
deerjika.talk (query.content, answer.content)
answer_flag.answered = True
answer_flag.save ()
case QueryType.SNACK_TIME:
snack_time.play ()
query = Query.find (answer.query_id)
waiting_balloon = (True, query.content, answer.content)
answer_flag.answered = True
answer_flag.save ()
DB.commit ()
add_query (broadcast)
except Exception as ex:
@@ -171,7 +186,7 @@ class Game:
self.fps = FPS
self.frame = 0
self.objects = []
self.bgm = Sound ('assets/bgm.mp3')
self.bgm = Sound ('./assets/bgm.mp3')
self.bgm.set_volume (.15)
self.bgm.play (loops = -1)
self._create_sky ()
@@ -292,10 +307,10 @@ class BgBase (GameObject):
layer: float,
):
super ().__init__ (game, layer = layer)
self.bg = self._load_image ('assets/bg.jpg')
self.bg_evening = self._load_image ('assets/bg-evening.jpg')
self.bg_grass = self._load_image ('assets/bg-grass.png')
self.bg_night = self._load_image ('assets/bg-night.jpg')
self.bg = self._load_image ('./assets/bg.jpg')
self.bg_evening = self._load_image ('./assets/bg-evening.jpg')
self.bg_grass = self._load_image ('./assets/bg-grass.png')
self.bg_night = self._load_image ('./assets/bg-night.jpg')
self.sun = sun

@staticmethod
@@ -356,7 +371,7 @@ class BgGrass (GameObject):
):
super ().__init__ (game)
self.game = game
self.surface = pygame.image.load ('assets/bg-grass.png')
self.surface = pygame.image.load ('./assets/bg-grass.png')
self.surface = pygame.transform.scale (self.surface, (CWindow.WIDTH, CWindow.HEIGHT))

def redraw (
@@ -420,14 +435,14 @@ class Deerjika (Creature):
case Direction.LEFT:
self.width = 1280
self.height = 720
surface = pygame.image.load ('assets/deerjika_relax_left.png')
surface = pygame.image.load ('./assets/deerjika_relax_left.png')
self.surfaces = []
for x in range (0, surface.get_width (), self.width):
self.surfaces.append (
surface.subsurface (x, 0, self.width, self.height))
case Direction.RIGHT:
...
self.sound = Sound ('assets/noon.wav')
self.sound = Sound ('./assets/noon.wav')

def redraw (
self,
@@ -505,10 +520,10 @@ class CurrentTime (GameObject):
def redraw (
self,
) -> None:
for i in range (4):
self.game.screen.blit (
self.font.render (f"{ self.game.now } { self.game.fps } fps", True, (0, 0, 0)),
(i % 2, i // 2 * 2))
for i in range (2):
cl = (i * 255, i * 255, i * 255)
self.game.screen.blit (self.font.render (str (self.game.now), True, cl), (-i, -i))
self.game.screen.blit (self.font.render ('%2.3f fps' % self.game.fps, True, cl), (-i, 24 - i))
super ().redraw ()


@@ -543,7 +558,7 @@ class Balloon (GameObject):
super ().__init__ (game, enabled = False)
self.x_flip = x_flip
self.y_flip = y_flip
self.surface = pygame.transform.scale (pygame.image.load ('assets/balloon.png'),
self.surface = pygame.transform.scale (pygame.image.load ('./assets/balloon.png'),
(CWindow.WIDTH, CWindow.HEIGHT / 2))
self.surface = pygame.transform.flip (self.surface, self.x_flip, self.y_flip)

@@ -610,7 +625,7 @@ class KitaSun (GameObject):
game: Game,
):
super ().__init__ (game)
self.surface = pygame.transform.scale (pygame.image.load ('assets/sun.png'), (200, 200))
self.surface = pygame.transform.scale (pygame.image.load ('./assets/sun.png'), (200, 200))
self.sun = Sun ()

def redraw (
@@ -674,7 +689,7 @@ class Jojoko (GameObject):
game: Game,
):
super ().__init__ (game)
self.base = pygame.transform.scale (pygame.image.load ('assets/moon.png'), (200, 200))
self.base = pygame.transform.scale (pygame.image.load ('./assets/moon.png'), (200, 200))
self.moon = Moon ()
self.surface = self._get_surface ()

@@ -899,14 +914,15 @@ class Video (GameObject):
def redraw (
self,
) -> None:
self.game.screen.blit (self.surfaces[self.frame], (self.x, self.y))
surface = pygame.transform.scale (self.surfaces[self.frame], (self.width, self.height))
self.game.screen.blit (surface, (self.x, self.y))
super ().redraw ()

def update (
self,
) -> None:
if self.frame >= len (self.surfaces) - 1:
self.pause ()
self.stop ()
if self.pausing:
self.frame -= 1
super ().update ()
@@ -916,6 +932,16 @@ class NicoVideo (Video):
...


class SnackTime (Video):
def __init__ (
self,
game: Game,
):
super ().__init__ (game, './assets/snack_time.mp4')
(self.width, self.height) = (CWindow.HEIGHT * 16 // 9, CWindow.HEIGHT)
(self.x, self.y) = ((CWindow.WIDTH - self.width) / 2, 0)


def fetch_bytes_from_url (
url: str,
) -> bytes | None:


Loading…
Cancel
Save