使用cursor开发python版的飞机大战

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 可以大大提高工作效率。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值