python - 如何为 pygame 分离一个图块集?
问题描述
我使用平铺创建了一个地图,并将其作为 CSV 导出到我的 Pygame 应用程序。我使用了从网上下载的tileset。所以我已经像这样加载了数据:
world_data = []
for row in range(ROWS+1):
r = [-1] * (COLS+1)
world_data.append(r)
#LOAD IN LEVEL DATA AND CREATE WORLD
with open("stickquestmap{}.csv".format(level), newline='') as csvfile:
reader = csv.reader(csvfile, delimiter=',')
for x, row in enumerate(reader):
for y, tile in enumerate(row):
world_data[x][y] = int(tile)
现在,我目前正在制作一种process_data
方法,该方法可以遍历world_data
单个图块并对其进行 blit,但我没有单独保存图块。我只有一个包含所有图块的 PNG。我迷失了如何解决这个问题。
解决方案
您可以使用 Paint.net 或 GIMP 之类的图像编辑器将您的图块分成单独的图像,也可以在 pygame 本身中完成。
“裁剪” Surface 的矩形部分的一种简单方法是使用surface.subsurface(Rect)
. 请参阅https://www.pygame.org/docs/ref/surface.html#pygame.Surface.subsurface。
例子:
tileset = pygame.image.load("tileset.png").convert()
grass_tile = tileset.subsurface([0,0,32,32])
dirt_tile = tileset.subsurface([32,0,32,32])
推荐阅读
- java - 有没有办法将鼠标坐标移动到 JFrame 的标题?
- apache-tika - Apache TIKA - MediaDataBox iso 文件
- java - 根据自定义对象对对象列表进行排序作为字段之一
- java - 为什么 JPA Spring Boot 以错误的顺序放置 MySQL 数据?
- javascript - ReactJS - LocalStorage,我如何格式化我的本地存储
- html - React 锚标记不会将我带到同一页面上的另一个组件
- java - 使用 Java 8 将 2 个或多个字段组合为 Map 中的键的最佳方法是什么?
- mongodb - 无法获取 Passport.js 的 req.user 值
- git - 从未合并的分支分支时,如何在 Git 中停止无意义的合并冲突?
- javascript - readTextFile 函数返回未定义。为什么?