python - 如何修改我的代码以使列表中的图像以行和图块的形式出现?
问题描述
我正在做的是创建一个记忆拼贴游戏,该游戏需要一个包含 8 个图像的列表,每个图像一次出现两次。这是我的代码中有问题的部分。
self.images_1_2_8 = ['image1.bmp','image2.bmp','image3.bmp','image4.bmp','image5.bmp','image6.bmp','image8.bmp','image7.bmp','image1.bmp','image2.bmp','image3.bmp','image4.bmp','image5.bmp','image6.bmp','image7.bmp','image8.bmp']
self.collect_images = []
for select_images in self.images_1_2_8:
image = pygame.image.load(select_images)
#width = image.get_width()
#height = image.get_height()
random.shuffle(self.self.images_1_2_8)
for row_index in range(0, self.board_size):
row = []
for col_index in range(0,self.board_size):
width = image.get_width()
height = image.get_height()
x = width * col_index
y = height * row_index
tile = Tile(x,y, self.select_images_1_2_8[image_index], self.surface) row.append(tile)
self.board.append(row)
我不断收到的错误消息是:builtins.TypeError: 'pygame.Surface' object is not subscriptable
我发现这意味着getitem () 属性没有将我的图像作为列表读取?我想这就是它的意思。如果我删除列表 [row_index*self.board_size+col_index],图像会出现(列表中只有一张图像,填充所有 16 个索引)。
我知道这很容易解决,但我是 python 的新手,而且我已经在这几个星期了......如果有人能提供帮助,请提前感谢您!
解决方案
查看代码,它应该从加载的最后一个(单个)图像(而不是列表)中collect_images
进行选择。image
代码差不多了,只需要调整一下。
self.images_1_2_8 = ['image1.bmp','image2.bmp','image3.bmp','image4.bmp','image5.bmp','image6.bmp','image8.bmp','image7.bmp','image1.bmp','image2.bmp','image3.bmp','image4.bmp','image5.bmp','image6.bmp','image7.bmp','image8.bmp']
self.collect_images = []
for select_images in self.images_1_2_8:
image = pygame.image.load(select_images)
self.collect_images.append(image) # <-- make the list in collect_images
#width = image.get_width()
#height = image.get_height()
random.shuffle(self.collect_images) # <-- shuffle loaded images
for row_index in range(0, self.board_size):
row = []
for col_index in range(0,self.board_size):
width = image.get_width()
height = image.get_height()
x = width * col_index
y = height * row_index
tile = Tile(x,y, collect_images[image_index], self.surface) # <-- use the image-list
row.append(tile)
self.board.append(row)
没有更新的代码image_index
。请确保它从 0 递增到列表中的最大图像数。
推荐阅读
- python-3.x - 如何从列表坐标中绘制函数?
- facebook-graph-api - Facebook Graph API 未显示广告系列草稿
- javascript - 如何将 Vuetify 的材料设计颜色名称转换为 Vue 组件中的十六进制值?
- python - 我可以绕过 Pandas/Python 中的硬编码并设置我选择的行终止符吗?
- opencv - 我可以使用 gst-launch-1.0 udpsrc 从命令行使用 gstreamer 获取我的视频流,但是如何使用 opencv videoCapture()
- java - 如何为 Spring 自定义验证器配置 MessageCodesResolver
- javascript - Javascript比较奇怪
- python - 如何隐藏在 Visual Studio Code 终端中显示的文件路径
- flutter - 文本校正功能
- python - Python cursor.execute fetchall 问题