【飞机大战】第一天游戏界面绘制,源代码可运行

创建屏幕对象

screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))

设置游戏标题

pygame.display.set_caption(‘飞机大战’)

加载飞机图片并缩放

player_img = pygame.image.load(‘player.png’).convert_alpha()
player_img = pygame.transform.scale(player_img, (int(player_img.get_width() * 0.5), int(player_img.get_height() * 0.5)))
player_x = SCREEN_WIDTH / 2 - player_img.get_width() / 2
player_y = SCREEN_HEIGHT - player_img.get_height() - 10
player_speed = 5

加载敌机图片并缩放

enemy_img = pygame.image.load(‘enemy.png’).convert_alpha()
enemy_img = pygame.transform.scale(enemy_img, (int(enemy_img.get_width() * 0.5), int(enemy_img.get_height() * 0.5)))
enemy_x = random.randint(0, SCREEN_WIDTH - enemy_img.get_width())
enemy_y = random.randint(50, 150)
enemy_speed = 2 # 减慢敌机的移动速度

初始化子弹列表

bullets = []

子弹属性

bullet_speed = 10
bullet_width = 4
bullet_height = 10

游戏循环标志

running = True

敌机得分

score = 0

函数:绘制子弹

def draw_bullets(bullet_list):
for bullet in bullet_list:
pygame.draw.rect(screen, WHITE, (bullet[0], bullet[1], bullet_width, bullet_height))

函数:更新子弹位置

def update_bullets(bullet_list):
for bullet in bullet_list[:]:
bullet[1] -= bullet_speed
if bullet[1] < 0:
bullet_list.remove(bullet)

函数:检测子弹和敌机的碰撞

def check_collision(bullet, enemy):
bullet_rect = pygame.Rect(bullet[0], bullet[1], bullet_width, bullet_height)
enemy_rect = pygame.Rect(enemy[0], enemy[1], enemy_img.get_width(), enemy_img.get_height())
return bullet_rect.colliderect(enemy_rect)

游戏主循环

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 = [player_x + player_img.get_width() / 2 - bullet_width / 2, 0]
            bullets.append(bullet)

# 检测按键
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_img.get_width():
    player_x += player_speed

# 飞机移动边界控制
player_x = max(0, min(player_x, SCREEN_WIDTH - player_img.get_width()))

# 敌机移动
enemy_y += enemy_speed
if enemy_y > SCREEN_HEIGHT:
    score -= 10  # 敌机逃脱减少得分
    enemy_x = random.randint(0, SCREEN_WIDTH - enemy_img.get_width())
    enemy_y = random.randint(50, 150)

# 绘制飞机和敌机
screen.blit(player_img, (player_x, player_y))
screen.blit(enemy_img, (enemy_x, enemy_y))

# 更新子弹位置并绘制
update_bullets(bullets)
draw_bullets(bullets)

# 检测子弹和敌机的碰撞
for bullet in bullets[:]:
    if check_collision([bullet[0], bullet[1]], [enemy_x, enemy_y]):
        score += 10  # 增加得分
        bullets.remove(bullet)
        break  # 每次只处理一次碰撞

# 更新屏幕显示
pygame.display.update()

# 显示得分
font = pygame.font.SysFont(None, 35)
score_text = font.render('Score: ' + str(score), True, WHITE)
screen.blit(score_text, (10, 10))

退出游戏

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)

端开发知识点,真正体系化!**

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)

  • 17
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值