下面是一个简单的Python射击小游戏的示例代码:

import pygame
import random

# 初始化
pygame.init()

# 设置游戏窗口的大小
screen_width = 800
screen_height = 600
screen = pygame.display.set_mode((screen_width, screen_height))

# 加载玩家图像
player_img = pygame.image.load("player.png")
player_width = 64
player_height = 64
player_x = screen_width // 2 - player_width // 2
player_y = screen_height - player_height
player_speed = 5

# 加载子弹图像
bullet_img = pygame.image.load("bullet.png")
bullet_width = 32
bullet_height = 32
bullet_x = 0
bullet_y = screen_height - player_height
bullet_speed = 10
bullet_state = "ready"  # 子弹状态,"ready"表示可以射击,"fire"表示正在射击

# 加载敌人图像
enemy_img = pygame.image.load("enemy.png")
enemy_width = 64
enemy_height = 64
enemy_x = random.randint(0, screen_width - enemy_width)
enemy_y = random.randint(50, 150)
enemy_speed = 2

# 计分
score_value = 0
font = pygame.font.Font("freesansbold.ttf", 32)
text_x = 10
text_y = 10

# 游戏结束
game_over_font = pygame.font.Font("freesansbold.ttf", 64)
game_over_text_x = screen_width // 2 - 200
game_over_text_y = screen_height // 2 - 32

# 更新分数
def show_score():
    score = font.render("Score: " + str(score_value), True, (255, 255, 255))
    screen.blit(score, (text_x, text_y))

# 玩家移动
def move_player(direction):
    global player_x
    if direction == "left" and player_x > 0:
        player_x -= player_speed
    elif direction == "right" and player_x < screen_width - player_width:
        player_x += player_speed

# 射击子弹
def fire_bullet():
    global bullet_state, bullet_x, bullet_y
    bullet_state = "fire"
    bullet_x = player_x + player_width // 2 - bullet_width // 2
    bullet_y = player_y

# 检测碰撞
def is_collision(enemy_x, enemy_y, bullet_x, bullet_y):
    distance = ((enemy_x - bullet_x) ** 2 + (enemy_y - bullet_y) ** 2) ** 0.5
    if distance < 27:
        return True
    else:
        return False

# 游戏循环
running = True
while running:
    screen.fill((0, 0, 0))

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

        # 键盘事件
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT:
                move_player("left")
            if event.key == pygame.K_RIGHT:
                move_player("right")
            if event.key == pygame.K_SPACE and bullet_state == "ready":
                fire_bullet()

    # 更新玩家位置
    screen.blit(player_img, (player_x, player_y))

    # 更新敌人位置
    enemy_x += enemy_speed
    if enemy_x <= 0 or enemy_x >= screen_width - enemy_width:
        enemy_speed *= -1
        enemy_y += enemy_height
    screen.blit(enemy_img, (enemy_x, enemy_y))

    # 更新子弹位置
    if bullet_state == "fire":
        bullet_y -= bullet_speed
        screen.blit(bullet_img, (bullet_x, bullet_y))
    if bullet_y <= 0:
        bullet_state = "ready"

    # 检测碰撞
    collision = is_collision(enemy_x, enemy_y, bullet_x, bullet_y)
    if collision:
        bullet_state = "ready"
        bullet_y = screen_height - player_height
        score_value += 1
        enemy_x = random.randint(0, screen_width - enemy_width)
        enemy_y = random.randint(50, 150)

    # 显示分数
    show_score()

    # 游戏结束
    if enemy_y >= player_y:
        game_over_text = game_over_font.render("GAME OVER", True, (255, 255, 255))
        screen.blit(game_over_text, (game_over_text_x, game_over_text_y))
        break

    pygame.display.update()

# 退出游戏
pygame.quit()

请注意,此代码中使用的图像文件(player.pngbullet.pngenemy.png)应与代码文件位于同一目录中。您可以使用适当的图像来替换这些文件。此外,您可能还需要安装Pygame库(使用pip install pygame命令)以运行此代码

写一个python射击小游戏

原文地址: http://www.cveoy.top/t/topic/hKWy 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录