当前位置:首页 » 《我的小黑屋》 » 正文

Python小游戏14——雷霆战机

7 人参与  2024年10月31日 09:22  分类 : 《我的小黑屋》  评论

点击全文阅读


7d32fbc21f0e4dbf899ef90973136141.png

 

首先,你需要确保安装了Pygame库。如果你还没有安装,可以使用pip来安装:

 

bash

pip install pygame

代码如下:

python

import pygame

import sys

import random

 

# 初始化Pygame

pygame.init()

 

# 设置屏幕大小

screen_width = 800

screen_height = 600

screen = pygame.display.set_mode((screen_width, screen_height))

pygame.display.set_caption("雷霆战机")

 

# 颜色定义

WHITE = (255, 255, 255)

BLACK = (0, 0, 0)

 

# 加载飞机图像

player_img = pygame.image.load("player.png") # 确保你有一个名为player.png的飞机图像文件

player_img = pygame.transform.scale(player_img, (50, 50))

player_x = screen_width // 2

player_y = screen_height - 100

player_x_change = 0

 

# 子弹定义

bullet_img = pygame.image.load("bullet.png") # 确保你有一个名为bullet.png的子弹图像文件

bullet_img = pygame.transform.scale(bullet_img, (10, 20))

bullet_x = 0

bullet_y = player_y

bullet_x_change = 0

bullet_y_change = 10

bullet_state = "ready" # "ready"表示子弹未发射,"fire"表示子弹已发射

 

# 游戏主循环

running = True

while running:

    # 背景填充

    screen.fill(BLACK)

 

    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 and bullet_state == "ready":

                bullet_x = player_x + 20

                bullet_state = "fire"

 

        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 >= screen_width - 50:

        player_x = screen_width - 50

 

    # 更新子弹位置

    if bullet_state == "fire":

        fire_bullet(screen, bullet_x, bullet_y, bullet_img, bullet_x_change, bullet_y_change)

        bullet_y -= bullet_y_change

    if bullet_y <= 0:

        bullet_y = player_y

        bullet_state = "ready"

 

    # 绘制飞机

    screen.blit(player_img, (player_x, player_y))

 

    # 更新屏幕

    pygame.display.update()

 

# 退出Pygame

pygame.quit()

sys.exit()

 

def fire_bullet(screen, x, y, bullet_img, x_change, y_change):

    bullet_rect = bullet_img.get_rect()

    bullet_rect.topleft = (x, y)

    screen.blit(bullet_img, bullet_rect)

注意事项:

图像文件:确保你有名为player.png和bullet.png的图像文件,并放在与你的Python脚本相同的目录中。

《雷霆战机》Python小游戏的知识点总结

1. pygame库的安装与配置

pygame是一个开源的Python库,用于制作游戏,包括图形和声音库。

安装pygame可以通过pip命令完成。

配置pygame通常意味着确保所有依赖项都正确安装,包括SDL、音频库等。

2. 游戏窗口与图形绘制

使用pygame.display.set_mode()设置游戏窗口的大小。

使用pygame.display.set_caption()设置窗口标题。

使用pygame.image.load()加载图像,并使用pygame.Surface()创建图像对象。

使用pygame.draw.circle()、pygame.draw.rect()等函数在屏幕上绘制形状。

使用screen.blit()将图像绘制到屏幕上。

3. 游戏循环与事件处理

游戏主循环是游戏运行的核心,通常使用while循环实现。

使用pygame.event.get()获取事件队列中的事件,并处理用户输入(如按键、鼠标点击等)。

使用pygame.quit()和sys.exit()退出游戏。

4. 精灵(Sprite)与精灵组(Sprite Group)

精灵是pygame中用于表示游戏对象的类,通常包含图像、位置和移动速度等属性。

使用pygame.sprite.Sprite()创建精灵类,并定义其__init__()、update()和draw()方法。

精灵组用于管理多个精灵,可以方便地对它们进行更新和绘制。

5. 碰撞检测与得分系统

使用pygame.sprite.spritecollide()检测两个精灵之间的碰撞。

可以设置得分系统,通过碰撞检测来增加或减少分数。

6. 音频管理

使用pygame.mixer.init()初始化音频模块。

使用pygame.mixer.music.load()和pygame.mixer.music.play()加载和播放背景音乐。

可以使用pygame.mixer.Sound()加载和播放音效。

7. 游戏状态管理

游戏状态管理涉及游戏的不同阶段(如开始、运行、结束等)的切换和处理。

可以使用变量或类来管理游戏状态,并根据状态执行相应的操作。

8. 用户输入处理

处理键盘和鼠标输入是游戏开发中常见的需求。

使用pygame.key.get_pressed()获取键盘按键状态。

使用pygame.mouse.get_pos()获取鼠标位置,使用pygame.mouse.get_pressed()获取鼠标按键状态。


点击全文阅读


本文链接:http://zhangshiyu.com/post/180301.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • 小说大结局小说穿书成恶毒女配后意外和男主相爱了小说已更新+特别篇(周芃野陆沉舟)纯净版
  • 全书浏览重生高考填报志愿时,我放任全班上大专结局+番外新书(颜禾晚宋津年叶淼淼)_重生高考填报志愿时,我放任全班上大专结局+番外新书(颜禾晚宋津年叶淼淼)全书结局
  • 她却爱我,昙花一梦后续+(谢初柔容怀晏楚云凡)
  • 爱恨随心,不问来路免费阅读_洛之言小冉陈诺精选作品_小说后续在线阅读_无删减免费完结_
  • 方韵陈轩小说(山城有雨)(方韵陈轩)全书+后续+结局在线阅读
  • 替嫁你提的,我嫁顾总你哭什么:结局+番外新上热文(苏漾顾瑾):全文+番外+纯净版结局
  • 重生高考前,我冷眼看清冷佛子将未来断送精彩节选(桑煜时挽)全书免费_(桑煜时挽)重生高考前,我冷眼看清冷佛子将未来断送精彩节选后续(桑煜时挽)
  • 终是庄周梦了蝶原版(南语沈聿珩)
  • 我抛弃赘婿去冲喜,黑道大佬却发疯了许棠傅明礼免费赏析_我抛弃赘婿去冲喜,黑道大佬却发疯了许棠傅明礼免费赏析
  • 乔笙沈明屿后续(乔笙沈明屿)(引以为傲的完美婚姻,不过是一个笑话)完整章节列表_笔趣阁
  • 若似月轮终皎洁(傅临渊沈知意)
  • 与前妻离婚死遁后,她抱着我的尸体痛不欲生全文阅读_明珠李越林母全文_小说后续在线阅读_无删减免费完结_

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1