def updateMovement(self): for obj in self.objects: obj = self.objects[obj] if obj.TYPE=="MovingObject": obj.setSpeed(maths.getReducedSpeedByPercent(obj.FRICTION, obj.getSpeed())) vec = maths.polarToCartesian(obj.getAngle(), obj.getSpeed()) obj.setVector(vec) #print vec, obj.getAngle(), obj.getSpeed(), obj.getPosition() obj.setPosition((obj.getPosition()[0]+vec[0], obj.getPosition()[1]+vec[1]))
def handleCollide(self, object_, objectsHit): for obj in objectsHit: if not objectsHit[obj] in object_.handledCollisions: obj = objectsHit[obj] if object_.getType()=="MovingObject" and obj.getType()=="StationaryObject": c = self.getCollisionDirection(object_, obj) if c[0] or c[1]: object_.setAngle(maths.getAngleOfReflection(object_.getAngle(), 0)) pos = object_.getPosition() vec = maths.polarToCartesian((180+object_.getAngle())%360, 3) pos = pos[0]-vec[0], pos[1]-vec[1] object_.setPosition(pos) elif c[2] or c[3]: object_.setAngle(maths.getAngleOfReflection(object_.getAngle(), 90)) pos = object_.getPosition() vec = maths.polarToCartesian((180-object_.getAngle())%360, 3) pos = pos[0]-vec[0], pos[1]-vec[1] object_.setPosition(pos) object_.setSpeed(maths.getReducedSpeedByPercent(object_.BOUNCYNESS, object_.getSpeed())) object_.onCollide(obj) elif object_.getType()=="StationaryObject" and obj.getType()=="StationaryObject": object_.onCollide(obj) elif object_.getType()=="MovingObject" and obj.getType()=="MovingObject": object_.moveBack(object_.getSpeed()*2) print object_.getName(), obj.getName() vec = maths.getFinalPolarVectorFromVector(object_.MASS, object_.getVector(), obj.MASS, obj.getVector()) #vec = maths.getFinalPolarVectorFromVector(obj.MASS, obj.getVector(), object_.MASS, object_.getVector()) if object_.getName()!="Ball": obj.setSpeed(vec[0][1]) obj.setAngle(vec[0][0]) obj.addHandledCollision(object_) object_.setSpeed(vec[1][1]) object_.setAngle(vec[1][0]) else: obj.setSpeed(vec[1][1]) obj.setAngle(vec[1][0]) obj.addHandledCollision(object_) object_.setSpeed(vec[0][1]) object_.setAngle(vec[0][0]) elif object_.getType()=="StationaryObject" and obj.getType()=="MovingObject": object_.onCollide(obj) elif object_.getType()=="ContainerObject" and obj.getType()=="MovingObject": object_.onCollide(obj) elif object_.getType()=="MovingObject" and obj.getType()=="ContainerObject": object_.onCollide(obj) else: self.logger.error("Invalid Object(s): "+str(object_.getType())+", "+str(obj.getType()))