📄 junit2.pas
字号:
Unit jUnit2;
Interface
Uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Buttons, ExtCtrls, StdCtrls, directx, dxdraws;
Type
TMenuForm = Class(TForm)
Quit: TSpeedButton;
NewGame: TSpeedButton;
RestartLevel: TSpeedButton;
Endgame: TSpeedButton;
Load: TSpeedButton;
Save: TSpeedButton;
ScreenMode: TSpeedButton;
Image2: TImage;
Procedure EndgameClick(Sender: TObject);
Procedure QuitClick(Sender: TObject);
Procedure NewGameClick(Sender: TObject);
Procedure SaveClick(Sender: TObject);
Procedure LoadClick(Sender: TObject);
Procedure FormActivate(Sender: TObject);
Procedure FormKeyPress(Sender: TObject; Var Key: Char);
Procedure RestartLevelClick(Sender: TObject);
Procedure FormShow(Sender: TObject);
Procedure ScreenModeClick(Sender: TObject);
Private
{ Private declarations }
Public
{ Public declarations }
End;
Var
MenuForm : TMenuForm;
Implementation
Uses unit1, Unit2_, Unit3;
{$R *.DFM}
Function systemdir: String;
Var temp : Array[0..255] Of char;
Begin
GetSystemDirectory(@temp, 255);
result := pchar(@temp);
End;
Procedure TMenuForm.EndgameClick(Sender: TObject);
Begin
playing := false;
Close;
End;
Procedure TMenuForm.QuitClick(Sender: TObject);
Begin
MainForm.DXTimer1.Enabled := False;
HelpForm.ShowModal;
Halt;
End;
Procedure TMenuForm.NewGameClick(Sender: TObject);
Var a : String;
Begin
If paramstr(1) <> '' Then
Begin
game.score := 0;
a := paramstr(1);
setlength(a, length(a) - 2);
chdir(extractfilepath(application.exename));
mainform.loadworld(a);
playing := true;
End Else Mainform.InitGame;
close;
End;
Procedure TMenuForm.SaveClick(Sender: TObject);
Var f : File Of byte;
i, l : integer;
Begin
assignfile(f, systemdir + '\joffa.sav');
rewrite(f);
blockwrite(f, game.score, sizeof(game.score));
blockwrite(f, game.scrollx, sizeof(game.scrollx));
blockwrite(f, game.scrolly, sizeof(game.scrolly));
blockwrite(f, game.level.filename, sizeof(game.level.filename));
blockwrite(f, game.level.currentfile, sizeof(game.level.currentfile));
l := length(game.objs);
blockwrite(f, l, sizeof(l));
For i := 0 To l - 1 Do
blockwrite(f, game.objs[i], sizeof(game.objs[0]));
CloseFile(f);
Close;
End;
Procedure TMenuForm.LoadClick(Sender: TObject);
Var f : File Of byte;
sx, sy, l, i : integer;
loadobj : objtype;
Begin
MainForm.initgame;
assignfile(f, systemdir + '\joffa.sav');
reset(f);
blockread(f, game.score, sizeof(game.score));
blockread(f, sx, sizeof(game.scrollx));
blockread(f, sy, sizeof(game.scrolly));
blockread(f, game.level.filename, sizeof(game.level.filename));
blockread(f, game.level.currentfile, sizeof(game.level.currentfile));
mainform.loadlevel(game.level.currentfile);
blockread(f, l, sizeof(l));
setlength(game.objs, l);
For i := 0 To l - 1 Do
BlockRead(f, game.objs[i], sizeof(loadobj)); {}
CloseFile(f);
game.scrollx := sx;
game.scrolly := sy;
Close;
End;
Procedure TMenuForm.FormActivate(Sender: TObject);
Begin
EndGame.Enabled := (playing);
//SpeedButton5.Enabled:=(playing);
End;
Procedure TMenuForm.FormKeyPress(Sender: TObject; Var Key: Char);
Begin
If key = chr(27) Then close;
End;
Procedure TMenuForm.RestartLevelClick(Sender: TObject);
Begin
With mainform Do
With game.objs[myhandle] Do
// if typo=99 then
// if stall<10 then
loadlevel(game.level.currentfile);
End;
Procedure TMenuForm.FormShow(Sender: TObject);
Begin
//left:=(screen.width-width) div 2;
//top:=(screen.height-height) div 2;
If doFullScreen In mainform.dxdraw1.Options Then
ScreenMode.Caption := 'Windowed' Else
ScreenMode.Caption := 'Fullscreen';
load.enabled := fileexists(systemdir + '\joffa.sav');
save.enabled := playing;
RestartLevel.Enabled := playing;
End;
Procedure TMenuForm.ScreenModeClick(Sender: TObject);
Begin
MainForm.SwitchMode;
Close;
End;
End.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -