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

Скиньте пожалуйста игру змейка (как в тетрисе) , написанную на языке Pascal ABC?

Вот кому-то правил, просто так отдаю.
Что-то другое делать просто так даже не просите.

uses
GraphABC, Events, Timers;

type
KeyPressed = (Up, Down, Left, Right, None);

const
r = 10; {радиус круга}

var
x, y: integer; {текущие координаты рисования}
apX, apY: integer; {координаты яблока}
api: integer; {длина змейки}
i, ii, jj, q, huX, huY, teloid: integer;
{массивы координат поля}
xx, yy: array[0..25] of integer;
{массивы координат змейки}
tX, tY: array [0..300] of integer;

onKey: KeyPressed;

{Вычислим для каждого поля координаты рисования}
procedure Field;
var
fi: Integer;
begin
ii := r;
for fi := 0 to 25 do
begin
xx[fi] := ii;
yy[fi] := ii;
ii := ii + r + r; {с шагом 1 диаметра}
end;
end;

{Процедура рисования красного круга с координатами x,y и радиусом r
Рисуем голову змейки}
procedure Draw;
begin
SetBrushColor(clRed);
SetPenColor(clRed);
circle(x, y, r);
end;

{Процедура скрытия конца хвоста}
procedure HideEndHvost;
begin
SetPenColor(clWhite);
SetBrushColor(clWhite);
Circle(Tx[api], Ty[api], r);
end;

{Процедура рисования начала хвоста}
procedure DrawBegHvost;
begin
{Проверим, что хвост есть и тогда рисуем}
if api > 1 then
begin
SetPenColor(clYellow);
SetBrushColor(clYellow);
Circle(Tx[1], Ty[1], r);
end;
end;

{Процедура сдвига координат хвоста за ход}
procedure hvost;
var
i: Integer;
begin
for i := api downto 1 do
begin
tX[i] := tX[i - 1];
tY[i] := tY[i - 1];
end;
tX[0] := x;
tY[0] := y;
end;

{Рисование яблока по случайным координатам apX, apY}
procedure Apple;
var
fl: Boolean;
i: Integer;
begin
SetBrushColor(clGreen);
SetPenColor(clGreen);

fl := false; {флаг, что ячейка занята}
{поиск пока не найдем свободную ячейку}
while not fl do
begin
{случайно выбираем ячейку}
apX := xx[Random(26)];
apY := yy[Random(26)];
fl := true; {флаг, что ячейка свободна}
i := 0;
while (i < api) and fl do {проверять на всю длину змейки и пока не нашли, что занята}
begin
if (tX[i] = apX) and (tY[i] = apY) then fl := false; {ячейка уже занята}
Inc(i); {i:=i+1}
end;
end;

Circle(apX, apY, r);
end;

{Процедура нажатии клавиши изменить статус onKey}
procedure KeyDown(key: integer);
begin
case key of
vk_Left: onKey := Left;
vk_Right: onKey := Right;
vk_Up: onKey := Up;
vk_Down: onKey := Down;
end;
end;

{Рисование поля, обработчик таймера}
procedure DrawField;
var
oldx, oldy: Integer; {старые координаты x и y}
begin

oldx := x;
oldy := y;

{Вычисляем новые координаты}
if onKey = Up then
y := y - 2 * r;
if OnKey = Down then
y := y + 2 * r;
if OnKey = Right then
x := x + 2 * r;
if OnKey = Left then
x := x - 2 * r;

{Проверим, что координаты не выходят за допустимые}
if x < r then x := WindowWidth - r;
if y < r then y := WindowHeight - r;
if x > WindowWidth - r then x := r;
if y > WindowHeight - r then y := r;

{Если координаты изменились, значит ход был}
if (oldx <> x) or (oldy <> y) then
begin
Draw; {рисуем голову змейки}

{Проверим на совпадение с яблоком}
if (apX = x) and (apY = y) then
begin

Inc(api); {+1 к длине змейки}
Hvost; {Процедура сдвига координат хвоста за ход}
DrawBegHvost; {Процедура рисования начала хвоста}
Apple; {рисуем яблоко}
end
else
begin
Hvost; {Процедура сдвига координат хвоста за ход}
DrawBegHvost; {Процедура рисования начала хвоста}
HideEndHvost; {Процедура скрытия конца хвоста}
end;

end;

end;

begin
SetWindowSize(26 * 2 * r, 26 * 2 * r); {размер поля рисования 26 клеток размером в диаметр}
onKeyDown := KeyDown; {обработчик нажатия клавиши}
OnKey := None;

Field; {Вычиcлим для каждого поля координаты рисования}

api := 1; {первоначальная длина змейки}

{первоначальные координаты змейки случайно}
x := xx[Random(26)];
y := yy[Random(26)];
tX[0] := x; tY[0] := y;

{рисуем голову змейки}
Draw;

{рисуем яблоко}
Apple;

{Создаем таймер и назначаем обработчик таймера процедуру DrawField}
CreateTimer(200, DrawField);
end.
Сергей Климов
Сергей Климов
81 138
Лучший ответ
Муслим Ахмедилов Program3.pas(189) : Неизвестное имя 'CreateTimer'
че делать?
Шамиль Саидов пишет неизвестноt имя create timer, tp 'njq cnhjxrb njrf jlybnjxrb gjzdkz.ncz
можно бесплатно найти на ПаскальГуру

(вбейте в гугл ПаскальГУРУ)