I am trying to correctly throw the ball in the box, especially when processing angles at a certain angle and processing the angular head. I have a problem because my ball goes out of the box all the time. I have this function which says that my ball is out of the box and it processes corners and walls. The code looks like this:
if ((self._x > self._Grid.getWidth()) or (self._x < 0)): print("RandomNode:outside paramaters: x! self._x = %s , self._velx = %s" % (self._x , self._velx)) if ((self._y > self._Grid.getLength()) or (self._y < 0)): print("RandomNode:outside paramaters: y!") if ((self._velx + self._x) > self._Grid.getWidth()): diff = self._Grid.getWidth()-self._x self._velx *= -1 if (diff == 0): self._x -= self._velx else: self._x+= diff tampered = True #print("eqn1: self._x = %s , self._y = %s , self._velx= %s, self._vely= %s" % (self._x, self._y, self._velx, self._vely)) if (self._velx + self._x < 0): diff = self._x self._velx *= -1 if (diff == 0): self._x += self._velx else: self._x-= diff tampered = True #print("eqn2: self._x = %s , self._y = %s , self._velx= %s, self._vely= %s" % (self._x, self._y, self._velx, self._vely)) if ((self._vely + self._y) > self._Grid.getLength()): diff = self._Grid.getLength()-self._y self._vely *= -1 if (diff == 0): self._y -= self._vely if (tampered == True): if ((self._velx * -1 == self._vely) or (self._velx == self._vely)): self._x += self._velx self._y += self._vely #print("eqn31:self._x = %s , self._y = %s , self._velx= %s, self._vely= %s" % (self._x, self._y, self._velx, self._vely)) else: self._x += (self._velx - diff) self._y += self._vely #print("eqn32:self._x = %s , self._y = %s , self._velx= %s, self._vely= %s" % (self._x, self._y, self._velx, self._vely)) else: tampered = True #print("eqn33:self._x = %s , self._y = %s , self._velx= %s, self._vely= %s" % (self._x, self._y, self._velx, self._vely)) else: self._y+= diff if (tampered == True): if ((self._velx * -1 == self._vely) or (self._velx == self._vely)): self._x += self._velx self._y += self._vely #print("eqn31:self._x = %s , self._y = %s , self._velx= %s, self._vely= %s" % (self._x, self._y, self._velx, self._vely)) else: self._x += (self._velx - diff) self._y += self._vely #print("eqn32:self._x = %s , self._y = %s , self._velx= %s, self._vely= %s" % (self._x, self._y, self._velx, self._vely)) else: tampered = True #print("eqn33:self._x = %s , self._y = %s , self._velx= %s, self._vely= %s" % (self._x, self._y, self._velx, self._vely)) if (self._vely + self._y < 0): diff = self._y self._vely *= -1 if (diff == 0): self._y += self._vely if (tampered == True): if ((self._velx * -1 == self._vely) or (self._velx == self._vely)): self._x += self._velx self._y += self._vely #print("eqn41:self._x = %s , self._y = %s , self._velx= %s, self._vely= %s" % (self._x, self._y, self._velx, self._vely)) else: self._x += (self._velx + diff) self._y += self._vely #print("eqn42:self._x = %s , self._y = %s , self._velx= %s, self._vely= %s" % (self._x, self._y, self._velx, self._vely)) else: tampered = True #print("eqn43:self._x = %s , self._y = %s , self._velx= %s, self._vely= %s" % (self._x, self._y, self._velx, self._vely)) else: self._y-= diff if (tampered == True): if ((self._velx * -1 == self._vely) or (self._velx == self._vely)): self._x += self._velx self._y += self._vely #print("eqn41:self._x = %s , self._y = %s , self._velx= %s, self._vely= %s" % (self._x, self._y, self._velx, self._vely)) else: self._x += (self._velx + diff) self._y += self._vely #print("eqn42:self._x = %s , self._y = %s , self._velx= %s, self._vely= %s" % (self._x, self._y, self._velx, self._vely)) else: tampered = True #print("eqn43:self._x = %s , self._y = %s , self._velx= %s, self._vely= %s" % (self._x, self._y, self._velx, self._vely)) return tampered
I do not know why it does not work. x and y are obviously its coordinates. Velx and Vely are the speeds of x and y. Tampered is a boolean that prevents the ball from moving correctly and only moving within the test.
Here is my question. What is wrong with this code? OR .... is there a template written in python somewhere on the net or somewhere else, or the code you used that does what I'm trying to process and do? Please make changes to the code, just let me know. Any links to this have already been resolved. Thanks.