Guest User

Untitled

a guest
Oct 19th, 2017
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.88 KB | None | 0 0
  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. //Includes
  6. uses
  7. Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  8. StdCtrls, Buttons, ExtCtrls;
  9.  
  10. type
  11. TForm1 = class(TForm)
  12. btn5: TBitBtn;
  13. btn8: TBitBtn;
  14. btn12: TBitBtn;
  15. s5: TShape;
  16. s1: TShape;
  17. S8: TShape;
  18. s2: TShape;
  19. s3: TShape;
  20. s4: TShape;
  21. s6: TShape;
  22. S10: TShape;
  23. S7: TShape;
  24. S11: TShape;
  25. S9: TShape;
  26. Reverse: TBitBtn;
  27. ShowOff: TBitBtn;
  28. lblMessage: TStaticText;
  29. procedure CreateWLabelArray( numb:integer);
  30. procedure CreateABCLabelArray();
  31. procedure btn12Click(Sender: TObject);
  32. procedure btn8Click(Sender: TObject);
  33. procedure btn5Click(Sender: TObject);
  34. procedure ButtonClick(Sender: TObject);
  35. procedure FormCreate(Sender: TObject);
  36. function DoLetterCheck(Letter:string):boolean;
  37. procedure ShowOffClick(Sender: TObject);
  38. procedure ReverseClick(Sender: TObject);
  39. procedure DrawHanginNoob();
  40. Procedure ResetArrays();
  41. private
  42. { Private declarations }
  43. public
  44. { Public declarations }
  45. end;
  46.  
  47. //Globale variablen.
  48. var
  49. //Je declareert het form, gebruikelijk.
  50. Form1: TForm1;
  51. //We declaren het WLabelArray die bevat het aantal labels voor het aantal lettters van het woord.
  52. WLabelArray: array of TLabel;
  53. //We declaren ook het ABCLabelArray omdat dit nodig is, we weten hier alleen de length al omdat A-Z altijd 26 letters zijn.
  54. ABCLabelArray: array of TButton;
  55. GeneratedWord: string;
  56. Beurten, Tijd, Step: Integer;
  57. ReverseB:Boolean;
  58. implementation
  59.  
  60. {$R *.DFM}
  61.  
  62. //Dit zorgt ervoor dat we X X X X X X X (ligt af van de moeilijkheidsgraad) op het scherm krijgen als niet geraadde letters. Die langzaam maar zeker te voorschijn komen.
  63. procedure TForm1.CreateWLabelArray(numb:integer);
  64. var
  65. X, WLength: Integer;
  66. begin
  67. //Numb is een parameter die we doorkrijgen als de user op een bepaalde button klikt voor de moeilijkheids graad.
  68. //De drie moeilijkheidsgraden in een case, ook wel een switch statement genoemd.
  69. //Als Numb is 0 dan voert hij die code daarbij uit.
  70. //Bij de verschillende graden in moeilijkheid hebben we verschillende lengtes van arrays.
  71. WLength := 0;
  72. Case (numb) of
  73. 0: WLength := 5;
  74. 1: WLength := 8;
  75. 2: WLength := 12;
  76. end;
  77. //Onze array is bij het declaren in de global scope nog niet aan een vaste lengte toegekend.
  78. //Dat is goed want zoals je hierboven ziet kan het verschillen per graad/modus.
  79. SetLength(WLabelArray, Wlength);
  80. //We loopen nu door elk element van het WLabelArray om die op het form te zetten.
  81. //Ze bestaan namelijk nu nog helemaal niet!
  82. //We loopen tot de bepaalde lengte. en geven wat settings mee.
  83. for X:=0 to (Wlength - 1) do//begint bij nul dus je doet -1.
  84. begin
  85. WLabelArray[X]:=TLabel.Create(self); //Create
  86. With WLabelArray[X] do //dit houd in dat alles hieronder gelezen word als WLabelArray[X].Left:=X*40+100; etc.
  87. begin
  88. Left:=X*40+100;//Alle labels moeten zichtbaar zijn dus plaatsen we alle labels naast elkaar maar dan met 40 px ertussen.
  89. Top:=100;
  90. Caption:='X';//Is de tekst die je ziet.
  91. Visible:=true;
  92. Parent:=self;//Zodat hij op het scherm komt. Zonder kan wel is problemen opleveren.
  93. Tag:= x;//Ik geef de Tag property het element nummer mee van het array, klinkt verwarrend, maar dan kan ik dit later nog aanvragen indien nodig.
  94. Font.Size:=16;
  95. Font.Style:=Font.Style+[fsBold];
  96. Font.Color:=clBlue;
  97. end;
  98. end;
  99. end;
  100.  
  101.  
  102. procedure TForm1.DrawHanginNoob();
  103. begin
  104. if (not ReverseB) then
  105. begin
  106. if (Step > 0) then s1.visible:=true else s1.visible:=false;
  107. if (Step > 1) then s2.visible:=true else s2.visible:=false;
  108. if (Step > 2) then s3.visible:=true else s3.visible:=false;
  109. if (Step > 3) then s4.visible:=true else s4.visible:=false;
  110. if (Step > 4) then s5.visible:=true else s5.visible:=false;
  111. if (Step > 5) then s6.visible:=true else s6.visible:=false;
  112. if (Step > 6) then s7.visible:=true else s7.visible:=false;
  113. if (Step > 7) then s8.visible:=true else s8.visible:=false;
  114. if (Step > 8) then s9.visible:=true else s9.visible:=false;
  115. if (Step > 9) then s10.visible:=true else s10.visible:=false;
  116. if (Step > 10) then s11.visible:=true else s11.visible:=false;
  117. if (Step > 11) then lblMessage.visible := true else lblMessage.visible:=false;
  118. end else
  119. begin
  120. if (Step > 0) then s11.visible:=true else s11.visible:=false;
  121. if (Step > 1) then s10.visible:=true else s10.visible:=false;
  122. if (Step > 2) then s7.visible:=true else s7.visible:=false;
  123. if (Step > 3) then s9.visible:=true else s9.visible:=false;
  124. if (Step > 4) then s8.visible:=true else s8.visible:=false;
  125. if (Step > 5) then s6.visible:=true else s6.visible:=false;
  126. if (Step > 6) then s5.visible:=true else s5.visible:=false;
  127. if (Step > 7) then s4.visible:=true else s4.visible:=false;
  128. if (Step > 8) then s3.visible:=true else s3.visible:=false;
  129. if (Step > 9) then s2.visible:=true else s2.visible:=false;
  130. if (Step > 10) then s1.visible:=true else s1.visible:=false;
  131. if (Step > 11) then lblMessage.visible := true else lblMessage.visible:=false;
  132. end;
  133. end;
  134.  
  135. procedure TForm1.ResetArrays();
  136. var
  137. X:Integer;
  138. begin
  139. for X:=0 to (Length(WLabelArray) - 1) do//begint bij nul dus je doet -1.
  140. begin
  141. With WLabelArray[X] do
  142. begin
  143. Caption:='X';
  144. end;
  145. end;
  146. for X:=0 to 25 do
  147. begin
  148. With ABCLabelArray[X] do
  149. begin
  150. Enabled := True;
  151. end;
  152. end;
  153. end;
  154.  
  155. procedure Positive;
  156. begin
  157.  
  158. //Letter toevoegen enz.
  159. end;
  160.  
  161. procedure Negative;
  162. begin
  163. Inc(Step);
  164. if Step=12 then
  165. begin
  166. Form1.DrawHanginNoob;
  167. Inc(step);
  168. Form1.ResetArrays;
  169. Form1.DrawHanginNoob;
  170. MessageBox(HWND_DESKTOP, 'The Game, you just lost both.', 'THE GAME',ufMainUnit);
  171. Step := 0;
  172. end;
  173. Form1.DrawHanginNoob;
  174.  
  175. //MessageBox(HWND_DESKTOP, 'Fail', 'FAIL',ufMainUnit);
  176. end;
  177.  
  178.  
  179. //Er is op een lekker geklikt, nu eens kijken of hij in het woord zit.
  180. function TForm1.DoLetterCheck(Letter:string):boolean;
  181. var
  182. X: Integer;
  183. Switch: boolean;
  184. begin
  185. Result := False;
  186. Switch := False;
  187. GeneratedWord := 'stuff';
  188. for X:=0 to (Length(GeneratedWord)-1) do
  189. begin
  190. Result := (Letter = GeneratedWord[X+1]);
  191. If Result then WLabelArray[X].Caption := GeneratedWord[X+1];
  192. if Result then
  193. begin
  194. Result:=false;
  195. Switch := True;
  196. end;
  197. end;
  198. if (not Switch) then
  199. begin
  200. Negative;
  201. end else
  202. begin
  203. Positive;
  204. end;
  205. end;
  206.  
  207.  
  208. procedure TForm1.ButtonClick(Sender: TObject);
  209. var
  210. Letter:string;
  211. begin
  212. Letter := ((Sender as TButton).Caption);
  213. (Sender as TButton).Enabled := false;
  214. DoLetterCheck(LowerCase(Letter));
  215. Beurten := Beurten + 1;
  216. end;
  217.  
  218.  
  219. //De klikbare letter van het alfabet komen op het scherm.
  220. procedure TForm1.CreateABCLabelArray();
  221. var
  222. X: Integer;
  223. const
  224. ABC: array[0..25] of string =('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');
  225. begin
  226. SetLength(ABCLabelArray, 26);
  227. for X:=0 to (26 - 1) do//begint bij nul dus je doet -1.
  228. begin
  229. ABCLabelArray[X]:=TButton.Create(self); //Create
  230. With ABCLabelArray[X] do //dit houd in dat alles hieronder gelezen word als WLabelArray[X].Left:=X*40+100; etc.
  231. begin
  232. Left:=X*25+50;//Alle labels moeten zichtbaar zijn dus plaatsen we alle labels naast elkaar maar dan met 40 px ertussen.
  233. Top:=20;
  234. Width:=25;
  235. Caption:=ABC[X];//We gooien hier de juiste letter van het alfabet in, zie het ABC array.
  236. Visible:=true;
  237. Parent:=self;//Zodat hij op het scherm komt. Zonder kan wel is problemen opleveren.
  238. Tag:= X;//Ik geef de Tag property het element nummer mee van het array, klinkt verwarrend, maar dan kan ik dit later nog aanvragen indien nodig.
  239. Font.Size:=16;
  240. Font.Style:=Font.Style+[fsBold];
  241. Font.Color:=clBlue;
  242. Color:=clSilver;
  243. OnClick := ButtonClick;//Belangrijk... er moet wel iets gebeuren als er op een labelgeklikt word.
  244. end;
  245. end;
  246. end;
  247.  
  248. //Na het kiezen van een gamemode, moeten we de GUI klaarmaken.
  249. procedure SetUpGFX(number:integer);
  250. begin
  251. //ShowInterface(1);
  252. Form1.CreateWLabelArray(Number);
  253. end;
  254.  
  255.  
  256.  
  257.  
  258.  
  259. procedure TForm1.btn5Click(Sender: TObject);
  260. begin
  261. SetUpGFX(0);
  262. end;
  263.  
  264. procedure TForm1.btn8Click(Sender: TObject);
  265. begin
  266. SetUpGFX(1);
  267. end;
  268.  
  269. procedure TForm1.btn12Click(Sender: TObject);
  270. begin
  271. SetUpGFX(2);
  272. end;
  273.  
  274.  
  275. procedure TForm1.FormCreate(Sender: TObject);
  276. begin
  277. CreateABCLabelArray();
  278. //ShowInterface(0);
  279. ReverseB := false;
  280. end;
  281.  
  282. procedure TForm1.ReverseClick(Sender: TObject);
  283. begin
  284. ReverseB := not ReverseB;
  285. end;
  286.  
  287. procedure TForm1.ShowOffClick(Sender: TObject);
  288. var
  289. X:Integer;
  290. begin
  291. for X:=1 to 12 Do
  292. begin
  293. Step := X;
  294. DrawHanginNoob;
  295. Sleep(250);
  296. Update;
  297. end;
  298. end;
  299.  
  300.  
  301.  
  302. end.
Add Comment
Please, Sign In to add comment