⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 untmain.pas

📁 这是一个扑克牌游戏。 1.抓有黑桃7 的玩家首先出黑桃7。 2.然后按逆时针方向出牌。每位玩家依次出牌
💻 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 + -