猿问

需要将元组传递给子类来绘制三角形

我想从一个类中画一个三角形,所以我调用了这个函数


pygame.draw.polygon()

现在,问题是我需要以一种允许我计算三角形中心的方式传递这些点。


我试图以这种方式一个一个地传递元组


self.first_point = (int, int)

self.second_point = (int, int)

self.third_point = (int, int)

这样我就可以访问单个元组值。


然后像这样通过三分


self.position = [self.first_point, self.second_point, self.third_point]

但由于某种原因,它不起作用。


这是我得到的错误


File "C:/Users/oricc/PycharmProjects/designAChessboardChallange/display.py", line 178, in <module>

    white_archer_3 = Archer(white, [(100, 100), (200, 200), (300, 300)])

[(100, 100), (200, 200), (300, 300)]

  File "C:/Users/oricc/PycharmProjects/designAChessboardChallange/display.py", line 132, in __init__

    self.triangle = pygame.draw.polygon(game_window, colour, self.position)

TypeError: points must be number pairs

按对的数量,Pygame 文档给出了一个例子


例如 [(x1, y1), (x2, y2), (x3, y3)]


事实上,当我打印我通过的位置时,你可以从上面的错误中看到


[(100, 100), (200, 200), (300, 300)]

任何人都可以帮助解决这个问题吗?有没有另一种方法来计算中心而不像那样访问 xs 和 ys?


吃鸡游戏
浏览 92回答 2
2回答

长风秋雁

你也可以这样做:self.first_point = (int(0), int(0))asint不是占位符,而是声明一个变量是一个整数str('0')将打印'0'你也可以输入这个zero = 0&nbsp;str(zero) #'0'int(zero) #0&nbsp;而且您不需要放置 rgb 元组,因为您可以将它们存储在这样的变量中black = (0, 0, 0)&nbsp;Display = pygame.display.set_mode((800, 600))Display.fill(black)&nbsp;

开心每一天1111

好的,我设法使它工作。你们都是对的,我现在应该知道我不能通过占位符,所以我想出了解决我的问题的方法如下:class Archer(Unit):&nbsp; &nbsp; def __init__(self, colour, first_point, second_point, third_point):&nbsp; &nbsp; &nbsp; &nbsp; self.first_point = first_point&nbsp; &nbsp; &nbsp; &nbsp; self.second_point = second_point&nbsp; &nbsp; &nbsp; &nbsp; self.third_point = third_point&nbsp; &nbsp; &nbsp; &nbsp; position = [self.first_point, self.second_point, self.third_point]&nbsp; &nbsp; &nbsp; &nbsp; super().__init__(colour, position)&nbsp; &nbsp; &nbsp; &nbsp; print(self.position)&nbsp; &nbsp; &nbsp; &nbsp; self.triangle = pygame.draw.polygon(game_window, colour, self.position)&nbsp; &nbsp; &nbsp; &nbsp; self.triangle_outline = pygame.draw.polygon(game_window, gold, self.position, 5)&nbsp; &nbsp; &nbsp; &nbsp; self.triangle_inline = pygame.draw.polygon(game_window, gold, self.position, 5)基本上我必须在超级函数之前声明三点自变量以及位置,以便我可以将它们作为“位置”传递给父类初始化程序。这个真的很有用!!
随时随地看视频慕课网APP

相关分类

Python
我要回答