酷代码 AI
菜单
服务商
DeepSeek字节豆包讯飞星火
更多选项

Pygame实现简单射击游戏:附代码及优化建议

以下是使用Pygame库编写的简单射击类游戏代码。 ```python import pygame import random # 初始化pygame pygame.init() # 设置窗口大小 screen = pygame.display.set_mode((800, 600)) # 加载玩家图像 player_image = pygame.image.load('player.png') player_x = 370 player_y = 480 player_x_change = 0 # 敌人相关变量 enemy_image = [] enemy_x = [] enemy_y = [] enemy_x_change = [] enemy_y_change = [] num_of_enemies = 6 for i in range(num_of_enemies): enemy_image.append(pygame.image.load('enemy.png')) enemy_x.append(random.randint(0, 735)) enemy_y.append(random.randint(50, 150)) enemy_x_change.append(4) enemy_y_change.append(40) # 子弹状态:ready表示可以发射,fire表示子弹正在飞行 bullet_image = pygame.image.load('bullet.png') bullet_x = 0 bullet_y = 480 bullet_x_change = 0 bullet_y_change = 10 bullet_state = "ready" # 得分 score_value = 0 font = pygame.font.Font('freesansbold.ttf', 32) text_x = 10 text_y = 10 def show_score(x, y): score = font.render("Score : " + str(score_value), True, (255, 255, 255)) screen.blit(score, (x, y)) def player(x, y): screen.blit(player_image, (x, y)) def enemy(x, y, i): screen.blit(enemy_image[i], (x, y)) def fire_bullet(x, y): global bullet_state bullet_state = "fire" screen.blit(bullet_image, (x + 16, y + 10)) def is_collision(enemy_x, enemy_y, bullet_x, bullet_y): distance = ((enemy_x - bullet_x) 2 + (enemy_y - bullet_y) 2) 0.5 if distance < 27: return True else: return False # 游戏主循环 running = True while running: screen.fill((0, 0, 0)) for event in pygame.event.get(): if event.type == pygame.QUIT: running = False # 玩家按键操作 if event.type == pygame.KEYDOWN: if event.key == pygame.K_LEFT: player_x_change = -5 if event.key == pygame.K_RIGHT: player_x_change = 5 if event.key == pygame.K_SPACE: if bullet_state == "ready": bullet_x = player_x fire_bullet(bullet_x, bullet_y) if event.type == pygame.KEYUP: if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT: player_x_change = 0 # 更新玩家位置 player_x += player_x_change if player_x <= 0: player_x = 0 elif player_x >= 736: player_x = 736 # 更新敌人位置 for i in range(num_of_enemies): enemy_x[i] += enemy_x_change[i] if enemy_x[i] <= 0: enemy_x_change[i] = 4 enemy_y[i] += enemy_y_change[i] elif enemy_x[i] >= 736: enemy_x_change[i] = -4 enemy_y[i] += enemy_y_change[i] # 判断碰撞 collision = is_collision(enemy_x[i], enemy_y[i], bullet_x, bullet_y) if collision: bullet_y = 480 bullet_state = "ready" score_value += 1 enemy_x[i] = random.randint(0, 735) enemy_y[i] = random.randint(50, 150) enemy(enemy_x[i], enemy_y[i], i) # 子弹运动 if bullet_y <= 0: bullet_y = 480 bullet_state = "ready" if bullet_state == "fire": fire_bullet(bullet_x, bullet_y) bullet_y -= bullet_y_change player(player_x, player_y) show_score(text_x, text_y) pygame.display.update() ``` 此段代码实现了一个简单的射击游戏。需要注意: - 需要准备对应的游戏素材文件如'player.png'、'enemy.png'和'bullet.png'等。 - 此代码没有加入游戏结束逻辑,当敌人碰到底部时可视为游戏失败,可自行添加。 - 为使游戏难度适中,调整了敌人的移动速度以及子弹的发射速度。 ######[AI写代码神器 | 1053点数解答 | 2025-02-11 19:32:46]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]