运行此代码时:
for p in self.particles :
pos1 = p.pos
pos2 = p.pos[0]+2*p.vel[0], p.pos[1]+2*p.vel[1]
pygame.draw.line(self.screen, p.color, pos1 , pos2 , 2)
我一直收到这个错误:
TypeError:无效的结束位置参数`
所以我使用print p.pos
语句来查看p.pos是什么,它神奇地起作用!
但唯一的问题是将其打印出来会让游戏以每秒10帧的速度运行......
那么如何修复错误呢?
答案 0 :(得分:1)
docs ref: pygame.draw.line(Surface, color, start_pos, end_pos, width=1)
import pygame
# This makes event handling, rect, and colors simpler.
# Now you can refer to `Sprite` or `Rect()` vs `pygame.sprite.Sprite` or `pygame.Rect()`
from pygame.locals import *
from pygame import Color, Rect, Surface
def render():
p1 = (100,100)
p2 = (p1[0] + 2*v[0], p2[1] + 2*v[1] )
pygame.draw.line(screen, Color("white"), p1, p2, width=1)
(无论是numpy还是euclid)。 代码变为:其中pos2,pos1,velocity都是向量。
pos2 = pos1 + 2* velocity
答案 1 :(得分:1)
如果您的意思是实际上正在调用print()
函数或语句,那么您应将其删除以加快程序速度。
否则你只是给你的计算机太多工作,并且可能想要优化你的代码。
例如,我看到你在说for p in self.particles
,
如果您在屏幕上绘制了大量粒子,请尝试减少数量 - 这不仅仅是优化,而是一种选择。
确保您的代码在有效的位置有效 即。在那里进行大量计算,或多次调用函数。
您可能想说:
drawline = pygame.draw.line
并改为拨打drawline()
,因为这会节省查询时间