1、源码来源:
2、效果:
3、地图绘制:
1、导入pygame模块;
import pygame # 导入pygame模块
2、获取图片路径——最好放在同级目录:
'''
brickImage = r"..\image\brick.png":这行代码定义了一个名为 brickImage 的变量,
它存储了一个指向名为 brick.png 的图像文件的路径。
该图像文件位于当前工作目录的上一级目录中的 image 文件夹内。
这里的 .. 表示上一级目录,\ 是目录分隔符(在Windows系统中)
,而 brick.png 是目标图像文件的名称。
'''
brickImage = r"..\image\brick.png" # 砖墙图片路径
'''
ironImage = r"..\image\iron.png":类似地,这行代码定义了一个名为 ironImage 的变量,
它存储了一个指向名为 iron.png 的图像文件的路径。
这个图像文件也位于与 brick.png 相同的目录下。
'''
ironImage = r"..\image\iron.png" # 铁墙图片路径
'''
在这两行代码中,定义了两个字符串变量 brickImage 和 ironImage,
它们分别用于存储指向图像文件的路径。这些路径使用了原始字符串(raw string)的语法,
即在字符串前加上 r 前缀,这样做是为了避免在路径中的反斜杠(\)被解释为转义字符。
'''
注释如果看着乱自行删除
3、创建类——砖墙:
# 创建一个Brick类(砖墙-可被消灭的砖) 用于加载其图片和位置
class Brick(pygame.sprite.Sprite):
#通过__init__方法,我们可以为对象实例设置初始属性值,
# 这些属性值将作为对象的一部分,并可以在对象的其他方法中被访问和修改。
def __init__(self): # 定义
pygame.sprite.Sprite.__init__(self)
#加载图像 pygame.image.load() 加载砖墙的图片
self.image = pygame.image.load(brickImage)
# 获取图片的位置 self.image.get_rect(topleft=())
# topleft=()设定在屏幕上的位置
self.rect = self.image.get_rect()
准确说Brick应该是“砖”,这里我们默认叫“砖墙”,在游戏内实现可被消灭;
3、创建类——铁墙:
# 创建一个Iron(铁墙-不可被消灭的砖) 用于加载其图片和位置
class Iron(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
#加载图像 pygame.image.load() 加载铁墙的图片
self.image = pygame.image.load(ironImage)
# 获取图片的位置 self.image.get_rect(topleft=()
# topleft=()设定在屏幕上的位置
self.rect = self.image.get_rect()
Iron = 翻译来是 “铁”
4、创建地图:
1、创建精灵组;
# 创建一个Map(地图) 用于绘制地形
class Map():
def __init__(self):
# 创建一个砖墙的精灵组
self.brickGroup = pygame.sprite.Group()
# 创建一个铁墙的精灵族
self.ironGroup = pygame.sprite.Group()
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]
X28 = [10, 11, 14, 15]
Y28 = [2, 3, 4, 5, 6, 7, 8, 11, 12, 15, 16, 17, 18, 19, 20]
X46 = [4, 5, 6, 7, 18, 19, 20, 21]
Y46 = [13, 14]
X5 = [12, 13]
Y5 = [16, 17]
X0Y0 = [(11,23),(12,23),(13,23),(14,23),(11,24),(14,24),(11,25),(14,25)]
3、绘制第一组墙体:
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)
效果
4、绘制第二组墙体:
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)
效果:
5、绘制第三组墙体:
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)
效果:
6、绘制第四组墙体:
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)
效果:
7、绘制第五组墙体:
# 画铁墙
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)
效果:
4、最终效果:
本人在CAD里面画的,理解意思就可以,以下是全部代码:
import pygame # 导入pygame模块
'''
brickImage = r"..\image\brick.png":这行代码定义了一个名为 brickImage 的变量,
它存储了一个指向名为 brick.png 的图像文件的路径。
该图像文件位于当前工作目录的上一级目录中的 image 文件夹内。
这里的 .. 表示上一级目录,\ 是目录分隔符(在Windows系统中)
,而 brick.png 是目标图像文件的名称。
'''
brickImage = r"..\image\brick.png" # 砖墙图片路径
'''
ironImage = r"..\image\iron.png":类似地,这行代码定义了一个名为 ironImage 的变量,
它存储了一个指向名为 iron.png 的图像文件的路径。
这个图像文件也位于与 brick.png 相同的目录下。
'''
ironImage = r"..\image\iron.png" # 铁墙图片路径
'''
在这两行代码中,定义了两个字符串变量 brickImage 和 ironImage,
它们分别用于存储指向图像文件的路径。这些路径使用了原始字符串(raw string)的语法,
即在字符串前加上 r 前缀,这样做是为了避免在路径中的反斜杠(\)被解释为转义字符。
'''
# 创建一个Brick(砖墙-可被消灭的砖) 用于加载其图片和位置
class Brick(pygame.sprite.Sprite):
#通过__init__方法,我们可以为对象实例设置初始属性值,
# 这些属性值将作为对象的一部分,并可以在对象的其他方法中被访问和修改。
def __init__(self): # 定义
pygame.sprite.Sprite.__init__(self)
#加载图像 pygame.image.load() 加载砖墙的图片
self.image = pygame.image.load(brickImage)
# 获取图片的位置 self.image.get_rect(topleft=())
# topleft=()设定在屏幕上的位置
self.rect = self.image.get_rect()
# 创建一个Iron(铁墙-不可被消灭的砖) 用于加载其图片和位置
class Iron(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
#加载图像 pygame.image.load() 加载铁墙的图片
self.image = pygame.image.load(ironImage)
# 获取图片的位置 self.image.get_rect(topleft=()
# topleft=()设定在屏幕上的位置
self.rect = self.image.get_rect()
# 创建一个Map(地图) 用于绘制地形
class Map():
def __init__(self):
self.brickGroup = pygame.sprite.Group()
self.ironGroup = pygame.sprite.Group()
# 数字代表地图中的位置
# 画砖块
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]
X28 = [10, 11, 14, 15]
Y28 = [2, 3, 4, 5, 6, 7, 8, 11, 12, 15, 16, 17, 18, 19, 20]
X46 = [4, 5, 6, 7, 18, 19, 20, 21]
Y46 = [13, 14]
X5 = [12, 13]
Y5 = [16, 17]
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)