这可能看起来像一个复制品,也许是,但我使用的是视窗10和雪碧.py只有v2i在一个地方,更改它并不能解决问题。 也许我用错了批绘图,所以我提供了代码。draw()是由on\u draw()函数从游戏对象调用的。你知道吗
class Island:
def __init__(self):
self.island = [[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],]
self.tile_width = 30
self.offsetx = 350
self.offsety = 100
self.batch = pyglet.graphics.Batch()
self.water_tile = pyglet.image.load("path")
self.grass_tile = pyglet.image.load("path")
self.render_phase = True
def render(self):
for i in range(len(self.island)):
for j in range(len(self.island[i])):
if self.island[i][j] == 0:
x = j*self.tile_width - i*self.tile_width + self.offsetx
y = int((j*self.tile_width+i*self.tile_width)/2+self.offsety)
pyglet.sprite.Sprite(self.water_tile, x, y, batch=self.batch)
elif self.island[i][j] == 1:
x = j * self.tile_width - i * self.tile_width + self.offsetx
y = int((j * self.tile_width + i * self.tile_width) / 2 + self.offsety)
pyglet.sprite.Sprite(self.grass_tile, x, y, batch=self.batch)
def draw(self):
if self.render_phase:
self.render()
self.render_phase = False
else:
self.batch.draw()
问题是您没有将
Sprites
赋值给全局变量或类变量,所以它可能会在render()
结束时删除Sprites
(作为局部对象)完整示例-尝试使用和不使用
self.sprites.append(s)
相关问题 更多 >
编程相关推荐