pygame之坦克大战(一)

战场类

首先这是我们游戏中所需要的地图,地图大小为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) 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值