Python小游戏14——雷霆战机

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()获取鼠标按键状态。

    作者:虞书欣的6

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python小游戏14——雷霆战机

    发表回复