Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- interface
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, StdCtrls, Menus, ComCtrls;
- type
- TfrmMain = class(TForm)
- lbluseless: TLabel;
- lblName: TLabel;
- edtAI: TEdit;
- edtPlayer: TEdit;
- MainMenu: TMainMenu;
- StatusBar1: TStatusBar;
- mmGame: TMenuItem;
- mmNew: TMenuItem;
- mmQuit: TMenuItem;
- btnConfirm: TButton;
- btnNew: TButton;
- lbluselessss: TLabel;
- lblPoints: TLabel;
- procedure FormCreate(Sender: TObject);
- procedure btnNewClick(Sender: TObject);
- procedure mmNewClick(Sender: TObject);
- procedure btnConfirmClick(Sender: TObject);
- private
- { Private declarations }
- public
- function AvailableListGeneration(InputString:String):TStringList;
- procedure NewGame;
- procedure NextTurn(PlayerInput:String);
- end;
- var
- frmMain: TfrmMain;
- CitiesList,AvailableList,PCAvailableList:TStringList;
- AICity,PlayerCity:string;
- ForbiddenLetters:set of char;
- Points,AICityIndex:integer;
- implementation
- uses Unit1;
- {$R *.dfm}
- procedure TfrmMain.btnConfirmClick(Sender: TObject);
- var
- i:integer;
- Failed:boolean;
- begin
- Failed:=true;
- PlayerCity:=edtPlayer.Text;
- AvailableList:=AvailableListGeneration(AICity);
- for i := 0 to (AvailableList.Count-1) do
- if PlayerCity = AvailableList.Strings[i] then
- begin
- Failed:=false;
- NextTurn(PlayerCity);
- end;
- if Failed
- then
- ShowMessage('Такого города нет');
- end;
- procedure TfrmMain.btnNewClick(Sender: TObject);
- begin
- NewGame;
- end;
- procedure TfrmMain.FormCreate(Sender: TObject);
- begin
- randomize;
- lbluseless.Hide;
- lblName.Hide;
- edtAI.Hide;
- edtPlayer.Hide;
- btnConfirm.Hide;
- lbluselessss.Hide;
- lblPoints.Hide;
- CitiesList:=TStringList.Create;
- AvailableList:=TStringList.Create;
- PCAvailableList:=TStringList.Create;
- CitiesList.LoadFromFile('spisok.txt');
- ForbiddenLetters:=['Ъ','Ь','Ы'];
- end;
- procedure TfrmMain.mmNewClick(Sender: TObject);
- begin
- NewGame;
- end;
- //Новая игра
- procedure TfrmMain.NewGame;
- begin
- Points:=0;
- frmName.ShowModal;
- lbluseless.Show;
- lblName.Show;
- lbluselessss.Show;
- lblPoints.Show;
- edtAI.Show;
- edtPlayer.Show;
- btnConfirm.Show;
- btnNew.Hide;
- mmNew.Enabled:=False;
- CitiesList.LoadFromFile('spisok.txt');
- AICityIndex:=random(CitiesList.Count);
- AICity:=CitiesList.Strings[AICityIndex];
- AvailableList:=AvailableListGeneration(AICity);
- edtAI.Text:=AICity;
- edtPlayer.Text:='';
- end;
- //Генерация массива подходящих городов
- function TfrmMain.AvailableListGeneration(InputString:String):TStringList;
- var
- LastLetter:char;
- i:integer;
- ResultList:TStringList;
- begin
- ResultList:=TStringList.Create;
- AvailableList.Clear;
- if InputString[length(InputString)] in ForbiddenLetters
- then
- begin
- LastLetter:=InputString[length(InputString)-1];
- end
- else
- begin
- LastLetter:=InputString[length(InputString)];
- end;
- for i := 0 to (CitiesList.count-1) do
- if CitiesList.Strings[i][1]=LastLetter
- then
- ResultList.Add(CitiesList.Strings[i]);
- AvailableListGeneration:=ResultList;
- end;
- //Запуск следующего хода
- procedure TfrmMain.NextTurn(PlayerInput:String);
- var
- i:integer;
- begin
- PCAvailableList:=AvailableListGeneration(PlayerInput);
- CitiesList.Delete(AICityIndex);
- AICityIndex:=random(PCAvailableList.Count);
- AICity:=PCAvailableList[AICityIndex];
- AvailableList:=AvailableListGeneration(AICity);
- edtAI.Text:=AICity;
- edtPlayer.Text:='';
- inc(Points);
- lblPoints.Caption:=IntToStr(Points);
- end;
- end.
Add Comment
Please, Sign In to add comment