uses GraphABC; var s : array [,] of integer; i,x,y,vspeed : integer; game_end : boolean; //Обработка нажатий клавиш procedure KeyPress(key: char); begin if (key='d') and (s[(x div 8)+1,(y div 8)]=0) then //Если нажата клавиша D… x:=x+8; //... А также есть свободное место, то передвигаемся на… //… клеточку вперед (значение x увеличивается на 8) if (key='a') and (s[(x div 8)-1,(y div 8)]=0) then //см. комментарий выше x:=x-8; if (key='w') and (vspeed=0) and (s[(x div 8),(y div 8)+1]=1) then //Если есть «занятая клеточка»… vspeed:=-16; //… под ногами, то совершаем прыжок. end; procedure KeyDown(key: integer); begin if (key=vk_enter) then game_end:=true; //При нажатии ENTER… //значение переменной game_end равно true end; //Гравитация procedure Gravity(); begin if vspeed=0 then begin //Если скорость прыжка равна нулю… if s[(x div 8),(y div 8)+1]=0 then y+=8; //… перемещаемся на «клеточку» вниз (падаем) end; if s[(x div 8),(y div 8)+vspeed]=0 then y+=vspeed; //Если сверху есть свободная клеточка, то… //… перемещаемся на vspeed вверх. if vspeed<>0 then //Если скорость прыжка не равна нулю (в нашем случае: меньше нуля)… vspeed+=2; //… то помаленьку ее сбавляем. end; procedure Draw(); begin Redraw; LockDrawing; //Рисуем белый прямоугольник… setbrushcolor(clwhite); //… размером 640 на 480 fillrectangle(0,0,640,480); setbrushcolor(clblack);//Рисуем черные стены… fillrectangle(0,192,640,224);//… по координатам… //… 0 – 640 по X; 192 – 224 по Y //(ВНИМАНИЕ! Данные манипуляции не делают стены осязаемыми, а всего лишь… //… создают их графический образ. setbrushcolor(clred); //Рисуем игрока по координатам… fillrectangle(x,y,x+8,y+8);//… x и y end; Begin //начало программы //Указания значений для переменных game_end:=false; x:=0; //Стартовая позиция игрока по X y:=0; //Стартовая позиция игрока по Y //Создание массива s := new integer[200,200]; //Создание платформы, нарисованной в процедуре Draw for i:=0 to 79 do s[i,24] := 1; while game_end=false do begin //Создаем цикл… //… который прервется, если game_end = false //Рисование экрана Draw(); //Гравитация для игрока Gravity(); OnKeyPress:=KeyPress; //Обработка нажатий… OnKeyDown:=KeyDown; //… клавиш sleep(30); //Ждем примерно полсекунды, чтобы игра… //… работала с нормальной скоростью end;//конец цикла. end. //конец программы
Write, Run & Share Pascal code online using OneCompiler’s Pascal online compiler for free. It’s a straightforward, accessible way to learn and experiment with Pascal programming right from your browser. OneCompiler supports modern Pascal syntax and provides a ready-to-use editor for immediate execution.
Pascal is a procedural programming language developed in the 1970s by Niklaus Wirth. It was designed to encourage good programming practices and structured programming. Pascal is widely used in teaching computer science fundamentals and has influenced many modern languages.
The following is a simple Pascal program that prints a greeting:
program HelloWorld;
begin
writeln('Hello, OneCompiler!');
end.
OneCompiler’s Pascal editor supports stdin through the I/O tab. Here’s an example that reads a user's name and prints a greeting:
program GreetUser;
var
name: string;
begin
readln(name);
writeln('Hello, ', name, '!');
end.
var
age: integer;
name: string;
score: real;
flag: boolean;
Type | Description |
---|---|
integer | Whole numbers |
real | Floating-point numbers |
char | Single character |
string | Sequence of characters |
boolean | True or False |
if score >= 50 then
writeln('Pass')
else
writeln('Fail');
for i := 1 to 5 do
writeln(i);
i := 1;
while i <= 5 do
begin
writeln(i);
i := i + 1;
end;
i := 1;
repeat
writeln(i);
i := i + 1;
until i > 5;
procedure SayHello;
begin
writeln('Hello!');
end;
function Add(a, b: integer): integer;
begin
Add := a + b;
end;
This guide provides a quick reference to Pascal programming syntax and features. Start coding in Pascal using OneCompiler’s Pascal online compiler today!