Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- unit Unit1;
- interface
- //Includes
- uses
- Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
- StdCtrls, Buttons, ExtCtrls;
- type
- TForm1 = class(TForm)
- btn5: TBitBtn;
- btn8: TBitBtn;
- btn12: TBitBtn;
- s5: TShape;
- s1: TShape;
- S8: TShape;
- s2: TShape;
- s3: TShape;
- s4: TShape;
- s6: TShape;
- S10: TShape;
- S7: TShape;
- S11: TShape;
- S9: TShape;
- Reverse: TBitBtn;
- ShowOff: TBitBtn;
- lblMessage: TStaticText;
- procedure CreateWLabelArray( numb:integer);
- procedure CreateABCLabelArray();
- procedure btn12Click(Sender: TObject);
- procedure btn8Click(Sender: TObject);
- procedure btn5Click(Sender: TObject);
- procedure ButtonClick(Sender: TObject);
- procedure FormCreate(Sender: TObject);
- function DoLetterCheck(Letter:string):boolean;
- procedure ShowOffClick(Sender: TObject);
- procedure ReverseClick(Sender: TObject);
- procedure DrawHanginNoob();
- Procedure ResetArrays();
- private
- { Private declarations }
- public
- { Public declarations }
- end;
- //Globale variablen.
- var
- //Je declareert het form, gebruikelijk.
- Form1: TForm1;
- //We declaren het WLabelArray die bevat het aantal labels voor het aantal lettters van het woord.
- WLabelArray: array of TLabel;
- //We declaren ook het ABCLabelArray omdat dit nodig is, we weten hier alleen de length al omdat A-Z altijd 26 letters zijn.
- ABCLabelArray: array of TButton;
- GeneratedWord: string;
- Beurten, Tijd, Step: Integer;
- ReverseB:Boolean;
- implementation
- {$R *.DFM}
- //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.
- procedure TForm1.CreateWLabelArray(numb:integer);
- var
- X, WLength: Integer;
- begin
- //Numb is een parameter die we doorkrijgen als de user op een bepaalde button klikt voor de moeilijkheids graad.
- //De drie moeilijkheidsgraden in een case, ook wel een switch statement genoemd.
- //Als Numb is 0 dan voert hij die code daarbij uit.
- //Bij de verschillende graden in moeilijkheid hebben we verschillende lengtes van arrays.
- WLength := 0;
- Case (numb) of
- 0: WLength := 5;
- 1: WLength := 8;
- 2: WLength := 12;
- end;
- //Onze array is bij het declaren in de global scope nog niet aan een vaste lengte toegekend.
- //Dat is goed want zoals je hierboven ziet kan het verschillen per graad/modus.
- SetLength(WLabelArray, Wlength);
- //We loopen nu door elk element van het WLabelArray om die op het form te zetten.
- //Ze bestaan namelijk nu nog helemaal niet!
- //We loopen tot de bepaalde lengte. en geven wat settings mee.
- for X:=0 to (Wlength - 1) do//begint bij nul dus je doet -1.
- begin
- WLabelArray[X]:=TLabel.Create(self); //Create
- With WLabelArray[X] do //dit houd in dat alles hieronder gelezen word als WLabelArray[X].Left:=X*40+100; etc.
- begin
- Left:=X*40+100;//Alle labels moeten zichtbaar zijn dus plaatsen we alle labels naast elkaar maar dan met 40 px ertussen.
- Top:=100;
- Caption:='X';//Is de tekst die je ziet.
- Visible:=true;
- Parent:=self;//Zodat hij op het scherm komt. Zonder kan wel is problemen opleveren.
- 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.
- Font.Size:=16;
- Font.Style:=Font.Style+[fsBold];
- Font.Color:=clBlue;
- end;
- end;
- end;
- procedure TForm1.DrawHanginNoob();
- begin
- if (not ReverseB) then
- begin
- if (Step > 0) then s1.visible:=true else s1.visible:=false;
- if (Step > 1) then s2.visible:=true else s2.visible:=false;
- if (Step > 2) then s3.visible:=true else s3.visible:=false;
- if (Step > 3) then s4.visible:=true else s4.visible:=false;
- if (Step > 4) then s5.visible:=true else s5.visible:=false;
- if (Step > 5) then s6.visible:=true else s6.visible:=false;
- if (Step > 6) then s7.visible:=true else s7.visible:=false;
- if (Step > 7) then s8.visible:=true else s8.visible:=false;
- if (Step > 8) then s9.visible:=true else s9.visible:=false;
- if (Step > 9) then s10.visible:=true else s10.visible:=false;
- if (Step > 10) then s11.visible:=true else s11.visible:=false;
- if (Step > 11) then lblMessage.visible := true else lblMessage.visible:=false;
- end else
- begin
- if (Step > 0) then s11.visible:=true else s11.visible:=false;
- if (Step > 1) then s10.visible:=true else s10.visible:=false;
- if (Step > 2) then s7.visible:=true else s7.visible:=false;
- if (Step > 3) then s9.visible:=true else s9.visible:=false;
- if (Step > 4) then s8.visible:=true else s8.visible:=false;
- if (Step > 5) then s6.visible:=true else s6.visible:=false;
- if (Step > 6) then s5.visible:=true else s5.visible:=false;
- if (Step > 7) then s4.visible:=true else s4.visible:=false;
- if (Step > 8) then s3.visible:=true else s3.visible:=false;
- if (Step > 9) then s2.visible:=true else s2.visible:=false;
- if (Step > 10) then s1.visible:=true else s1.visible:=false;
- if (Step > 11) then lblMessage.visible := true else lblMessage.visible:=false;
- end;
- end;
- procedure TForm1.ResetArrays();
- var
- X:Integer;
- begin
- for X:=0 to (Length(WLabelArray) - 1) do//begint bij nul dus je doet -1.
- begin
- With WLabelArray[X] do
- begin
- Caption:='X';
- end;
- end;
- for X:=0 to 25 do
- begin
- With ABCLabelArray[X] do
- begin
- Enabled := True;
- end;
- end;
- end;
- procedure Positive;
- begin
- //Letter toevoegen enz.
- end;
- procedure Negative;
- begin
- Inc(Step);
- if Step=12 then
- begin
- Form1.DrawHanginNoob;
- Inc(step);
- Form1.ResetArrays;
- Form1.DrawHanginNoob;
- MessageBox(HWND_DESKTOP, 'The Game, you just lost both.', 'THE GAME',ufMainUnit);
- Step := 0;
- end;
- Form1.DrawHanginNoob;
- //MessageBox(HWND_DESKTOP, 'Fail', 'FAIL',ufMainUnit);
- end;
- //Er is op een lekker geklikt, nu eens kijken of hij in het woord zit.
- function TForm1.DoLetterCheck(Letter:string):boolean;
- var
- X: Integer;
- Switch: boolean;
- begin
- Result := False;
- Switch := False;
- GeneratedWord := 'stuff';
- for X:=0 to (Length(GeneratedWord)-1) do
- begin
- Result := (Letter = GeneratedWord[X+1]);
- If Result then WLabelArray[X].Caption := GeneratedWord[X+1];
- if Result then
- begin
- Result:=false;
- Switch := True;
- end;
- end;
- if (not Switch) then
- begin
- Negative;
- end else
- begin
- Positive;
- end;
- end;
- procedure TForm1.ButtonClick(Sender: TObject);
- var
- Letter:string;
- begin
- Letter := ((Sender as TButton).Caption);
- (Sender as TButton).Enabled := false;
- DoLetterCheck(LowerCase(Letter));
- Beurten := Beurten + 1;
- end;
- //De klikbare letter van het alfabet komen op het scherm.
- procedure TForm1.CreateABCLabelArray();
- var
- X: Integer;
- const
- 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');
- begin
- SetLength(ABCLabelArray, 26);
- for X:=0 to (26 - 1) do//begint bij nul dus je doet -1.
- begin
- ABCLabelArray[X]:=TButton.Create(self); //Create
- With ABCLabelArray[X] do //dit houd in dat alles hieronder gelezen word als WLabelArray[X].Left:=X*40+100; etc.
- begin
- Left:=X*25+50;//Alle labels moeten zichtbaar zijn dus plaatsen we alle labels naast elkaar maar dan met 40 px ertussen.
- Top:=20;
- Width:=25;
- Caption:=ABC[X];//We gooien hier de juiste letter van het alfabet in, zie het ABC array.
- Visible:=true;
- Parent:=self;//Zodat hij op het scherm komt. Zonder kan wel is problemen opleveren.
- 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.
- Font.Size:=16;
- Font.Style:=Font.Style+[fsBold];
- Font.Color:=clBlue;
- Color:=clSilver;
- OnClick := ButtonClick;//Belangrijk... er moet wel iets gebeuren als er op een labelgeklikt word.
- end;
- end;
- end;
- //Na het kiezen van een gamemode, moeten we de GUI klaarmaken.
- procedure SetUpGFX(number:integer);
- begin
- //ShowInterface(1);
- Form1.CreateWLabelArray(Number);
- end;
- procedure TForm1.btn5Click(Sender: TObject);
- begin
- SetUpGFX(0);
- end;
- procedure TForm1.btn8Click(Sender: TObject);
- begin
- SetUpGFX(1);
- end;
- procedure TForm1.btn12Click(Sender: TObject);
- begin
- SetUpGFX(2);
- end;
- procedure TForm1.FormCreate(Sender: TObject);
- begin
- CreateABCLabelArray();
- //ShowInterface(0);
- ReverseB := false;
- end;
- procedure TForm1.ReverseClick(Sender: TObject);
- begin
- ReverseB := not ReverseB;
- end;
- procedure TForm1.ShowOffClick(Sender: TObject);
- var
- X:Integer;
- begin
- for X:=1 to 12 Do
- begin
- Step := X;
- DrawHanginNoob;
- Sleep(250);
- Update;
- end;
- end;
- end.
Add Comment
Please, Sign In to add comment