Всетаки, логика работы не совсем понятна, я не внимательно прочитал:
if (Key=GA_RIGHT) then
WHILE (x=(pw-5)) do
repaint;
что делает этот код?
По идее, при нажатии кнопки получается что если до конца экрана 5 пикселей, то перерисовываем экран, иначе не делаем ничего. Как-то бессмыслено. Что всетаки должно получиться в итоге? Кубик должен при нажатии кнопки продвигаться на один пиксель или начинать двигаться до конца экрана?