机器人
积分排行榜
Scratch
积分排行榜
Python
在线答题
积分排行榜
活跃排行榜
打字练习
Microbit
C++
在线答题
积分排行榜
活跃排行榜
网盘
积分
未登录
未登录
登录学习
作者:
赵嘉烨
更新时间:
2025-04-12 20:29
浏览:
155次
点赞:
3次
热度:
34
import pygame import random # 初始化游戏 pygame.init() # 游戏窗口设置 WIDTH = 480 HEIGHT = 600 screen = pygame.display.set_mode((WIDTH, HEIGHT)) pygame.display.set_caption("打飞机游戏") # 颜色定义 WHITE = (255, 255, 255) BLACK = (0, 0, 0) RED = (255, 0, 0) GREEN = (0, 255, 0) BLUE = (0, 0, 255) YELLOW = (255, 255, 0) # 玩家飞机 player_img = pygame.Surface((50, 40)) player_img.fill(GREEN) player_rect = player_img.get_rect(centerx=WIDTH//2, bottom=HEIGHT-10) player_speed = 5 # 子弹设置 bullet_img = pygame.Surface((5, 15)) bullet_img.fill(YELLOW) bullets = [] bullet_speed = 10 # 敌机设置 enemy_img = pygame.Surface((40, 40)) enemy_img.fill(RED) enemies = [] enemy_speed = 3 enemy_spawn_rate = 25 # 数值越小生成越快 # 得分 score = 0 font = pygame.font.Font(None, 36) def show_score(): text = font.render(f"Score: {score}", True, WHITE) screen.blit(text, (10, 10)) # 游戏主循环 running = True clock = pygame.time.Clock() while running: screen.fill(BLACK) # 事件处理 for event in pygame.event.get(): if event.type == pygame.QUIT: running = False elif event.type == pygame.KEYDOWN: if event.key == pygame.K_SPACE: bullet_rect = bullet_img.get_rect(midtop=player_rect.midtop) bullets.append(bullet_rect) # 玩家移动 keys = pygame.key.get_pressed() if keys[pygame.K_LEFT] and player_rect.left > 0: player_rect.x -= player_speed if keys[pygame.K_RIGHT] and player_rect.right < WIDTH: player_rect.x += player_speed # 生成敌机 if random.randint(0, enemy_spawn_rate) == 0: enemy_rect = enemy_img.get_rect(center=(random.randint(20, WIDTH-20), 0)) enemies.append(enemy_rect) # 更新子弹 for bullet in bullets[:]: bullet.y -= bullet_speed if bullet.bottom < 0: bullets.remove(bullet) else: screen.blit(bullet_img, bullet) # 更新敌机 for enemy in enemies[:]: enemy.y += enemy_speed if enemy.top > HEIGHT: enemies.remove(enemy) else: screen.blit(enemy_img, enemy) # 碰撞检测(子弹和敌机) for bullet in bullets[:]: if bullet.colliderect(enemy): bullets.remove(bullet) enemies.remove(enemy) score += 10 # 碰撞检测(玩家和敌机) if player_rect.colliderect(enemy): running = False # 绘制玩家 screen.blit(player_img, player_rect) # 显示分数 show_score() pygame.display.flip() clock.tick(60) # 游戏结束 pygame.quit() print(f"游戏结束!最终得分: {score}")
点赞成功
分享作品
×