📄 untmain.pas
字号:
{
接龙游戏主窗口
黄文林 2006-02-12
}
unit untMain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Menus, ComCtrls, CardDraw, XPMan, IniFiles,
untScore, untOption, untBack, untAbout;
type
TfrmMain = class(TForm)
statMessage: TStatusBar;
imgDesk: TImage;
mmMain: TMainMenu;
mniGame: TMenuItem;
mniNewGame: TMenuItem;
mniOption: TMenuItem;
N2: TMenuItem;
mniExit: TMenuItem;
mniHelp: TMenuItem;
mniContext: TMenuItem;
mniAbout: TMenuItem;
mniScore: TMenuItem;
mniBackPic: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure mniExitClick(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure mniNewGameClick(Sender: TObject);
procedure mniScoreClick(Sender: TObject);
procedure mniOptionClick(Sender: TObject);
procedure mniBackPicClick(Sender: TObject);
procedure mniContextClick(Sender: TObject);
procedure mniAboutClick(Sender: TObject);
private
FCardDraw: TCardDraw;
FGameIsGo: Boolean; //游戏进行标志
procedure SetHint(AHint: string); //显示提示信息
procedure LoadIni; //载入配置文件
procedure SaveIni; //保存配置文件
public
property CardDraw: TCardDraw read FCardDraw write FCardDraw;
end;
var
frmMain: TfrmMain;
implementation
{$R *.dfm}
procedure TfrmMain.SetHint(AHint: string);
begin
//显示在状态栏
statMessage.SimpleText := AHint;
end;
procedure TfrmMain.LoadIni;
var
inifile: TIniFile;
begin
inifile := TIniFile.Create(ChangeFileExt(Application.ExeName, '.ini'));
FCardDraw.SetPlayerName(0,inifile.ReadString('Game', 'Player', '玩家'));
FCardDraw.SetPlayerName(1,inifile.ReadString('Game', 'Computer1', '张三'));
FCardDraw.SetPlayerName(2,inifile.ReadString('Game', 'Computer2', '李四'));
FCardDraw.SetPlayerName(3,inifile.ReadString('Game', 'Computer3', '王五'));
FCardDraw.Speed := inifile.ReadInteger('Game', 'Speed', 0);
FCardDraw.ComputerSound := inifile.ReadBool('Game', 'ComputerSound', True);
FCardDraw.HumanSound := inifile.ReadBool('Game', 'HumanSound', True);
FCardDraw.CardBackIndex := 54 + inifile.ReadInteger('Game', 'Back', 0);
FCardDraw.TestMode := inifile.ReadBool('Game', 'Test', False);
inifile.Free;
end;
procedure TfrmMain.SaveIni;
var
inifile: TIniFile;
begin
inifile := TIniFile.Create(ChangeFileExt(Application.ExeName, '.ini'));
inifile.WriteString('Game', 'Player', FCardDraw.GetPlayerName(0));
inifile.WriteString('Game', 'Computer1', FCardDraw.GetPlayerName(1));
inifile.WriteString('Game', 'Computer2', FCardDraw.GetPlayerName(2));
inifile.WriteString('Game', 'Computer3', FCardDraw.GetPlayerName(3));
inifile.WriteInteger('Game', 'Speed', FCardDraw.Speed);
inifile.WriteBool('Game', 'ComputerSound', FCardDraw.ComputerSound);
inifile.WriteBool('Game', 'HumanSound', FCardDraw.HumanSound);
inifile.WriteInteger('Game', 'Back', FCardDraw.CardBackIndex - 54);
inifile.Free;
end;
//========================== event ===================================
procedure TfrmMain.FormCreate(Sender: TObject);
begin
FCardDraw := TCardDraw.Create(imgDesk);
Loadini;
Caption := Application.Title;
SetHint('欢迎参加接龙游戏,按 F2 开始新游戏!');
end;
procedure TfrmMain.FormDestroy(Sender: TObject);
begin
SaveIni;
FCardDraw.Free;
end;
procedure TfrmMain.mniExitClick(Sender: TObject);
begin
Close;
end;
procedure TfrmMain.mniNewGameClick(Sender: TObject);
begin
if not FGameIsGo then
FGameIsGo := True
else
if Application.MessageBox('游戏正在进行,是否要重新开始?', '新游戏', MB_ICONQUESTION + MB_YESNO) = IDNO then
exit;
SetHint('游戏进行中,需要帮助请按 F1。');
FCardDraw.NewGame;
frmScore.ClearScore;
end;
procedure TfrmMain.mniScoreClick(Sender: TObject);
begin
frmScore.ShowModal;
end;
procedure TfrmMain.mniOptionClick(Sender: TObject);
var
frmOption: TfrmOption;
begin
frmOption := TfrmOption.Create(self);
frmOption.ShowModal;
frmOption.Free;
end;
procedure TfrmMain.mniBackPicClick(Sender: TObject);
var
frmBack: TfrmBack;
begin
frmBack := TfrmBack.Create(self);
frmBack.ShowModal;
frmBack.Free;
end;
procedure TfrmMain.mniContextClick(Sender: TObject);
var
hlpfile: string;
begin
hlpfile := ChangeFileExt(Application.ExeName, '.chm');
if FileExists(hlpfile) then
WinExec(PChar('hh ' + hlpfile), SW_SHOW)
else
Application.MessageBox(PChar('没有找到帮助文件!'), '帮助', MB_ICONINFORMATION + MB_OK);
end;
procedure TfrmMain.mniAboutClick(Sender: TObject);
var
frmAbout: TfrmAbout;
begin
frmAbout := TfrmAbout.Create(self);
frmAbout.ShowModal;
frmAbout.Free;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -