我正在尝试确定此函数fireshell()
的位置参数(我认为这就是所谓的)。
我尝试过self
和变量elapsedTime
,pos.x
和pos.y
的组合而没有成功。我试图确定调用和定义中传递的参数。
我是编程新手,请原谅我缺乏知识。
if event.type == pg.KEYUP:
if event.key == pg.K_0:
self.endTime = time.time()
self.end = timer()
self.E = pg.time.get_ticks()
self.elapsedTime = self.endTime - self.startTime
print("ENDING", self.endTime, self.startTime)
print("elapsed time", (self.endTime - self.startTime))
print (self.start, self.end, "difference", (self.end - self.start))
print ( "E", self.E, "S", self.S)
print("elapsed time", self.elapsedTime)
self.player.fireshell( ?, ?, ?, ?)
def fireshell(?, ?, ?, ?):
fire = True
print("fire", self.pos.x, self.pos.y)
fireX = int(self.pos.x)
fireY = int(self.pos.y) - 30
while fire:
for event in pg.event.get():
if event.type == pg.QUIT:
pg.quit()
quit()
pg.draw.circle(self.screen, RED, (fireX, fireY), 5)
fireX -= (12 - elapsedTime)*2
print(elapsedTime)
print(fireX)
pg.display.update()
self.clock.tick(20)
答案 0 :(得分:0)
这取决于您实际尝试传递给函数的内容。忽略变量一秒钟,你想用这个功能完成什么?看起来你正试图发射射弹。现在我认为self.pos.x和self.pos.y是你所拥有的射击射弹的位置(可能是一个坦克?或任何射击射弹的东西)。所以我认为这将成为射弹路径的起点。行
fireX = int(self.pos.x)
fireY = int(self.pos.y) - 30
将设置射弹的起点(与坦克x相同的x,以及坦克上方30个像素,这听起来像一个非常标准的起点)。然后,在那之后你有了你的火圈,它只是沿着它的路径移动射弹。我在循环中看到的问题是该循环是无限的。您将fire变量初始化为true
fire = True
但你从来没有做过那么假,所以"同时火"循环将无限循环。您需要为循环结束的位置创建一个条件,这取决于您。你只需要确定你想要坦克射弹的路径何时结束,当发生这种情况时,将火力设置为假,循环将结束,继续你的基本游戏功能。
关于你需要传递什么。从我所看到的看起来你看起来你正在使用一个对象存储你的数据(来自你如何使用self.pos.x),所以我要做的就是放这个类里面的fireshell函数,然后你不需要向函数传递任何东西,你可以在函数本身内使用self.pos.x,self.pox.y和self.elapsed时间,并且因为函数将是与这些变量相同的类的成员,不应存在访问冲突或错误。