python飞机大战游戏代码
时间: 2023-06-18 12:03:22 浏览: 235
以下是一个简单的 Python 飞机大战游戏代码,希望对你有帮助。注意:这是一个基础版的游戏,没有做太多的优化和改进。
```python
import pygame
import random
# 初始化pygame模块
pygame.init()
# 设置游戏窗口的大小
screen_width = 480
screen_height = 700
screen = pygame.display.set_mode((screen_width, screen_height))
# 设置窗口标题
pygame.display.set_caption("飞机大战")
# 加载背景图片
background = pygame.image.load("images/background.png")
# 加载飞机图片
player_image = pygame.image.load("images/me1.png")
# 加载敌机图片
enemies_images = []
enemies_images.append(pygame.image.load("images/enemy1.png"))
enemies_images.append(pygame.image.load("images/enemy2.png"))
enemies_images.append(pygame.image.load("images/enemy3.png"))
enemies_images.append(pygame.image.load("images/enemy4.png"))
# 加载子弹图片
bullet_image = pygame.image.load("images/bullet.png")
# 设置字体
font = pygame.font.SysFont("arial", 36)
# 定义游戏变量
player_x = 200
player_y = 600
player_speed = 5
bullet_list = []
bullet_speed = 10
enemies_list = []
enemies_speed = 5
enemies_interval = 100
score = 0
# 定义函数
def draw_player():
screen.blit(player_image, (player_x, player_y))
def move_player():
global player_x, player_y
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT] and player_x > 0:
player_x -= player_speed
if keys[pygame.K_RIGHT] and player_x < screen_width - player_image.get_width():
player_x += player_speed
if keys[pygame.K_UP] and player_y > 0:
player_y -= player_speed
if keys[pygame.K_DOWN] and player_y < screen_height - player_image.get_height():
player_y += player_speed
def draw_bullet():
for bullet in bullet_list:
screen.blit(bullet_image, (bullet[0], bullet[1]))
def move_bullet():
global bullet_list
bullet_list = [[bullet[0], bullet[1] - bullet_speed] for bullet in bullet_list if bullet[1] > 0]
def add_bullet():
global bullet_list
keys = pygame.key.get_pressed()
if keys[pygame.K_SPACE]:
bullet_list.append([player_x + player_image.get_width() / 2 - bullet_image.get_width() / 2, player_y - bullet_image.get_height()])
def draw_enemies():
for enemy in enemies_list:
screen.blit(enemies_images[enemy[2]], (enemy[0], enemy[1]))
def move_enemies():
global score
for i in range(len(enemies_list)):
enemies_list[i][1] += enemies_speed
if enemies_list[i][1] > screen_height:
del enemies_list[i]
break
for bullet in bullet_list:
for enemy in enemies_list:
if bullet[0] > enemy[0] and bullet[0] < enemy[0] + enemies_images[enemy[2]].get_width() and bullet[1] > enemy[1] and bullet[1] < enemy[1] + enemies_images[enemy[2]].get_height():
enemies_list.remove(enemy)
bullet_list.remove(bullet)
score += 1
def add_enemies():
global enemies_list
if len(enemies_list) < enemies_interval:
enemies_list.append([random.randint(0, screen_width - enemies_images[0].get_width()), -enemies_images[0].get_height(), random.randint(0, len(enemies_images) - 1)])
def draw_score():
score_text = font.render("Score: " + str(score), True, (255, 255, 255))
screen.blit(score_text, (10, 10))
# 主循环
running = True
while running:
# 处理事件
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# 绘制背景
screen.blit(background, (0, 0))
# 绘制玩家
draw_player()
# 移动玩家
move_player()
# 绘制子弹
draw_bullet()
# 移动子弹
move_bullet()
# 添加子弹
add_bullet()
# 绘制敌机
draw_enemies()
# 移动敌机
move_enemies()
# 添加敌机
add_enemies()
# 绘制分数
draw_score()
# 更新屏幕
pygame.display.update()
# 退出游戏
pygame.quit()
```
在运行代码前,你需要准备好游戏所需的图片,然后在代码中正确设置图片的路径。希望这个代码能够帮助你入门 Pygame 开发。
阅读全文
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)