def on_touch_down(self, touch): for ball in [self.ball1, self.ball2]: touch_vector = Vec(touch.pos) - Vec(ball.center) touch_vector_mag = touch_vector.length() unit_touch_vector = touch_vector / touch_vector_mag ball.vel = 5.0 * unit_touch_vector print touch_vector
def moverIncremental(self, dt): #verifica, com a cesta, se devo parar o movimento if (self.cesta.verificaBola(self) == False): return False #calcula nova posical de x e y self._x = self.x0 + self.v0 * cos(self.theta) * self.t self._y = self.y0 + self.v0 * sin( self.theta) * self.t - 9.81 * self.t * self.t / 2 #atribui a nova posição para a bola self.pos = Vec(self._x, self._y) #incrementa o tempo self.t = self.t + dt
def update(self, dt): for ball in [self.ball1, self.ball2]: if ball.collide_widget(self.wall_left): ball.vel[0] = abs(ball.vel[0]) elif ball.collide_widget(self.wall_right): ball.vel[0] = -abs(ball.vel[0]) if ball.collide_widget(self.wall_top): ball.vel[1] = -abs(ball.vel[1]) elif ball.collide_widget(self.wall_down): ball.vel[1] = abs(ball.vel[1]) if self.ball1.collide_widget(self.ball2): col_vector = Vec(self.ball1.pos) - Vec(self.ball2.pos) col_vector_mag = col_vector.length() self.ball1.vel = 5.0 / col_vector_mag * col_vector self.ball2.vel = -5.0 / col_vector_mag * col_vector self.ball1.pos = Vec(self.ball1.vel) + Vec(self.ball1.pos) self.ball2.pos = Vec(self.ball2.vel) + Vec(self.ball2.pos)
def update2(self,dt): self.ball2.pos = Vec(self.vel2) + self.ball2.pos if self.ball2.x<0: self.vel2[0] *= -1 if self.ball2.x>self.width-50: self.vel2[0] *= -1 if self.ball2.y<0: self.vel2[1] *= -1 if self.ball2.y>self.height-50: self.vel2[1] *= -1
def update1(self,dt): self.ball1.pos = Vec(self.vel1) + self.ball1.pos if self.ball1.x<0: self.vel1[0] *= -1 if self.ball1.x>self.width-50: self.vel1[0] *= -1 if self.ball1.y<0: self.vel1[1] *= -1 if self.ball1.y>self.height-50: self.vel1[1] *= -1