Мне скинули прогу на Турбо паскаль. При запуске должно выходить меню для выбора, а затем выходить фигурка в виде смайлика. После запуска run у меня выходит поле с выбором и просто вылетает програма.

вот программы

kr.pas

program Solution;

uses

Crt, Graph, Smile;

var

GrDriver, GrMode: Integer;

S: TSmile;

C: Integer;

begin

ClrScr;

WriteLn('Клавиши управления:');

WriteLn;

WriteLn('Клавиши со стрелками — перемещение смайлика');

WriteLn('R— самоперемещение смайлика под действием генератора случайных чисел');

WriteLn('Esc — выход');

WriteLn;

WriteLn('Для продолжения нажмите любую клавишу...');

ReadKey;

GrDriver := Detect;

InitGraph(GrDriver, GrMode, '');

if GraphResult <> GrOK then Halt(1);

S.Paint(0, 0);

C := S.GetCommand;

while C <> Close do

begin

if C = Rnd then S.RndMove;

S.MoveObject©;

C := S.GetCommand;

end;

CloseGraph;

end.

Smyle.pas

unit Smile;

interface

uses

Crt, Graph;

const

dx: Integer = 10;

dy: Integer = 10;

Close = 1;

Rnd = 2;

Up = 3;

Right = 4;

Down = 5;

Left = 6;

CurX: Integer = 300;

CurY: Integer = 300;

type

TFigure = object

end;

TDraw = object (TFigure)

procedure Paint(const dx, dy: Integer);

procedure Repaint(const dx, dy: Integer);

end;

TMove = object (TDraw)

function GetCommand: Byte;

procedure MoveObject(const C: Byte);

end;

TSmile = object (TMove)

procedure RndMove;

end;

implementation

{ Рисует смайлик }

procedure TDraw.Paint(const dx, dy: Integer);

begin

SetBkColor(Black);

SetColor(Yellow);

Circle(CurX + dx, CurY + dy, 100);

SetFillStyle(1, LightGray);

FillEllipse(CurX — 55 + dx, CurY — 20 + dy, 10, 10);

FillEllipse(CurX + 55 + dx, CurY — 20 + dy, 10, 10);

SetFillStyle(1, LightRed);

PieSlice(CurX + dx, CurY + 40 + dy, 180, 360, 40);

Inc(CurX, dx);

Inc(CurY, dy);

end;

{ Перерисовка }

procedure TDraw.Repaint(const dx, dy: Integer);

begin

ClearDevice;

Paint(dx, dy);

end;

{ Получение команды от пользователя }

function TMove.GetCommand:byte;

var

c: Char;

t: Byte;

begin

t := 0;

c := ReadKey;

case c of

#27: t := 1;

'r', 'R': t := 2;

#72: t := 3;

#75: t := 4;

#80: t := 5;

#77: t := 6;

end;

GetCommand := t;

end;

{ Произвольное движение }

procedure TSmile.RndMove;

var

t: Integer;

begin

Randomize;

repeat

while (CurX + dx > GetMaxX — 100) or (CurX + dx < 100) or

(CurY + dy > GetMaxY — 100) or (CurY + dy < 100) do

begin

case Random(4) of

0: dx := -10;

1: dx := 10;

2: dx := 20;

3: dx := -20;

end;

case Random(4) of

0: dy := -10;

1: dy := 10;

2: dy := 20;

3: dy := -20;

end;

end;

Repaint(dx, dy);

Delay(500);

until KeyPressed;

dx := 10;

dy:= 10;

end;

{ Изменение положения смайлика }

procedure TMove.MoveObject(const C: Byte);

begin

case C of

Up: if CurY — dy > 100 then Repaint(0, -dy);

Right: if CurX — dx > 100 then Repaint(-dx, 0);

Down: if CurY + dy < GetMaxY — 100 then Repaint(0, dy);

Left: if CurX + dx < GetMaxX — 100 then Repaint(dx, 0);

end;

end;

end.

Почему может не запускаться программа. У того кто ее скинул она рабочая.
09.05.16
0 ответов
Ответов пока нет

Андрей Андреевич

от 70 p.
Сейчас на сайте
Андрей Андреевич
Эксперт месяца
Читать ответы

Елена Васильевна

от 50 p.
Сейчас на сайте
Читать ответы

Volodya

от 50 p.
Сейчас на сайте
Читать ответы
Посмотреть всех экспертов из раздела Учеба и наука