猫史档案馆


【Python作品分享】新的作品【作品秀】

用户:233windcn233windcn查看:0 回复:0 评论:0 创建时间:2023-12-17T16:20:36


【作品展示】

center_image

 

【作品介绍】

014

 

【作品源代码】

import pygame
import random

# 初始化 Pygame
pygame.init()

# 游戏窗口
width, height = 800, 600
win = pygame.display.set_mode((width, height))
pygame.display.set_caption("射击游戏")

# 颜色
WHITE = (255, 255, 255)
RED = (255, 0, 0)
YELLOW = (255, 255, 0)

# 玩家飞船
player_width, player_height = 50, 50
player_x = width // 2 - player_width // 2
player_y = height - player_height - 10
player_speed = 5

# 子弹
bullet_width, bullet_height = 10, 30
bullet_x, bullet_y = -100, -100
bullet_speed = 10
bullet_state = "ready"

# 敌人
enemy_width, enemy_height = 50, 50
enemy_x = random.randint(0, width - enemy_width)
enemy_y = random.randint(50, 200)
enemy_speed = 2

# 分数
score = 0
font = pygame.font.Font(None, 36)

# 显示分数


def show_score():
    score_text = font.render("Score: " + str(score), True, WHITE)
    win.blit(score_text, (10, 10))

# 玩家飞船绘制函数


def draw_player():
    pygame.draw.rect(win, WHITE, (player_x, player_y,
                     player_width, player_height))

# 子弹绘制函数


def draw_bullet():
    pygame.draw.rect(win, YELLOW, (bullet_x, bullet_y,
                     bullet_width, bullet_height))

# 敌人绘制函数


def draw_enemy():
    pygame.draw.rect(win, RED, (enemy_x, enemy_y, enemy_width, enemy_height))

# 检测子弹与敌人碰撞函数


def check_collision():
    global score, enemy_x, enemy_y, bullet_state, bullet_x, bullet_y

    if bullet_y <= 0:
        bullet_state = "ready"
        bullet_x, bullet_y = -100, -100

    if bullet_state == "fire":
        if bullet.colliderect(enemy):
            score += 1
            bullet_state = "ready"
            bullet_x, bullet_y = -100, -100
            enemy_x = random.randint(0, width - enemy_width)
            enemy_y = random.randint(50, 200)


# 游戏循环
running = True
while running:
    win.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_SPACE and bullet_state == "ready":
                bullet_x = player_x + player_width // 2 - bullet_width // 2
                bullet_y = player_y - bullet_height
                bullet_state = "fire"

    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 < width - player_width:
        player_x += player_speed

    # 玩家飞船
    draw_player()

    # 子弹
    if bullet_state == "fire":
        bullet_y -= bullet_speed
        draw_bullet()

    # 敌人
    enemy_x += enemy_speed
    if enemy_x <= 0 or enemy_x >= width - enemy_width:
        enemy_speed *= -1
        enemy_y += enemy_height
    draw_enemy()

    # 检测碰撞
    bullet = pygame.Rect(bullet_x, bullet_y, bullet_width, bullet_height)
    enemy = pygame.Rect(enemy_x, enemy_y, enemy_width, enemy_height)
    check_collision()

    # 显示分数
    show_score()

    pygame.display.update()

pygame.quit()

 

【提示】

部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:

https://python.codemao.cn


回复

上一页1 页 / 共 0下一页