我正在制作一个简单的游戏,其中有一个移动的,在我的例子中,图像。它只是由箭头键控制,而且这个功能工作得很好。但是,我有一个问题,它留下了它的线索,我们应该通过添加screen.fill((0, 0, 0))来解决这个问题,这样它就移除了前面的位置。然而,绘制我的背景需要读取900行数据和显示900幅32x32p图像,所以当我不得不重新绘制我的背景时,python似乎无法处理经常发生的崩溃。还有什么方法可以让我在保留背景的同时拥有一个运动图像呢?
一些相关守则:
用于绘制背景
while Scene1Read == False:
read = open("testgraphics.txt", "r")
xcoords = -32
ycoords = 0
squarenum = 0
for x in read:
squarenum += 1
if xcoords < 1024:
xcoords += 32
else:
xcoords = -32
ycoords += 32
squarecolorformatting = x[-6:]
squarecolor = squarecolorformatting[:-1]
if squarecolor == "METAL":
img = pygame.image.load("metal.png")
screen.blit(img, (xcoords,ycoords))
elif squarecolor == "SANDx":
img = pygame.image.load("sand.png")
screen.blit(img, (xcoords,ycoords))
elif squarecolor == "TRAPD":
img = pygame.image.load("trapdoor.png")
screen.blit(img, (xcoords,ycoords))
else:
pygame.draw.rect(screen,colorsdict[squarecolor], [xcoords,ycoords,32,32])
terminalfont = pygame.font.Font("falloutterminal.ttf", 16)
testtext1 = terminalfont.render(str(squarenum), False, (255, 0, 255))
screen.blit(testtext1,(xcoords,ycoords))
Scene1Read = True
read.close()因为移动角色
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
x1_change = -16
y1_change = 0
elif event.key == pygame.K_RIGHT:
x1_change = 16
y1_change = 0
elif event.key == pygame.K_UP:
x1_change = 0
y1_change = -16
elif event.key == pygame.K_DOWN:
x1_change = 0
y1_change = 16
x1 += x1_change
y1 += y1_change发布于 2020-08-19 16:22:14
你的背景是滚动还是有动态元素四处移动?如果不是--这只是一个静态的背景,我为我的游戏做的一个解决方案是,我把背景变成一个图像文件,所以每次它重新绘制背景时,它只需要处理一个blit函数调用,而不是对每一个平铺来重新绘制背景。也许还有其他我不知道的解决方案,但我建议考虑一下这个选择。
https://stackoverflow.com/questions/63490371
复制相似问题