Browse Source

#32 完了

ai-migration
みてるぞ 1 week ago
parent
commit
9a68a29e1b
1 changed files with 47 additions and 10 deletions
  1. +47
    -10
      test.py

+ 47
- 10
test.py View File

@@ -103,9 +103,9 @@ class Bg:
self,
game: Game,
):
self.base = BgBase (game)
self.jojoko = Jojoko (game)
self.kita = KitaSun (game)
self.base = BgBase (game, self.kita.sun, layer = self.kita.layer - 5)
self.jojoko = Jojoko (game)
self.grass = BgGrass (game)


@@ -284,23 +284,60 @@ class BgBase (GameObject):
bg_evening: Surface
bg_grass: Surface
bg_night: Surface
surface: Surface
sun: Sun

def __init__ (
self,
game: Game,
sun: Sun,
layer: float,
):
super ().__init__ (game)
self.bg = pygame.image.load ('assets/bg.jpg')
self.bg_evening = pygame.image.load ('assets/bg-evening.jpg')
self.bg_grass = pygame.image.load ('assets/bg-grass.png')
self.bg_night = pygame.image.load ('assets/bg-night.jpg')
self.surface = pygame.transform.scale (self.bg, (CWindow.WIDTH, CWindow.HEIGHT))
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.sun = sun

@staticmethod
def _load_image (
path: str,
) -> Surface:
return pygame.transform.scale (pygame.image.load (path),
(CWindow.WIDTH, CWindow.HEIGHT))

def redraw (
self,
) -> None:
self.game.screen.blit (self.surface, (self.x, self.y))
date_tmp = self.game.sky.observer.date
self.game.sky.observer.date = self.game.now.date ()
sunrise_start: datetime = (
(ephem.localtime (self.game.sky.observer.previous_rising (self.sun))
- timedelta (minutes = 30)))
sunrise_end: datetime = sunrise_start + timedelta (hours = 1)
sunrise_centre: datetime = (
sunrise_start + (sunrise_end - sunrise_start) / 2)
sunset_start: datetime = (
(ephem.localtime (self.game.sky.observer.next_setting (self.sun))
- timedelta (minutes = 30)))
sunset_end: datetime = sunset_start + timedelta (hours = 1)
sunset_centre: datetime = (
sunset_start + (sunset_end - sunset_start) / 2)
self.game.sky.observer.date = date_tmp
surface: Surface = ((self.bg
if (sunrise_centre <= self.game.now < sunset_centre)
else self.bg_night)
.copy ())
if sunrise_start <= self.game.now < sunrise_end:
self.bg_evening.set_alpha (255 - int ((abs (self.game.now - sunrise_centre) * 510)
/ (sunrise_end - sunrise_centre)))
elif sunset_start <= self.game.now < sunset_end:
self.bg_evening.set_alpha (255 - int ((abs (self.game.now - sunset_centre) * 510)
/ (sunset_end - sunset_centre)))
else:
self.bg_evening.set_alpha (0)
surface.blit (self.bg_evening, (0, 0))
self.game.screen.blit (surface, (self.x, self.y))
super ().redraw ()




Loading…
Cancel
Save