# ゲーム開始前のカウントダウン関数
def game_countdown():
for i in range(3, 0, -1):
text = font.render(str(i), True, WHITE)
screen.blit(text, [SCREEN_WIDTH/2, SCREEN_HEIGHT/2])
pygame.display.flip()
pygame.time.wait(1000)
joke_text = font.render("Don't panic and carry a towel!", True, GREEN)
screen.blit(joke_text, [SCREEN_WIDTH/2 - 160, SCREEN_HEIGHT/2 + 50])
pygame.display.flip()
# ゲーム開始前のカウントダウンの呼び出し
game_countdown()
# メインループ
def main_loop():
game_over = False
start_time = pygame.time.get_ticks()
# ゲームオーバーまでの時間を計測する関数
def get_game_time():
return (pygame.time.get_ticks() - start_time) / 1000
# プレイヤーの移動関数
def move_player():
mouse_pos = pygame.mouse.get_pos()
player_pos[0] = mouse_pos[0]
player_pos[1] = mouse_pos[1]
# 敵の移動関数
def move_enemies():
for enemy in enemies:
enemy[0][1] += enemy[1]
# 衝突判定関数
def check_collision():
for enemy in enemies:
if pygame.Rect(enemy[0][0], enemy[0][1], 10, 10).colliderect(pygame.Rect(player_pos[0], player_pos[1], 10, 10)):
return True
elif enemy[0][1] > SCREEN_HEIGHT:
enemies.remove(enemy)
if pygame.Rect(0, SCREEN_HEIGHT-50, SCREEN_WIDTH, 50).colliderect(pygame.Rect(player_pos[0], player_pos[1], 10, 10)):
return True
return False
# ゲームオーバー画面を表示する関数
def show_game_over():
screen.fill(BLACK)
text = font.render('GAME OVER', True, WHITE)
screen.blit(text, [SCREEN_WIDTH/2-80, SCREEN_HEIGHT/2-20])
time_text = font.render('Time: {:.2f}'.format(get_game_time()), True, WHITE)
screen.blit(time_text, [SCREEN_WIDTH/2-80, SCREEN_HEIGHT/2+20])
pygame.display.flip()
joke_text = font.render("So long, and thanks for all the fish!", True, GREEN)
screen.blit(joke_text, [SCREEN_WIDTH/2 - 160, SCREEN_HEIGHT/2 + 50])
pygame.display.flip()
# ゲーム開始前のカウントダウンの呼び出し
game_countdown()
# メインループの処理
while not game_over:
# イベント処理
for event in pygame.event.get():
if event.type == pygame.QUIT:
game_over = True
break
# 敵の追加処理
if len(enemies) < 10:
add_enemy()
# プレイヤーと敵の移動処理
move_player()
move_enemies()
# 衝突判定
if check_collision():
game_over = True
# 画面の表示
screen.fill(BLACK)
pygame.draw.rect(screen, GREEN, (0, SCREEN_HEIGHT-50, SCREEN_WIDTH, 50))
pygame.draw.rect(screen, RED, (player_pos[0], player_pos[1], 10, 10))
for enemy in enemies:
pygame.draw.rect(screen, WHITE, (enemy[0][0], enemy[0][1], 10, 10))
pygame.display.flip()
# ゲームオーバー処理
if game_over:
show_game_over()
# フレームレートの設定
clock.tick(60)
# メインループの呼び出し
main_loop()