Я не знаю ваш фреймворк, но, чтобы плита не "застряла", вам нужно обновить ее местоположение при перемещении мыши.
Здесь вы инициализируете его:
theslab = Slab (image = slabimage,
x = games.mouse.x,
y = games.mouse.y)
Тогда вот вы добавите его в игру:
games.screen.add(theslab)
Предположительно, игра будет вызывать эту функцию всякий раз, когда мышь двигается:
def mouse_moves (self):
self.x = games.mouse.x
self.y = games.mouse.y
self.iCollide()
Но этого либо не происходит, либо экран не обновляется.
Итак, вы должны узнать, выполнив следующее:
def mouse_moves (self):
print "mouse_moves: ", str(games.mouse.x), str(games.mouse.y)
self.x = games.mouse.x
self.y = games.mouse.y
self.iCollide()
Если вы видите, что вывод оператора print происходит при перемещении мыши, возможно, вы не обновляете экран, вам нужно проверить документацию по структуре. Но я не думаю, что это так. Я думаю, что вы не обновляете игру, когда мышь движется. Я бы предположил, что в фреймворке есть какое-то событие типа onMouseMove, к которому нужно подключиться, чтобы позволить вам обновлять состояние игры (то есть вызывать mouse_moves ()), когда происходит движение мыши. Затем при следующем обновлении экрана вы должны проверить наличие изменений (сделать объекты недействительными, пометить их как грязные), а если они грязные, обновить их часть экрана, а затем снова пометить их как чистые.