如何解决无法在 Pygames 中制作简单的 2d 地图
我正在尝试在 Pygame 中制作一个简单的 2d 游戏地图,但遇到了图块布局的问题。我试图用二维数组制作地图,但它不起作用。它们都出现在一行上。我的目标是通过一个只有矩形的数组制作一个简单的二维地图。这是代码。
import pygame
pygame.init()
root = pygame.display.set_mode((500,500))
pygame.display.set_caption("Game")
surface = pygame.Surface((60,60),pygame.SRCALPHA)
rect = pygame.draw.rect(surface,(255,0),(50,50,50)),50)
surface_one = pygame.Surface((60,pygame.SRCALPHA)
rect_one = pygame.draw.rect(surface_one,(0,255,50)
def main():
tileX = 0
tileY = 0
map = [[0,0],[1,1,1],0]]
for x in map:
for x in x:
if x == 0:
root.blit(surface,[tileX,tileY])
tileX = tileX+16
if x == 1:
root.blit(surface_one,tileY])
tileX = tileX+16
tileX = 0
tileY += 30
pygame.display.update()
run = True
while run:
pygame.time.delay(100)
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
main()
解决方法
您必须在外循环开始时设置 tileX = 0
并在外循环结束时增加 tileY
并且:
def main():
map = [[0,0],[1,1,1],0]]
tileY = 0
for row in map:
tileX = 0
for x in row:
if x == 0:
root.blit(surface,[tileX,tileY])
if x == 1:
root.blit(surface_one,tileY])
tileX += 16
tileY += 16
pygame.display.update()
但是,您可以使用 enumerate
简化代码:
def main():
map = [[0,0]]
for y,row in enumerate(map):
tileX = 0
for x,cell in enumerate(row):
image = surface_one if cell == 1 else surface
root.blit(image,[x*16,y*16])
pygame.display.update()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。