我有这堂课:
class Demo():
############################### Drawing functions
SCREEN_OFFSETX, SCREEN_OFFSETY = SCREEN_WIDTH/16, SCREEN_HEIGHT
def fix_vertices(vertices):
return [(int(SCREEN_OFFSETX + v[0]), int(SCREEN_OFFSETY - v[1])) for v in vertices]
def draw_polygon(polygon, screen, body, fixture):
transform = body.transform
vertices = fix_vertices([transform * v * PPM for v in polygon.vertices])
pygame.draw.polygon(
screen, [c / 2.0 for c in colors[body.type]], vertices, 0)
pygame.draw.polygon(screen, colors[body.type], vertices, 1)
polygonShape.draw = draw_polygon
''''
Do other stuff...
''''
并且我使用以下代码行运行它:
Car = Demo()
if __name__ == "__main__":
Car
print("It Works")
但是当我尝试运行它时,我得到一个未定义fix_vertices_的错误。如何解决此问题?
非常感谢
P.S。还有另一个子问题...这是使用
调用此类的正确方法吗if __name__ == "__main__"
语法或例如有更好的方法
if __name__ == "__main__":
main(Demo)
非常感谢
我认为您应按以下方式声明您的方法
class Demo():
############################### Drawing functions
SCREEN_OFFSETX, SCREEN_OFFSETY = SCREEN_WIDTH/16, SCREEN_HEIGHT
def fix_vertices(self, vertices):
return [(int(SCREEN_OFFSETX + v[0]), int(SCREEN_OFFSETY - v[1])) for v in vertices]
def draw_polygon(self, polygon, screen, body, fixture):
transform = body.transform
vertices = fix_vertices([transform * v * PPM for v in polygon.vertices])
pygame.draw.polygon(
screen, [c / 2.0 for c in colors[body.type]], vertices, 0)
pygame.draw.polygon(screen, colors[body.type], vertices, 1)
polygonShape.draw = draw_polygon
''''
Do other stuff...
```