作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在写一个国际象棋游戏,我遇到了一个问题。
我已经创建了图形类(Pawn、Tower、Jumper、Runner、King 和 Queen),现在我正在尝试添加一些功能,以便程序识别鼠标光标何时位于图形上,这就是我的问题开始的地方。
显然,如果我手动为一个类的每个单个实例(例如 16 pawn)写一个检查,我可以使它工作,如下所示:
[通知 Pawn 是我的类(class)名称 ]
mouse_x, mouse_y = pygame.mouse.get_pos()
if pawn1.start_x <= mouse_x <= pawn1.start_x + 86 and pawn1.start_y + 84 >= mouse_y >= pawn1.start_y:
print('Pawn 1 was clicked')
这很乏味,我想遍历所有现有 pawn 的列表;
pawn_list = [pawn1, pawn2, pawn3, pawn4, pawn5, pawn6, pawn7, pawn8, pawn9, pawn10, pawn11, pawn12, pawn12, pawn14, pawn15, pawn16]
我的问题是我该怎么做?
mouse_x, mouse_y = pygame.mouse.get_pos()
for Pawn in pawn_list:
if pawn_list[Pawn].start_x <= pawn_list[Pawn].start_x + 86 and pawn_list[Pawn].start_y + 84 >= mouse_y >= pawn_list[Pawn].start_y:
print('The mouse is over the pawn no:' + str(Pawn))
但后来我收到以下错误:
TypeError: list indices must be integers or slices, not Pawn
使用不同的变量名也没有帮助我:
for _ in range(len(pawn_list)):
if pawn_list[_].start_x <= pawn_list[_].start_x + 86 and pawn_list[_].start_y + 84 >= mouse_y >= pawn_list[_].start_y:
print('The mouse is over the pawn no:' + str(_))
感谢所有帮助,谢谢!!!
最佳答案
您已经在遍历列表,那么为什么要再次从列表中获取 Pawn 索引?这可能是不正确的。
正确的说法应该是:
for objPawn in pawn_list:
if objPawn.start_x <= objPawn.start_x + 86 and objPawn.start_y + 84 >= mouse_y >= objPawn.start_y:
print('The mouse is over the pawn no:' + str(Pawn))
关于python - 遍历自定义类中的对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63860412/
我是一名优秀的程序员,十分优秀!