کد PHP:
{Programm: snake.pas
Function: Snake game
Language: Turbo Pascal 6.0 (turbo Vision)
Computer Magazine
(c) BlackMedia 31 }
{$X+}
program Snake;
uses Objects,Menus,Views,Drivers,App,
Dialogs,USnake;
const
cmSnake = 100;
cmLevel = 101;
type
TMyApp=object(TApplication)
Schlange: PSnakeDlg;
DlgData: Word;
procedure InitMenuBar; virtual;
procedure InitStatusLine; virtual;
procedure HandleEvent(var Event:
TEvent); virtual;
end;
PChangeSpeedDlg=^TChangeSpeedDlg;
TChangeSpeedDlg=object(TDialog)
constructor Init;
end;
var
MyApp:TMyApp;
{--- TMyApp ---}
procedure TMyApp.InitMenuBar;
var R:TRect;
begin
R.Assign(0,0,80,1);
MenuBar:=New(PMenuBar,Init(R,NewMenu(
NewSubMenu('~S~nake', hcNoContext,
NewMenu(
NewItem('~G~ame','F2',kbF2,cmSnake,
hcNoContext,
NewLine(
NewItem('~L~evel','F3',kbF3,cmLevel,
hcNoContext,Nil)))),
NewItem('~E~nd','',kbESC,cmQuit,
hcNoContext,Nil)))));
end;
procedure TMyApp.InitStatusLine;
var R: TRect;
begin
R.Assign(0,24,80,25);
StatusLine:=New(PStatusLine,Init(R,
NewStatusDef(0,0,
NewStatusKey('~F10~ Menu',kbF10,cmMenu,
NewStatusKey('~Alt-X~ End',kbAltX,
cmQuit,
NewStatusKey('~F2~ Game',kbF2,cmSnake,
NewStatusKey('~F3~ Level',kbF3,cmLevel,
nil)))),
nil)));
end;
procedure TMyApp.HandleEvent;
procedure ChangeSpeed(var DlgData:Word);
var CSChangeSpeedDlg;
begin
CS:=New(PChangeSpeedDlg,Init);
if ValidView(CS)<>nil then begin
DisableCommands([cmMenu,cmQuit,
cmSnake,cmLevel]);
CS^.SetData(DlgData);
if Desktop^.ExecView(CS)<>cmCancel
then CS^.GetData(DlgData);
dispose(CS,Done);
EnableCommands([cmMenu,cmQuit,
cmSnake,cmLevel])
end
end;
procedure Snake(DlgData:Word);
var SSnakeDlg;
begin
S:=New(PSnakeDlg,Init(DlgData));
if ValidView(S)<>nil then begin
DisableCommands([cmMenu,cmQuit,
cmSnake,cmLevel]);
Desktop^.ExecView(S);
dispose(S,Done);
EnableCommands([cmMenu,cmQuit,
cmSnake,cmLevel]);
end;
end;
begin
TApplication.HandleEvent(Event);
If Event.What = evCommand then
case Event.Command of
cmSnake : Snake(DlgData);
cmLevel : ChangeSpeed(DlgData);
else exit
end;
end;
{--- ChangeSpeed Dialog ---}
constructor TChangeSpeedDlg.Init;
var SpeedViewView;
R:TRect;
begin
R.Assign(0,0,24,12);
TDialog.Init(R,' Select speed ');
Options:=Options or ofCentered;
R.Assign(3,3,21,8);
SpeedView:=New(PRadioButtons,Init(R,
NewsItem(' ~0~',NewsItem(' ~1~',
NewsItem(' ~2~',NewsItem(' ~3~',
NewsItem(' ~4~',NewsItem(' ~5~',
NewsItem(' ~6~',NewsItem(' ~7~',
NewsItem(' ~8~',NewsItem(' ~9~',
nil))))))))))));
Insert(SpeedView);
R.Assign(2,2,13,3);
Insert(New(PLabel,Init(R,
'~S~peed',SpeedView)));
R.Assign(2,9,12,11);
Insert(New(PButton,Init(R,
'~O~k',cmOK,bfDefault)));
R.Assign(12,9,22,11);
Insert(New(PButton,Init(R,
'~C~ancel',cmCancel,bfNormal)));
end;
{--- Main ---}
begin
MyApp.Init;
MyApp.Run;
MyApp.Done;
end.
علاقه مندی ها (Bookmarks)