x does not change, nor does dx or dy (in statement below). Create a simple example that you can test with first. The problem here is not that you can't move the object, the problem is that you have 100+ lines of code that have not been tested.
self.cara[x].move(dx, dy)