Другие языки программирования и технологии

delphi 7, snake

Скажите что я делаю не так.
Я не умею пользоваться классами, но при этом понимаю их код.
Скопировал исходники с сайта __programmersclub.ru/gamedev-РЅР°-delphi-Дел аем-змейку/

Но у меня сама змейка не отображается.
Напишите пожалуйста что нужно прописать в счетчике, чтобы работал полностью класс.
Проверял с помощью F7 - и понял что у меня отдельные процедуры из одного класса выполняются.
Затем я сделал записи в счетчике:
TSnake.Create('snake.bmp',v2(G_X(30),G_Y(30)),6).SetSize(6);
TSnake.Create('snake.bmp',v2(G_X(30),G_Y(30)),6).Drive;
TSnake.Create('snake.bmp',v2(G_X(30),G_Y(30)),6).Update;
TSnake.Create('snake.bmp',v2(G_X(30),G_Y(30)),6).Draw;
TSnake.Create('snake.bmp',v2(G_X(30),G_Y(30)),6).Free;
но эффекта нет.
Я понимаю что я что-то проглядел, но и не могу понять что.. .

Я пока только на уровне простого передвижения змейки
Игорь Швец
Игорь Швец
536
Процедура TSnake.Draw:

Проверь, какие координаты передаются в scr_Buffer.Canvas.draw:

scr_Buffer.Canvas.draw(G_X(BodyPos[ i ].x),G_Y(BodyPos[ i ].y),sprite);

Т. е. что возвращают G_X и G_Y.

Меня терзают смутные сомнения, координаты которые передаются в draw намного больше, чем это нужно:

> Затем я сделал записи в счетчике
непонятна эта фраза, ну да ладно:

> TSnake.Create('snake.bmp',v2(G_X(30),G_Y(30)),6).SetSize(6);
> TSnake.Create('snake.bmp',v2(G_X(30),G_Y(30)),6).Drive;
> TSnake.Create('snake.bmp',v2(G_X(30),G_Y(30)),6).Update;
> TSnake.Create('snake.bmp',v2(G_X(30),G_Y(30)),6).Draw;
> TSnake.Create('snake.bmp',v2(G_X(30),G_Y(30)),6).Free;

Этот код -- вообще какой-то лютый пипец, как впрочем и остальной. К примеру в процедуре Main_Draw, которая дергается таймером, при каждом вызове создается и загружается новое изображение из файла, хотя в принципе это достаточно сделать один раз, а потом его просто использовать.

Но вернемся к Draw:

TSnake.Create('snake.bmp',v2(G_X(30),G_Y(30)),6).Draw;

CAGE_SIZE = 100;

Function G_X(x:integer):integer;
begin
result:= x *CAGE_SIZE
end;

G_X(30) вернет 30 * 100 = 3000 -- собственно о чем я и писал выше, координата за пределами окна
Шамхан Гильхаев
Шамхан Гильхаев
67 107
Лучший ответ
Все очень просто, когда то это был говнокод на Turbo Pascal. Позже другой говнокодер сделал попытку (очень не удачную) адаптировать эту срань в Delphi (чего делать категорически не рекомендуется) . Возможно с большим трудом можно заставить это говно делать вид что оно работает, но объяснить как оно это делает ты не сможешь

Классов реально в этом дерьме нет, потому как их в TP ни когда не было

Если нужна прога с нормальным кодом пиши на почту