我想知道是否可以使用一和零的列表来绘制图像,其中1表示
pygame.draw.rect(DISPLAY_SURF,(0,0,0), (0,0,10,10))
,0表示空格。看起来像这样:
blockMap = [
[0,1,1,0,0,0,1,1,0],
[0,1,1,0,0,0,1,1,0],
[0,0,0,0,0,0,0,0,0],
[1,0,0,0,0,0,0,0,1],
[0,1,1,1,1,1,1,1,0],
[0,0,0,0,0,0,0,0,0]]
我没有尝试太多,因为我在整个Internet上浏览都没有成功,并且显然无法为字符串分配整数。
blockMap = [
[0,1,1,0,0,0,1,1,0],
[0,1,1,0,0,0,1,1,0],
[0,0,0,0,0,0,0,0,0],
[1,0,0,0,0,0,0,0,1],
[0,1,1,1,1,1,1,1,0],
[0,0,0,0,0,0,0,0,0]]
in blockMap if 1:
pygame.draw.rect(DISPLAY_SURF, (0,0,0), (0,0,10,10))
else:
pygame.draw.rect(DISPLAY_SURF, ((BG_COLOUR)), (0,0,10,10))
这应该在白色背景上以黑色显示笑脸,但绝对不是。我知道这是完全错误的,我已经尝试了很久了,那只是我希望工作的一次非常绝望的尝试。
答案 0 :(得分:2)
您正在为绘图函数提供常量参数。您需要根据矩阵更改坐标。
例如:
square_size = 30 # example
for y, row in enumerate(blockMap):
for x, val in enumerate(row):
upper_left_point = x * square_size, y * square_size
upper_right_point = (x + 1) * square_size, y * square_size
lower_left_point = x * square_size, (y + 1) * square_size
lower_right_point = (x + 1) * square_size, (y + 1) * square_size
pointlist = [upper_left_point,
upper_right_point,
lower_right_point,
lower_left_point]
pygame.draw.polygon(Surface, color, pointlist, width=0)
这是一个非常基本的示例,因此在使用它之前,请尝试完全理解该代码。在实际开始可视化任何内容之前,您将需要了解这些概念。
别忘了将square_size调整为屏幕尺寸。