python 代码实现坦克大战游戏
时间: 2023-08-05 16:53:01 浏览: 264
坦克大战(python编写)
5星 · 资源好评率100%
好的,坦克大战游戏的实现需要使用 Pygame 模块,以下是一个简单的示例代码:
```python
import pygame
import random
# 初始化 Pygame
pygame.init()
# 定义游戏窗口大小
window_width = 640
window_height = 480
# 创建游戏窗口
screen = pygame.display.set_mode((window_width, window_height))
# 定义颜色常量
white = (255, 255, 255)
black = (0, 0, 0)
green = (0, 255, 0)
red = (255, 0, 0)
# 加载坦克图片
player_img = pygame.image.load('player.png')
enemy_img = pygame.image.load('enemy.png')
# 定义坦克类
class Tank(pygame.sprite.Sprite):
def __init__(self, x, y, image):
pygame.sprite.Sprite.__init__(self)
self.image = image
self.rect = self.image.get_rect()
self.rect.x = x
self.rect.y = y
self.speed = 5
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
# 定义玩家坦克类
class Player(Tank):
def __init__(self, x, y, image):
Tank.__init__(self, x, y, image)
self.score = 0
def update_score(self):
self.score += 1
# 定义敌人坦克类
class Enemy(Tank):
def __init__(self, x, y, image):
Tank.__init__(self, x, y, image)
self.direction = random.choice(['up', 'down', 'left', 'right'])
self.change_direction_countdown = 50
def update_direction(self):
self.change_direction_countdown -= 1
if self.change_direction_countdown == 0:
self.direction = random.choice(['up', 'down', 'left', 'right'])
self.change_direction_countdown = 50
def move(self):
if self.direction == 'up':
self.move_up()
elif self.direction == 'down':
self.move_down()
elif self.direction == 'left':
self.move_left()
elif self.direction == 'right':
self.move_right()
# 创建玩家坦克对象
player = Player(window_width // 2, window_height - 50, player_img)
# 创建敌人坦克列表
enemies = []
for i in range(5):
enemy = Enemy(random.randint(0, window_width), random.randint(0, window_height // 2), enemy_img)
enemies.append(enemy)
# 创建精灵组
all_sprites = pygame.sprite.Group()
all_sprites.add(player)
for enemy in enemies:
all_sprites.add(enemy)
# 创建字体对象
font = pygame.font.SysFont(None, 30)
# 游戏循环
game_over = False
while not game_over:
for event in pygame.event.get():
if event.type == pygame.QUIT:
game_over = True
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_UP:
player.move_up()
elif event.key == pygame.K_DOWN:
player.move_down()
elif event.key == pygame.K_LEFT:
player.move_left()
elif event.key == pygame.K_RIGHT:
player.move_right()
# 更新敌人坦克的方向
for enemy in enemies:
enemy.update_direction()
# 更新敌人坦克的位置
for enemy in enemies:
enemy.move()
# 判断玩家是否与敌人坦克相撞
for enemy in enemies:
if pygame.sprite.collide_rect(player, enemy):
game_over = True
# 绘制游戏界面
screen.fill(white)
all_sprites.draw(screen)
score_text = font.render('Score: {}'.format(player.score), True, black)
screen.blit(score_text, (10, 10))
pygame.display.update()
# 退出 Pygame
pygame.quit()
```
上述代码中,我们定义了三个类:`Tank`、`Player` 和 `Enemy`。`Tank` 类是一个基类,定义了坦克的基本属性和方法。`Player` 和 `Enemy` 类继承自 `Tank` 类,分别表示玩家坦克和敌人坦克。
在游戏循环中,我们首先处理 Pygame 事件,然后更新敌人坦克的方向和位置。接着,我们判断玩家是否与敌人坦克相撞,如果相撞则结束游戏。最后,我们绘制游戏界面,包括玩家坦克、敌人坦克、分数等元素。
这只是一个简单的示例代码,你可以根据自己的需求进行修改和扩展。
阅读全文