アッキーのブログ

アッキーのブログ

ブログの説明を入力します。

import pygame import random import sys # 初期化 pygame.init() WIDTH, HEIGHT = 800, 400 screen = pygame.display.set_mode((WIDTH, HEIGHT)) pygame.display.set_caption("無限ジャンプゲーム") # 色 WHITE = (255, 255, 255) BLACK = (0, 0, 0) RED = (255, 0, 0) # プレイヤー player_size = 50 player_x = 100 player_y = HEIGHT - player_size - 10 player_vel_y = 0 gravity = 1 jump_power = -15 # 障害物 obstacles = [] obstacle_speed = 5 obstacle_frequency = 1500 # ミリ秒 last_obstacle = 0 # スコア score = 0 font = pygame.font.SysFont(None, 36) clock = pygame.time.Clock() def draw_player(x, y): pygame.draw.rect(screen, RED, (x, y, player_size, player_size)) def create_obstacle(): height = random.randint(30, 70) return { 'x': WIDTH, 'height': height, 'width': 20, 'passed': False } def draw_obstacles(): for obstacle in obstacles: pygame.draw.rect(screen, BLACK, (obstacle['x'], HEIGHT - obstacle['height'], obstacle['width'], obstacle['height'])) # メインゲームループ running = True while running: current_time = pygame.time.get_ticks() screen.fill(WHITE) # イベント処理 for event in pygame.event.get(): if event.type == pygame.QUIT: running = False if event.type == pygame.KEYDOWN: if event.key == pygame.K_SPACE and player_y == HEIGHT - player_size - 10: player_vel_y = jump_power # プレイヤー更新 player_vel_y += gravity player_y += player_vel_y if player_y > HEIGHT - player_size - 10: player_y = HEIGHT - player_size - 10 player_vel_y = 0 # 障害物生成 if current_time - last_obstacle > obstacle_frequency: obstacles.append(create_obstacle()) last_obstacle = current_time # 障害物更新 for obstacle in obstacles[:]: obstacle['x'] -= obstacle_speed # 衝突判定 if (player_x < obstacle['x'] + obstacle['width'] and player_x + player_size > obstacle['x'] and player_y + player_size > HEIGHT - obstacle['height']): running = False # スコア計算 if not obstacle['passed'] and obstacle['x'] + obstacle['width'] < player_x: obstacle['passed'] = True score += 1 if obstacle['x'] < -obstacle['width']: obstacles.remove(obstacle) # 描画 draw_player(player_x, player_y) draw_obstacles() # スコア表示 score_text = font.render(f"スコア: {score}", True, BLACK) screen.blit(score_text, (10, 10)) pygame.display.update() clock.tick(60) # ゲームオーバー print(f"ゲームオーバー! 最終スコア: {score}") pygame.quit() sys.exit()