用户:
233windcn查看:0 回复:0 评论:0 创建时间:2023-12-17T16:20:36
【作品展示】

【作品介绍】
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