このコミットが含まれているのは:
@@ -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:
|
||||
|
||||
新しい課題から参照
ユーザをブロックする