[Python] 纯文本查看 复制代码 import pygame
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)
red = (255, 0, 0)
# 字体
font = pygame.font.Font(None, 36)
class Player:
def __init__(self):
self.health = 100
self.x = screen_width // 2
self.y = screen_height // 2
self.size = 20
self.speed = 5
self.bullet_damage = 20
def move(self, keys):
if keys[pygame.K_LEFT]:
self.x -= self.speed
if keys[pygame.K_RIGHT]:
self.x += self.speed
if keys[pygame.K_UP]:
self.y -= self.speed
if keys[pygame.K_DOWN]:
self.y += self.speed
# 确保玩家不会移出屏幕
self.x = max(self.size // 2, min(self.x, screen_width - self.size // 2))
self.y = max(self.size // 2, min(self.y, screen_height - self.size // 2))
def draw(self):
pygame.draw.circle(screen, white, (self.x, self.y), self.size)
class Enemy:
def __init__(self):
self.health = 40
self.x = random.randint(0, screen_width)
self.y = random.randint(0, screen_height)
self.size = 20
self.speed = 3
self.damage = 10
def move_towards_player(self, player):
dx = player.x - self.x
dy = player.y - self.y
dist = (dx ** 2 + dy ** 2) ** 0.5
if dist!= 0:
self.x += self.speed * dx / dist
self.y += self.speed * dy / dist
def draw(self):
pygame.draw.rect(screen, red, (self.x - self.size // 2, self.y - self.size // 2, self.size, self.size))
def main():
player = Player()
enemies = [Enemy() for _ in range(10)]
running = True
clock = pygame.time.Clock()
while running:
screen.fill(black)
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
keys = pygame.key.get_pressed()
player.move(keys)
player.draw()
for enemy in enemies:
enemy.move_towards_player(player)
enemy.draw()
# 敌人攻击玩家
if ((player.x - enemy.x) ** 2 + (player.y - enemy.y) ** 2) ** 0.5 < player.size:
player.health -= enemy.damage
# 玩家攻击敌人
# 这里可以添加玩家攻击逻辑,例如按下空格键发射子弹,目前先简单模拟
for enemy in enemies:
if ((player.x - enemy.x) ** 2 + (player.y - enemy.y) ** 2) ** 0.5 < player.size:
enemy.health -= player.bullet_damage
if enemy.health <= 0:
enemies.remove(enemy)
# 显示玩家血量
health_text = font.render(f"Player Health: {player.health}", True, white)
screen.blit(health_text, (10, 10))
# 检查游戏结束条件
if player.health <= 0:
print("敌人胜利!")
running = False
if len(enemies) == 0:
print("玩家胜利!")
running = False
pygame.display.flip()
clock.tick(60)
if __name__ == "__main__":
main()
pygame.quit() |