cursor 免费代码生成器
生成的代码
# 导入pygame库
import pygame
import random
# 初始化pygame
pygame.init()
# 设置游戏窗口大小
screen = pygame.display.set_mode((480, 700))
# 设置游戏窗口标题
pygame.display.set_caption("飞机大战")
# 加载背景图片并缩放到屏幕大小
background = pygame.image.load("./images/background.png")
background = pygame.transform.scale(background, (480, 700))
# 加载玩家飞机图片
player = pygame.image.load("./images/player.png")
# 设置玩家飞机的初始位置
player_rect = player.get_rect()
player_rect.centerx = 240
player_rect.bottom = 680
# 设置玩家飞机的速度
player_speed = 5
# 加载敌机图片
enemy = pygame.image.load("./images/enemy.png")
# 设置敌机的初始位置
enemies = []
for i in range(5):
enemy_rect = enemy.get_rect()
enemy_rect.centerx = random.randint(0, 480)
enemy_rect.top = random.randint(-700, 0)
enemies.append(enemy_rect)
# 设置敌机的速度
enemy_speed = 3
# 加载子弹图片
bullet = pygame.image.load("./images/bullet.png")
# 设置子弹的初始位置
bullet_rect = bullet.get_rect()
bullet_rect.centerx = player_rect.centerx
bullet_rect.bottom = player_rect.top
# 设置子弹的速度
bullet_speed = 10
# 子弹状态,True表示可以发射子弹
bullet_state = True
# 加载敌机子弹图片并旋转180度
enemy_bullet = pygame.image.load("./images/bullet_2.png")
enemy_bullet = pygame.transform.rotate(enemy_bullet, 180)
# 设置敌机子弹的速度
enemy_bullet_speed = 1
# 设置敌机子弹状态,True表示可以发射子弹
enemy_bullet_states = [True] * 5
# 设置敌机子弹对象
enemy_bullets = []
for i in range(5):
enemy_bullets.append(bullet_rect.copy())
# 游戏主循环
while True:
# 处理游戏事件
for event in pygame.event.get():
if event.type == pygame.QUIT:
# 退出游戏
pygame.quit()
exit()
# 获取键盘事件
keys = pygame.key.get_pressed()
# 根据键盘事件移动玩家飞机
if keys[pygame.K_LEFT]:
player_rect.x -= player_speed
if keys[pygame.K_RIGHT]:
player_rect.x += player_speed
if keys[pygame.K_UP]:
player_rect.y -= player_speed
if keys[pygame.K_DOWN]:
player_rect.y += player_speed
# 发射子弹
if keys[pygame.K_SPACE] and bullet_state:
bullet_rect.centerx = player_rect.centerx
bullet_rect.bottom = player_rect.top
bullet_state = False
# 移动子弹
if not bullet_state:
bullet_rect.y -= bullet_speed
if bullet_rect.bottom < 0:
bullet_state = True
# 移动敌机
for enemy_rect in enemies:
enemy_rect.y += enemy_speed
# 如果敌机超出屏幕,则重新设置位置
for enemy_rect in enemies:
if enemy_rect.top > 700:
enemy_rect.top = random.randint(-700, 0)
enemy_rect.centerx = random.randint(0, 480)
# 清屏
screen.fill((255, 255, 255))
# 绘制背景
screen.blit(background, (0, 0))
# 绘制玩家飞机
screen.blit(player, player_rect)
# 绘制敌机
for enemy_rect in enemies:
screen.blit(enemy, enemy_rect)
# 发射敌机子弹
for i, enemy_rect in enumerate(enemies):
if enemy_bullet_states[i]:
# 设置敌机子弹的初始位置
enemy_bullets[i].centerx = enemy_rect.centerx
enemy_bullets[i].top = enemy_rect.bottom
enemy_bullet_states[i] = False
else:
# 移动敌机子弹
enemy_bullets[i].y += enemy_bullet_speed
# 判断敌机子弹是否与玩家飞机相撞
if enemy_bullets[i].colliderect(player_rect):
# 游戏结束
pygame.quit()
exit()
# 移动敌机子弹
for i, enemy_bullet_rect in enumerate(enemy_bullets):
if not enemy_bullet_states[i]:
# 移动敌机子弹
enemy_bullet_rect.y += enemy_bullet_speed
if enemy_bullet_rect.bottom > 700:
# 敌机子弹状态重置
enemy_bullet_states[i] = True
# 绘制敌机子弹
for i, enemy_bullet_rect in enumerate(enemy_bullets):
if not enemy_bullet_states[i]:
# 将敌机子弹绘制到屏幕上
screen.blit(enemy_bullet, enemy_bullet_rect)
# 绘制子弹
if not bullet_state:
screen.blit(bullet, bullet_rect) # 将子弹绘制到屏幕上
if bullet_rect.bottom < 0:
bullet_state = True
else:
bullet_rect.centerx = player_rect.centerx
bullet_rect.bottom = player_rect.top
bullet_state = True
# 如果玩家飞机和敌机相撞,游戏结束
for enemy_rect in enemies:
if player_rect.colliderect(enemy_rect):
pygame.quit()
exit()
# 如果子弹击中敌机,重新设置敌机位置
for enemy_rect in enemies:
if bullet_rect.colliderect(enemy_rect):
enemy_rect.top = random.randint(-700, 0)
enemy_rect.centerx = random.randint(0, 480)
bullet_state = True
# 更新屏幕
pygame.display.update()
启动
python.exe main.py
完毕
可以Cursor 帮你你写一些基础的代码,利用好 Cursor 可以大大提高工作效率。