Guest User

Untitled

a guest
Jun 25th, 2018
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 3.70 KB | None | 0 0
  1.  
  2. interface
  3.  
  4. uses
  5.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  6.   Dialogs, StdCtrls, Menus, ComCtrls;
  7.  
  8. type
  9.   TfrmMain = class(TForm)
  10.     lbluseless: TLabel;
  11.     lblName: TLabel;
  12.     edtAI: TEdit;
  13.     edtPlayer: TEdit;
  14.     MainMenu: TMainMenu;
  15.     StatusBar1: TStatusBar;
  16.     mmGame: TMenuItem;
  17.     mmNew: TMenuItem;
  18.     mmQuit: TMenuItem;
  19.     btnConfirm: TButton;
  20.     btnNew: TButton;
  21.     lbluselessss: TLabel;
  22.     lblPoints: TLabel;
  23.     procedure FormCreate(Sender: TObject);
  24.     procedure btnNewClick(Sender: TObject);
  25.     procedure mmNewClick(Sender: TObject);
  26.     procedure btnConfirmClick(Sender: TObject);
  27.   private
  28.     { Private declarations }
  29.   public
  30.     function AvailableListGeneration(InputString:String):TStringList;
  31.     procedure NewGame;
  32.     procedure NextTurn(PlayerInput:String);
  33.   end;
  34.  
  35. var
  36.   frmMain: TfrmMain;
  37.   CitiesList,AvailableList,PCAvailableList:TStringList;
  38.   AICity,PlayerCity:string;
  39.   ForbiddenLetters:set of char;
  40.   Points,AICityIndex:integer;
  41.  
  42. implementation
  43.  
  44. uses Unit1;
  45.  
  46. {$R *.dfm}
  47. procedure TfrmMain.btnConfirmClick(Sender: TObject);
  48. var
  49.   i:integer;
  50.   Failed:boolean;
  51. begin
  52.   Failed:=true;
  53.   PlayerCity:=edtPlayer.Text;
  54.   AvailableList:=AvailableListGeneration(AICity);
  55.   for i := 0 to (AvailableList.Count-1) do
  56.     if PlayerCity = AvailableList.Strings[i] then
  57.       begin
  58.         Failed:=false;
  59.         NextTurn(PlayerCity);
  60.       end;
  61.   if Failed
  62.    then
  63.      ShowMessage('Такого города нет');
  64. end;
  65.  
  66. procedure TfrmMain.btnNewClick(Sender: TObject);
  67. begin
  68.   NewGame;
  69. end;
  70.  
  71. procedure TfrmMain.FormCreate(Sender: TObject);
  72. begin
  73.   randomize;
  74.   lbluseless.Hide;
  75.   lblName.Hide;
  76.   edtAI.Hide;
  77.   edtPlayer.Hide;
  78.   btnConfirm.Hide;
  79.   lbluselessss.Hide;
  80.   lblPoints.Hide;
  81.   CitiesList:=TStringList.Create;
  82.   AvailableList:=TStringList.Create;
  83.   PCAvailableList:=TStringList.Create;
  84.   CitiesList.LoadFromFile('spisok.txt');
  85.   ForbiddenLetters:=['Ъ','Ь','Ы'];
  86. end;
  87.  
  88. procedure TfrmMain.mmNewClick(Sender: TObject);
  89. begin
  90.   NewGame;
  91. end;
  92.  
  93. //Новая игра
  94. procedure TfrmMain.NewGame;
  95. begin
  96.   Points:=0;
  97.   frmName.ShowModal;
  98.   lbluseless.Show;
  99.   lblName.Show;
  100.   lbluselessss.Show;
  101.   lblPoints.Show;
  102.   edtAI.Show;
  103.   edtPlayer.Show;
  104.   btnConfirm.Show;
  105.   btnNew.Hide;
  106.   mmNew.Enabled:=False;
  107.   CitiesList.LoadFromFile('spisok.txt');
  108.   AICityIndex:=random(CitiesList.Count);
  109.   AICity:=CitiesList.Strings[AICityIndex];
  110.   AvailableList:=AvailableListGeneration(AICity);
  111.   edtAI.Text:=AICity;
  112.   edtPlayer.Text:='';
  113. end;
  114.  
  115. //Генерация массива подходящих городов
  116. function TfrmMain.AvailableListGeneration(InputString:String):TStringList;
  117. var
  118.   LastLetter:char;
  119.   i:integer;
  120.   ResultList:TStringList;
  121. begin
  122.   ResultList:=TStringList.Create;
  123.   AvailableList.Clear;
  124.   if InputString[length(InputString)] in ForbiddenLetters
  125.     then
  126.       begin
  127.         LastLetter:=InputString[length(InputString)-1];
  128.       end
  129.     else
  130.       begin
  131.         LastLetter:=InputString[length(InputString)];
  132.       end;
  133.   for i := 0 to (CitiesList.count-1) do
  134.     if CitiesList.Strings[i][1]=LastLetter
  135.       then
  136.         ResultList.Add(CitiesList.Strings[i]);
  137.   AvailableListGeneration:=ResultList;
  138. end;
  139.  
  140. //Запуск следующего хода
  141. procedure TfrmMain.NextTurn(PlayerInput:String);
  142. var
  143.   i:integer;
  144. begin
  145.   PCAvailableList:=AvailableListGeneration(PlayerInput);
  146.   CitiesList.Delete(AICityIndex);
  147.   AICityIndex:=random(PCAvailableList.Count);
  148.   AICity:=PCAvailableList[AICityIndex];
  149.   AvailableList:=AvailableListGeneration(AICity);
  150.   edtAI.Text:=AICity;
  151.   edtPlayer.Text:='';
  152.   inc(Points);
  153.   lblPoints.Caption:=IntToStr(Points);
  154. end;
  155.  
  156. end.
Add Comment
Please, Sign In to add comment