Browse Source

日の出、日の入に応じた時刻に背景変更

sicawke
みてるぞ 4 months ago
parent
commit
f6e7a7d42f
1 changed files with 61 additions and 13 deletions
  1. +61
    -13
      main.py

+ 61
- 13
main.py View File

@@ -5,9 +5,10 @@ import random
import subprocess import subprocess
import sys import sys
import time import time
from datetime import datetime
from datetime import datetime, timedelta


import emoji import emoji
import ephem
import pygame import pygame
import pytchat import pytchat
from playsound import playsound from playsound import playsound
@@ -47,6 +48,16 @@ class Main:
screen: pygame.Surface = pygame.display.set_mode ( screen: pygame.Surface = pygame.display.set_mode (
(CWindow.WIDTH, CWindow.HEIGHT)) (CWindow.WIDTH, CWindow.HEIGHT))


# 大月ヨヨコの観測値
observer = ephem.Observer ()
observer.lat, observer.lon = '35', '139'

# き太く陽
sun = ephem.Sun ()

# 大月ヨヨコ
moon = ephem.Moon ()

# 吹き出し # 吹き出し
balloon = pygame.transform.scale (pygame.image.load ('talking.png'), balloon = pygame.transform.scale (pygame.image.load ('talking.png'),
(CWindow.WIDTH, 384)) (CWindow.WIDTH, 384))
@@ -55,13 +66,13 @@ class Main:


# 背景(夕方) # 背景(夕方)
bg_evening: pygame.Surface = pygame.transform.scale ( bg_evening: pygame.Surface = pygame.transform.scale (
pygame.image.load ('bg-evening.jpg'),
(CWindow.WIDTH, CWindow.HEIGHT))
pygame.image.load ('bg-evening.jpg'),
(CWindow.WIDTH, CWindow.HEIGHT))


# 背景(夜) # 背景(夜)
bg_night: pygame.Surface = pygame.transform.scale ( bg_night: pygame.Surface = pygame.transform.scale (
pygame.image.load ('bg-night.jpg'),
(CWindow.WIDTH, CWindow.HEIGHT))
pygame.image.load ('bg-night.jpg'),
(CWindow.WIDTH, CWindow.HEIGHT))


# 音声再生器の初期化 # 音声再生器の初期化
pygame.mixer.init (frequency = 44100) pygame.mixer.init (frequency = 44100)
@@ -94,7 +105,27 @@ class Main:
histories: list = [] histories: list = []


while (True): while (True):
cls.draw_bg (screen, bg_evening, bg_night)
# 観測値の日づけ更新
observer.date: datetime = datetime.now ().date ()

# 日の出開始
sunrise_start: datetime = (
(ephem.localtime (observer.previous_rising (sun))
- timedelta (minutes = 30)))

# 日の出終了
sunrise_end: datetime = sunrise_start + timedelta (hours = 1)

# 日の入開始
sunset_start: datetime = (
(ephem.localtime (observer.next_setting (sun))
- timedelta (minutes = 30)))

# 日の入終了
sunset_end: datetime = sunset_start + timedelta (hours = 1)

cls.draw_bg (screen, bg_evening, bg_night,
sunrise_start, sunrise_end, sunset_start, sunset_end)


# 左上に時刻表示 # 左上に時刻表示
for i in range (4): for i in range (4):
@@ -217,7 +248,9 @@ class Main:
if not double_mode or random.random () < .5: if not double_mode or random.random () < .5:
break break


cls.draw_bg (screen, bg_evening, bg_night)
cls.draw_bg (screen, bg_evening, bg_night,
sunrise_start, sunrise_end,
sunset_start, sunset_end)


chat_item.author = {'name': 'ゴートうひとり' if goatoh_talking else '伊地知ニジカ', chat_item.author = {'name': 'ゴートうひとり' if goatoh_talking else '伊地知ニジカ',
'id': '', 'id': '',
@@ -243,14 +276,29 @@ class Main:
@classmethod @classmethod
def draw_bg ( def draw_bg (
cls, cls,
screen: pygame.Surface,
bg_evening: pygame.Surface,
bg_night: pygame.Surface) \
screen: pygame.Surface,
bg_evening: pygame.Surface,
bg_night: pygame.Surface,
sunrise_start: datetime,
sunrise_end: datetime,
sunset_start: datetime,
sunset_end: datetime) \
-> None: -> None:
if 17 <= (h := datetime.now ().hour) < 18:
screen.blit (bg_evening, (0, 0))
elif (h < 6) or (18 <= h):
dt: datetime = datetime.now ()
if (dt < sunrise_end) or (sunset_start <= dt):
screen.blit (bg_night, (0, 0)) screen.blit (bg_night, (0, 0))

if sunrise_start <= dt < sunrise_end:
bg_evening.set_alpha (((dt - sunrise_start) * 255)
/ (sunrise_end - sunrise_start))
elif sunset_start <= dt < sunset_end:
bg_evening.set_alpha (((sunset_end - dt) * 255)
/ (sunset_end - sunset_start))
else:
bg_evening.set_alpha (0)

screen.blit (bg_evening, (0, 0))
else: else:
screen.fill ((0, 255, 0)) screen.fill ((0, 255, 0))




Loading…
Cancel
Save