Advertisement
Guest User

Untitled

a guest
May 23rd, 2019
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 7.19 KB | None | 0 0
  1. unit UnitMainMenu;
  2.  
  3. interface
  4.  
  5. uses
  6.   Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  7.   Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, UnitGame, UnitChangeProfile,
  8.   Vcl.ExtCtrls, UnitListOfPlayers, Vcl.Menus, Vcl.Imaging.jpeg;
  9.  
  10. type
  11.   TFormMainMenu = class(TForm)
  12.     btStartNewGame: TButton;
  13.     btContinueGame: TButton;
  14.     btSetName: TButton;
  15.     btExit: TButton;
  16.     btViewRecords: TButton;
  17.     lPlayerName: TLabel;
  18.     lBalance: TLabel;
  19.     lMinBet: TLabel;
  20.     lGameName: TLabel;
  21.     MainMenu: TMainMenu;
  22.     N1: TMenuItem;
  23.     ItemAboutAuthor: TMenuItem;
  24.     ItrmHelp: TMenuItem;
  25.     N2: TMenuItem;
  26.     ItemExit: TMenuItem;
  27.     procedure FormCreate(Sender: TObject);
  28.     procedure btStartNewGameClick(Sender: TObject);
  29.     procedure btContinueGameClick(Sender: TObject);
  30.     procedure FormShow(Sender: TObject);
  31.     procedure btSetNameClick(Sender: TObject);
  32.     procedure btViewRecordsClick(Sender: TObject);
  33.     procedure btExitClick(Sender: TObject);
  34.     procedure FormClose(Sender: TObject; var Action: TCloseAction);
  35.     procedure ItemAboutAuthorClick(Sender: TObject);
  36.     procedure ItrmHelpClick(Sender: TObject);
  37.     procedure ItemExitClick(Sender: TObject);
  38.     procedure FormPaint(Sender: TObject);
  39.   private
  40.  
  41.   public
  42.  
  43.   end;
  44.  
  45. var
  46.   FormMainMenu: TFormMainMenu;
  47.   PlayerName, Balance, StartBalance : String;
  48.   MinBet : Integer;
  49.  
  50. implementation
  51.  
  52. {$R *.dfm}
  53.  
  54. uses UnitTableOfRecords;
  55.  
  56. procedure TFormMainMenu.btContinueGameClick(Sender: TObject);
  57. const
  58.    NegativeBalance = 'На вашем счету нехватает денег для минимальной ставки!'
  59.       + #13#10 + 'Вы можете начать новую игру  - "Да".'
  60.          + #13#10 + 'Или можете нажать "Нет" и уменьшить начальную ставку.';
  61.    ZeroBalance = 'На счету 0$.' + #13#10 + 'Сейчас начнется новая игра.';
  62. begin
  63.    if Balance <> '0' then
  64.    begin
  65.       if StrToInt(Balance) < MinBet then
  66.       begin
  67.          if MessageBox(Handle, NegativeBalance, 'Начать новую игру?', MB_ICONINFORMATION + MB_YESNO) = mrYes then
  68.          begin
  69.             btStartNewGame.Click;
  70.          end;
  71.       end
  72.       else
  73.       begin
  74.          FormMainMenu.Hide;
  75.          FormGame.Show;
  76.       end;
  77.    end
  78.    else
  79.    begin
  80.       MessageBox(Handle, ZeroBalance, '', MB_ICONINFORMATION + MB_OK);
  81.       btStartNewGame.Click;
  82.    end;
  83. end;
  84.  
  85. procedure TFormMainMenu.btExitClick(Sender: TObject);
  86. begin
  87.    Close;
  88. end;
  89.  
  90. procedure TFormMainMenu.btSetNameClick(Sender: TObject);
  91. begin
  92.    FormMainMenu.Hide;
  93.    FormChangeProfile.Show;
  94. end;
  95.  
  96. procedure TFormMainMenu.btStartNewGameClick(Sender: TObject);
  97. const
  98.    PositiveBalance = 'У вас положительный баланс!' + #13#10 + 'Вы точно желаете начать новую игру?';
  99. begin
  100.    if Balance <> '0' then
  101.    begin
  102.       if StrToInt(Balance) >= MinBet then
  103.       begin
  104.          if MessageBox(Handle, PositiveBalance, 'Новая игра!', MB_ICONINFORMATION + MB_YESNO) = mrYes then
  105.          begin
  106.             Balance := StartBalance;
  107.             FormMainMenu.Hide;
  108.             FormGame.Show
  109.          end;
  110.       end
  111.       else
  112.       begin
  113.          Balance := StartBalance;
  114.          FormMainMenu.Hide;
  115.          FormGame.Show;
  116.       end;
  117.    end
  118.    else
  119.    begin
  120.       Balance := StartBalance;
  121.       FormMainMenu.Hide;
  122.       FormGame.Show;
  123.    end;
  124. end;
  125.  
  126. procedure TFormMainMenu.btViewRecordsClick(Sender: TObject);
  127. begin
  128.    FormMainMenu.Hide;
  129.    FormTableOfRecords.Show;
  130. end;
  131.  
  132. procedure TFormMainMenu.FormClose(Sender: TObject; var Action: TCloseAction);
  133. const
  134.    MessageExit = 'Вы уверены, что хотите выйти?';
  135. begin
  136.    if MessageBox(Handle, MessageExit, 'Завершение программы',
  137.       MB_ICONINFORMATION + MB_YESNO) = mrNo then
  138.       Action := TCloseAction.caNone
  139.    else
  140.    begin
  141.       LoadPlayersToFile(FirstPl);
  142.    end;
  143. end;
  144.  
  145. procedure TFormMainMenu.FormCreate(Sender: TObject);
  146. var
  147.    PlayerData: TData;
  148.    FirstPlayer: PPlayer;
  149. begin
  150.    LoadPlayers(FirstPl, LastPl);
  151.    PlayerData.Name := 'Player1';
  152.    PlayerData.Balance := '1000';
  153.    PlayerData.MaxBalance := '1000';
  154.    if FirstPl = nil then
  155.       CreateHead(FirstPl, LastPl, PlayerData);
  156.    if FindPlayer(FirstPl, 'Player1', FirstPlayer) then
  157.    begin
  158.       PlayerName := FirstPlayer^.DataPl.Name;
  159.       Balance := FirstPlayer^.DataPl.Balance;
  160.    end
  161.    else
  162.    begin
  163.       AddToEnd(LastPl, PlayerData);
  164.       PlayerName := FirstPlayer^.DataPl.Name;
  165.       Balance := FirstPlayer^.DataPl.Balance;
  166.    end;
  167.    StartBalance := '1000';
  168.    MinBet := 25;
  169.    lPlayerName.Caption := 'Текущий игрок : ' + PlayerName;
  170.    lBalance.Caption := 'На счету : ' + Balance + '$';
  171.    lMinBet.Caption := 'Минимальная ставка : ' + IntToStr(MinBet) + '$';
  172. end;
  173.  
  174. procedure TFormMainMenu.FormPaint(Sender: TObject);
  175. var
  176.    Fon: TBitMap;
  177. begin
  178.    Fon := TBitMap.Create;
  179.    Fon.LoadFromFile('../../Картинки/Fon.bmp');
  180.    FormMainMenu.Canvas.Draw(0, 0, Fon);
  181.    Fon.Free;
  182. end;
  183.  
  184. procedure TFormMainMenu.FormShow(Sender: TObject);
  185. var
  186.    CurPlayer: PPlayer;
  187. begin
  188.    if FindPlayer(FirstPl, PlayerName, CurPlayer) then
  189.    begin
  190.       lBalance.Caption := 'На счету : ' + CurPlayer^.DataPl.Balance + '$';
  191.       lPlayerName.Caption := 'Текущий игрок : ' + PlayerName;
  192.    end
  193.    else
  194.    begin
  195.       if FindPlayer(FirstPl, 'Player1', CurPlayer) then
  196.       begin
  197.          lBalance.Caption := 'На счету : ' + CurPlayer^.DataPl.Balance + '$';
  198.          lPlayerName.Caption := 'Текущий игрок : ' + CurPlayer^.DataPl.Name;
  199.       end;
  200.    end;
  201. end;
  202.  
  203. procedure TFormMainMenu.ItemAboutAuthorClick(Sender: TObject);
  204. const
  205.    MessageAboutAuthor = 'Приложение "Blackjack" разработал студент первого курса '
  206.       + 'специальности ПОИТ, группы №851001 Быховец Илья';
  207. begin
  208.    MessageBox(Handle, MessageAboutAuthor, 'Об авторе!', MB_ICONINFORMATION + MB_OK);
  209. end;
  210.  
  211. procedure TFormMainMenu.ItemExitClick(Sender: TObject);
  212. begin
  213.    Close;
  214. end;
  215.  
  216. procedure TFormMainMenu.ItrmHelpClick(Sender: TObject);
  217. const
  218.    MessageInstuction = 'На данном этапи вы имеете следующие возможности:'#13 +
  219.       '  - Новая игра (баланс текущего игрового профиля становится равным 1000$);'#13 +
  220.       '  - Продолжить (начинается игровая сессия с текущими данными, ' +
  221.       'если хватает на минимальную ставку);'#13 +
  222.       '  - Таблица рекордов (отображает таблицу с максимальным балансом по каждому профилю);'#13 +
  223.       '  - Именить игрока (отображает окно для корректировки необходимых данных профиля);';
  224. begin
  225.    MessageBox(Handle, MessageInstuction, 'Интсрукция', MB_ICONINFORMATION + MB_OK);
  226. end;
  227.  
  228. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement