Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- unit UnitMainMenu;
- interface
- uses
- Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
- Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, UnitGame, UnitChangeProfile,
- Vcl.ExtCtrls, UnitListOfPlayers, Vcl.Menus, Vcl.Imaging.jpeg;
- type
- TFormMainMenu = class(TForm)
- btStartNewGame: TButton;
- btContinueGame: TButton;
- btSetName: TButton;
- btExit: TButton;
- btViewRecords: TButton;
- lPlayerName: TLabel;
- lBalance: TLabel;
- lMinBet: TLabel;
- lGameName: TLabel;
- MainMenu: TMainMenu;
- N1: TMenuItem;
- ItemAboutAuthor: TMenuItem;
- ItrmHelp: TMenuItem;
- N2: TMenuItem;
- ItemExit: TMenuItem;
- procedure FormCreate(Sender: TObject);
- procedure btStartNewGameClick(Sender: TObject);
- procedure btContinueGameClick(Sender: TObject);
- procedure FormShow(Sender: TObject);
- procedure btSetNameClick(Sender: TObject);
- procedure btViewRecordsClick(Sender: TObject);
- procedure btExitClick(Sender: TObject);
- procedure FormClose(Sender: TObject; var Action: TCloseAction);
- procedure ItemAboutAuthorClick(Sender: TObject);
- procedure ItrmHelpClick(Sender: TObject);
- procedure ItemExitClick(Sender: TObject);
- procedure FormPaint(Sender: TObject);
- private
- public
- end;
- var
- FormMainMenu: TFormMainMenu;
- PlayerName, Balance, StartBalance : String;
- MinBet : Integer;
- implementation
- {$R *.dfm}
- uses UnitTableOfRecords;
- procedure TFormMainMenu.btContinueGameClick(Sender: TObject);
- const
- NegativeBalance = 'На вашем счету нехватает денег для минимальной ставки!'
- + #13#10 + 'Вы можете начать новую игру - "Да".'
- + #13#10 + 'Или можете нажать "Нет" и уменьшить начальную ставку.';
- ZeroBalance = 'На счету 0$.' + #13#10 + 'Сейчас начнется новая игра.';
- begin
- if Balance <> '0' then
- begin
- if StrToInt(Balance) < MinBet then
- begin
- if MessageBox(Handle, NegativeBalance, 'Начать новую игру?', MB_ICONINFORMATION + MB_YESNO) = mrYes then
- begin
- btStartNewGame.Click;
- end;
- end
- else
- begin
- FormMainMenu.Hide;
- FormGame.Show;
- end;
- end
- else
- begin
- MessageBox(Handle, ZeroBalance, '', MB_ICONINFORMATION + MB_OK);
- btStartNewGame.Click;
- end;
- end;
- procedure TFormMainMenu.btExitClick(Sender: TObject);
- begin
- Close;
- end;
- procedure TFormMainMenu.btSetNameClick(Sender: TObject);
- begin
- FormMainMenu.Hide;
- FormChangeProfile.Show;
- end;
- procedure TFormMainMenu.btStartNewGameClick(Sender: TObject);
- const
- PositiveBalance = 'У вас положительный баланс!' + #13#10 + 'Вы точно желаете начать новую игру?';
- begin
- if Balance <> '0' then
- begin
- if StrToInt(Balance) >= MinBet then
- begin
- if MessageBox(Handle, PositiveBalance, 'Новая игра!', MB_ICONINFORMATION + MB_YESNO) = mrYes then
- begin
- Balance := StartBalance;
- FormMainMenu.Hide;
- FormGame.Show
- end;
- end
- else
- begin
- Balance := StartBalance;
- FormMainMenu.Hide;
- FormGame.Show;
- end;
- end
- else
- begin
- Balance := StartBalance;
- FormMainMenu.Hide;
- FormGame.Show;
- end;
- end;
- procedure TFormMainMenu.btViewRecordsClick(Sender: TObject);
- begin
- FormMainMenu.Hide;
- FormTableOfRecords.Show;
- end;
- procedure TFormMainMenu.FormClose(Sender: TObject; var Action: TCloseAction);
- const
- MessageExit = 'Вы уверены, что хотите выйти?';
- begin
- if MessageBox(Handle, MessageExit, 'Завершение программы',
- MB_ICONINFORMATION + MB_YESNO) = mrNo then
- Action := TCloseAction.caNone
- else
- begin
- LoadPlayersToFile(FirstPl);
- end;
- end;
- procedure TFormMainMenu.FormCreate(Sender: TObject);
- var
- PlayerData: TData;
- FirstPlayer: PPlayer;
- begin
- LoadPlayers(FirstPl, LastPl);
- PlayerData.Name := 'Player1';
- PlayerData.Balance := '1000';
- PlayerData.MaxBalance := '1000';
- if FirstPl = nil then
- CreateHead(FirstPl, LastPl, PlayerData);
- if FindPlayer(FirstPl, 'Player1', FirstPlayer) then
- begin
- PlayerName := FirstPlayer^.DataPl.Name;
- Balance := FirstPlayer^.DataPl.Balance;
- end
- else
- begin
- AddToEnd(LastPl, PlayerData);
- PlayerName := FirstPlayer^.DataPl.Name;
- Balance := FirstPlayer^.DataPl.Balance;
- end;
- StartBalance := '1000';
- MinBet := 25;
- lPlayerName.Caption := 'Текущий игрок : ' + PlayerName;
- lBalance.Caption := 'На счету : ' + Balance + '$';
- lMinBet.Caption := 'Минимальная ставка : ' + IntToStr(MinBet) + '$';
- end;
- procedure TFormMainMenu.FormPaint(Sender: TObject);
- var
- Fon: TBitMap;
- begin
- Fon := TBitMap.Create;
- Fon.LoadFromFile('../../Картинки/Fon.bmp');
- FormMainMenu.Canvas.Draw(0, 0, Fon);
- Fon.Free;
- end;
- procedure TFormMainMenu.FormShow(Sender: TObject);
- var
- CurPlayer: PPlayer;
- begin
- if FindPlayer(FirstPl, PlayerName, CurPlayer) then
- begin
- lBalance.Caption := 'На счету : ' + CurPlayer^.DataPl.Balance + '$';
- lPlayerName.Caption := 'Текущий игрок : ' + PlayerName;
- end
- else
- begin
- if FindPlayer(FirstPl, 'Player1', CurPlayer) then
- begin
- lBalance.Caption := 'На счету : ' + CurPlayer^.DataPl.Balance + '$';
- lPlayerName.Caption := 'Текущий игрок : ' + CurPlayer^.DataPl.Name;
- end;
- end;
- end;
- procedure TFormMainMenu.ItemAboutAuthorClick(Sender: TObject);
- const
- MessageAboutAuthor = 'Приложение "Blackjack" разработал студент первого курса '
- + 'специальности ПОИТ, группы №851001 Быховец Илья';
- begin
- MessageBox(Handle, MessageAboutAuthor, 'Об авторе!', MB_ICONINFORMATION + MB_OK);
- end;
- procedure TFormMainMenu.ItemExitClick(Sender: TObject);
- begin
- Close;
- end;
- procedure TFormMainMenu.ItrmHelpClick(Sender: TObject);
- const
- MessageInstuction = 'На данном этапи вы имеете следующие возможности:'#13 +
- ' - Новая игра (баланс текущего игрового профиля становится равным 1000$);'#13 +
- ' - Продолжить (начинается игровая сессия с текущими данными, ' +
- 'если хватает на минимальную ставку);'#13 +
- ' - Таблица рекордов (отображает таблицу с максимальным балансом по каждому профилю);'#13 +
- ' - Именить игрока (отображает окно для корректировки необходимых данных профиля);';
- begin
- MessageBox(Handle, MessageInstuction, 'Интсрукция', MB_ICONINFORMATION + MB_OK);
- end;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement