用Python写一个简单的坦克大战游戏实例

时间:2024-04-09 21:29:00

坦克大战游戏的Python代码示例:

import pygame
import random

# 初始化 Pygame
pygame.init()

# 定义颜色
WHITE = (255, 255, 255)
RED = (255, 0, 0)
GREEN = (0, 255, 0)
BLUE = (0, 0, 255)

# 屏幕大小和标题
screen_width = 800
screen_height = 600
screen = pygame.display.set_mode((screen_width, screen_height))
pygame.display.set_caption("坦克大战")

# 坦克类
class Tank(pygame.sprite.Sprite):
    def __init__(self, x, y, color):
        pygame.sprite.Sprite.__init__(self)
        self.image = pygame.Surface([40, 40])
        self.image.fill(color)
        self.rect = self.image.get_rect()
        self.rect.x = x
        self.rect.y = y
        self.speed = 3

    def move_up(self):
        self.rect.y -= self.speed

    def move_down(self):
        self.rect.y += self.speed

    def move_left(self):
        self.rect.x -= self.speed

    def move_right(self):
        self.rect.x += self.speed

    def fire(self):
        bullet = Bullet(self.rect.centerx, self.rect.centery, BLUE)
        bullets.add(bullet)

# 子弹类
class Bullet(pygame.sprite.Sprite):
    def __init__(self, x, y, color):
        pygame.sprite.Sprite.__init__(self)
        self.image = pygame.Surface([10, 10])
        self.image.fill(color)
        self.rect = self.image.get_rect()
        self.rect.x = x
        self.rect.y = y
        self.speed = 5

    def update(self):
        self.rect.y -= self.speed
        if self.rect.y < 0:
            self.kill()

# 创建玩家坦克
player = Tank(screen_width // 2, screen_height - 50, GREEN)

# 创建敌方坦克
enemies = pygame.sprite.Group()
for i in range(5):
    enemy = Tank(random.randint(0, screen_width), random.randint(0, 200), RED)
    enemies.add(enemy)

# 创建子弹组
bullets = pygame.sprite.Group()

# 游戏主循环
running = True
clock = pygame.time.Clock()
while running:
    # 检查事件
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    # 检测按键事件
    keys = pygame.key.get_pressed()
    if keys[pygame.K_UP]:
        player.move_up()
    elif keys[pygame.K_DOWN]:
        player.move_down()
    elif keys[pygame.K_LEFT]:
        player.move_left()
    elif keys[pygame.K_RIGHT]:
        player.move_right()
    elif keys[pygame.K_SPACE]:
        player.fire()

    # 更新子弹和坦克位置
    bullets.update()
    enemies.update()

    # 检测子弹和坦克碰撞
    hits = pygame.sprite.groupcollide(enemies, bullets, True, True)

    # 重绘屏幕
    screen.fill(WHITE)
    bullets.draw(screen)
    enemies.draw(screen)
    screen.blit(player.image, player.rect)

    # 更新屏幕
    pygame.display.flip()
    clock.tick(60)

# 退出游戏
pygame.quit()

这个代码创建了一个简单的坦克大战游戏,玩家可以使用箭头键控制坦克移动,使用空格键发射子弹。敌方坦克会在屏幕随机位置生成,玩家坦克和敌方坦克的子弹会互相碰撞并消失。游戏使用Pygame库进行图形绘制和事件处理。你可以根据需要进行进一步的修改和完善。