战场类
首先这是我们游戏中所需要的地图,地图大小为630630,砖块大小为2424,我们把地图上下左右减去3个像素之后刚好可以划为1313的网格,每个网格大小为4848。
我们设置地图上总共有9列有砖块,第X1379列的砖块布局一致,X46列砖块布局一致,X28列砖块布局一致,第五列砖块单独绘制。围绕在home的砖块我们记为X0Y0列砖块。
import pygame
brickImage = r"../image/brick.png" # 获取战场上砖块图片
ironImage = r"../image/iron.png" # 获取战场上铁块图片
# 战场上的砖,继承Sprite基类
class Brick(pygame.sprite.Sprite):
def __init__(self):
# 使用父类构造函数
pygame.sprite.Sprite.__init__(self)
# 加载砖块图片
self.image = pygame.image.load(brickImage)
# 获取砖块的矩形区域
self.rect = self.image.get_rect()
#战场上的铁,继承Sprite基类
class Iron(pygame.sprite.Sprite):
def __init__(self):
# 使用父类构造函数
pygame.sprite.Sprite.__init__(self)
# 加载铁块图片
self.image = pygame.image.load(ironImage)
# 获取铁块的矩形区域
self.rect = self.image.get_rect()
#战场地图类
class Map():
def __init__(self):
self.brickGroup = pygame.sprite.Group() #砖块的精灵组
self.ironGroup = pygame.sprite.Group() # 铁块的精灵组
# 数字代表地图中的位置
# 画砖块
# 第1379列的砖块坐标(第一列砖块距离地图边界3+24*2的地方开始)
X1379 = [2, 3, 6, 7, 18, 19, 22, 23]
Y1379 = [2, 3, 4, 5, 6, 7, 8, 9, 10, 17, 18, 19, 20, 21, 22, 23]
# 第24列砖块的坐标
X46 = [10, 11, 14, 15]
Y46 = [2, 3, 4, 5, 6, 7, 8, 11, 12, 15, 16, 17, 18, 19, 20]
# 第28列砖块的坐标
X28 = [4, 5, 6, 7, 18, 19, 20, 21]
Y28 = [13, 14]
# 第5列砖块的坐标
X5 = [12, 13]
Y5 = [16, 17]
# 围绕home的砖块
X0Y0 = [(11,23),(12,23),(13,23),(14,23),(11,24),(14,24),(11,25),(14,25)]
# 按列画砖块
for x in X1379:
for y in Y1379:
self.brick = Brick()
self.brick.rect.left, self.brick.rect.top = 3 + x * 24, 3 + y * 24
self.brickGroup.add(self.brick)
for x in X28:
for y in Y28:
self.brick = Brick()
self.brick.rect.left, self.brick.rect.top = 3 + x * 24, 3 + y * 24
self.brickGroup.add(self.brick)
for x in X46:
for y in Y46:
self.brick = Brick()
self.brick.rect.left, self.brick.rect.top = 3 + x * 24, 3 + y * 24
self.brickGroup.add(self.brick)
for x in X5:
for y in Y5:
self.brick = Brick()
self.brick.rect.left, self.brick.rect.top = 3 + x * 24, 3 + y * 24
self.brickGroup.add(self.brick)
for x, y in X0Y0:
self.brick = Brick()
self.brick.rect.left, self.brick.rect.top = 3 + x * 24, 3 + y * 24
self.brickGroup.add(self.brick)
# 画铁块
for x, y in [(0,14),(1,14),(12,6),(13,6),(12,7),(13,7),(24,14),(25,14)]:
self.iron = Iron()
self.iron.rect.left, self.iron.rect.top = 3 + x * 24, 3 + y * 24
self.ironGroup.add(self.iron)