Пример игры на паскале

Новый блог по адресу Блог об ИТ и программировании на русском. Если вы хотите, чтобы я обновил, какие-либо статьи, пожалуйста напишите мне на email.

Игра Змейка – текстовая реализация на языке Pascal

Дальше текст программы

Комментарии к этой программе, такие же, как и к предыдущей.

Конечно интереснее, если сделать графическое отображение, например через модуль graph, но текстовое исполнение, добавляет немного романтики времени MS-DOS.

Эта статья написана в Вторник, Январь 19th, 2010 at 18:54 в разделе Задачи программирования. Вы можете подписаться на обновления комментариев к статье — RSS 2.0. Вы можете оставить комментарий, или послать пинг со своего сайта.

12 комментария

хм, а я круче написал! с зашибенным интерфейсом!

Привет, давай свяжемся с тобой во Вконтакте?
https://m.vk.com/id445385155

kak zapustit i kakaimi klaviwami igrat’.

Free Pascal выдает ошибку на строке

пардон, не туда запостил, сорри )))))

Здравствуйте.
У меня возник вопрос: что означают e.x, e.y, snakebody[i].x, snakebody[i].y?

как играется это игра? вообще не играется, запускаю но ваша змейка не двигается

В самом конце программы в срочке” Delay(30000);” уменьши значение хотябы до 100, чем меньше сделаешь тем быстрее она будет двигаться. И ещё при запуске проверь что стоит английская раскладка, на русской не работает. Управление на (W,A,S,D).

Игра класс )) , но как управлять змейкой я все перепробовал!
Подскажите пожалуйста.

  • Как написать игру на Паскале
  • Как создать онлайн игру
  • Сколько существует систем программирования

Начните работу над программой с заголовка и указания перечня используемых подключаемых модулей:

program reshiprimer;
uses crt;

Укажите компилятору, какие в состав программы будут входить переменные:

Читайте также  Прилегающая территория проверочное слово

Здесь a и b — слагаемые, c — сумма, d — ответ на вопрос о том, желает ли пользователь играть дальше.

Обозначьте начало программы и бесконечного цикла, а также инициализируйте генератор случайных чисел:

begin
randomize;
while 0=0 do
begin

Запрограммируйте генерацию двух случайных чисел в диапазоне от 0 до 1000:

Покажите пользователю пример, который он должен решить, а затем запросите результат:

Сообщите пользователю, правильно ли он решил пример:

if a+b=c then writeln(‘Правильно!’) else writeln(‘Неправильно!);

Спросите у пользователя, желает ли он играть еще:

writeln(‘Будем играть дальше?’);
readln(d);

При отрицательном ответе завершите работу программы:

if upcase(d)’Y’ then halt(0);

Завершите сначала цикл, а затем и саму программу:

Обратите внимание на точку после второго оператора end.

procedure setting;
begin
SetFontColor(clBlue);
SetFontSize(32);
SetFontStyle(fsItalic);
SetBrushColor(ClWhite);
TextOut(WindowWidth-180,260,’Snake’);
SetFontColor(clBlack);
SetFontSize(10);
//SetPenColor(clBlack);
Line(WindowWidth-195,0,WindowWidth-195,WindowHeight);
TextOut(WindowW >TextOut(WindowWidth-180,40,’Клавиши управления: ‘);
TextOut(WindowWidth-180,60,’w,s,a,d’);
TextOut(WindowWidth-180,80,’p-пауза’);
end;

begin
metka2:
n:=3;
hidecursor;
SetWindowCaption(‘Snake’);
for i:=n downto 1 do
x[i]:=60+(n-i)*10;
for i:=1 to n do
y[i]:=110;
r:=5;
randomize;
x0:=(Random(WindowWidth-210) div 10)*10+10;
y0:=(Random(WindowHeight-10) div 10)*10+10;
dx:=10;
dy:=0;
SetBrushColor(clGreen);
for i:=1 to n do
Circle(x[i],y[i],r);
SetBrushColor(clYellow);
Circle(x0,y0,r);
metka:
repeat
sleep(150);
for i:=n downto 2 do
begin
x[i]:=x[i-1];
y[i]:=y[i-1];
end;
x[1]:=x[1]+dx;
y[1]:=y[1]+dy;
ClearWindow;
setting;
TextOut(WindowWidth-160,20,IntToStr(n-3));
SetBrushColor(clYellow);
Circle(x[1],y[1],r);
SetBrushColor(clGreen);
for i:=2 to n do
Circle(x[i],y[i],r);
SetBrushColor(clYellow);
Circle(x0,y0,r);
if (x[1]=x0)and(y[1]=y0) then
begin
n:=n+1;
x0:=(Random(WindowWidth-210) div 10)*10+10;
y0:=(Random(WindowHeight-10) div 10)*10+10;
end;
for i:=2 to n do
if (x[i]=x0)and(y[i]=y0) then
begin
x0:=(Random(WindowWidth-210) div 10)*10+10;
y0:=(Random(WindowHeight-10) div 10)*10+10;
end;
b:=false;
for i:=2 to n do
if (x[1]=x[i])and(y[1]=y[i]) then b:=true;
until (keypressed)or(x[1] WindowWidth-210)
or(y[1] WindowHeight-10)or(b);
SetBrushColor(clWhite);
if (n>=33) then
begin
ClearWindow;
TextOut(300,150,’Победа! ‘);
end;
if (x[1] WindowWidth-210)
or(y[1] WindowHeight-10)or(b) then
begin
TextOut(300,150,’Поражение’);
TextOut(280,170,’n-начать заново’);
ch:=readkey;
while (ch<>’n’)and(ch<>’т’) do ch:=readkey;
goto metka2;
end
else
ch:=readkey;
if ch = #0 then ch := ReadKey;
case ch of
‘s’,’ы’,#80: begin dx:=0; dy:=10; end;
‘w’,’ц’,#72: begin dx:=0; dy:=-10; end;
‘d’,’в’,#75: begin dx:=10; dy:=0; end;
‘a’,’ф’,#77: begin dx:=-10; dy:=0; end;
‘p’,’з’: begin
TextOut(300,150,’Pause’);
p:=true;
while (p) do
begin
cp:=readkey;
if (cp=’p’)or(cp=’з’) then p:=false;
end;
end;
end;
if (n Остальные ответы

Читайте также  Программа для записи игр на компьютер

procedure KeyDown(Key: integer); //процедура обработки нажтия клавиши
begin
case Key of
VK_Up: if pr>10 then pr:=pr-10; //если вверх, и если ракетка не достигла края экрана, сместить координаты ракетки на 10 вверх
VK_Down: if pr 490) then ky:=ky*(-1); //если достиг стенки верхней или нижней — поменять коэффициент смещения на противоположный
if px>590 then //если достиг правой (игрока) стенки, проверяем
if (py>pr-20) and (py

begin //иначе
showmessage(‘Вы упустили мячик!’); //выводим сообщение
inc(ku); //увеличиваем счетчик упущенных мячей
px:=15; //возвращаем мяч в исходную позицию у противоположной стенки
py:=250;
end;
px:=px+kx; //смещаем координаты на коэффициенты смещения
py:=py+ky;
end;

Ссылка на основную публикацию
Adblock
detector