unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Menus, ComCtrls, Buttons, ExtCtrls, strUtils ; type TForm1 = class(TForm) Text: TEdit; SvaretOrd: TEdit; Points: TEdit; txt_points: TLabel; txt_rul: TLabel; Rul: TEdit; Label1: TLabel; MainMenu1: TMainMenu; Spil1: TMenuItem; NytSpil1: TMenuItem; Highscore1: TMenuItem; SlutSpil1: TMenuItem; StatusBar1: TStatusBar; Gaet: TSpeedButton; Vokal: TSpeedButton; procedure GaetClick(Sender: TObject); procedure VokalClick(Sender: TObject); procedure NytSpil1Click(Sender: TObject); procedure SlutSpil1Click(Sender: TObject); procedure Highscore1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure TextKeyPress(Sender: TObject; var Key: Char); private { Private declarations } public { Public declarations } end; var Form1 : TForm1; Ord, Svar, Player : String; Points, Rul : Integer; Result : Boolean; highscoreFile : TextFile; string_array : array[1..3] of array[1..2] of string; const Vokaler = ['A', 'E', 'I', 'O', 'U', 'Y', 'Æ', 'Ø', 'Å']; Konsonanter = ['B', 'C', 'D', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'V', 'W', 'X', 'Z']; implementation {$R *.dfm} uses highscore; procedure AfslutSpil(); var highscoreFile : TextFile; begin AssignFile(highscoreFile, 'highscore.txt'); Reset(highscoreFile); WriteLn(Player+';'+IntToStr(points)+';'); CloseFile(highscoreFile); Form1.Gaet.Enabled:= False; Form1.Vokal.Enabled:= False; end; {Denne procedure finder ud af hvor mange point man skal have} procedure rulHjul(); var Valg: Integer; begin Valg:= Random(12); case Valg of 0: begin Form1.Rul.Text:= IntToStr(100); end; 1..11: begin Form1.Rul.Text:= IntToStr(Valg * 100 + 100); end; end; end; {Denne funktion checker om et tegn har været brugt før} function Brugt(Tegn: Char) : Boolean; var Svar: String; I: Integer; Fundet: Boolean; begin Svar:= Form1.SvaretOrd.Text; Fundet:= False; for I:=1 to Length(Svar) do if (Tegn = Svar[I]) then begin Fundet:= True; Break; end; Result:= Fundet; end; {Denne procedure henter et nyt ord til spillet} procedure nytOrd(); var i: Integer; begin Form1.SvaretOrd.Text:= ''; Ord:= 'UOPLYST'; for i:= 1 to Length(ord) do Svar:= Svar + '-'; Form1.SvaretOrd.Text:= Svar; end; {Denne procedure skriver en fejl til brugeren} procedure fejl(Fejl: String); begin messageBeep(1); showMessage(Fejl); end; {Denne procedure opdatere points} procedure opdaterPoints(Points: Integer; Slags: String); var temp_points: Integer; begin temp_points:= strToInt(Form1.Points.Text); if (Slags = 'Konsonant') then begin temp_points:= temp_points + Points; Form1.Points.Text:= intToStr(temp_points); end else if (Slags = 'Vokal') then begin temp_points:= temp_points - 100; Form1.Points.Text:= intToStr(temp_points); end end; {Denne procedure checker om man har gættet rigtigt} procedure checkOrd(Gaet: String); begin if (Gaet = Ord) then begin Form1.SvaretOrd.Text:= Ord; Form1.Gaet.Enabled:= False; Form1.Vokal.Enabled:= False; showMessage('Rigtigt! Du vandt ' + Form1.Points.Text + '.'); end else begin Form1.Points.Text:= '0'; fejl('Forkert! Du gik fallit.'); end; AfslutSpil(); end; {Denne procedure checker vores ord indeholder det indtastet bogstav} procedure checkBogstav(Tegn: Char; Slags: String); var Svar: String; x: Integer; Fundet: Integer; begin Fundet:= 0; Svar:= Form1.SvaretOrd.Text; for x:= 1 to Length(Ord) do begin if (Tegn = Ord[x]) then begin Svar[x]:= Tegn; Fundet:= Fundet+1; end; end; if (Brugt(Tegn)) then fejl('Dette tegn er allerede blevet brugt en gang') else begin if (Slags = 'Vokal') then if (strToInt(Form1.Points.Text) - 100 >= 0) then begin showMessage(Tegn + ' blev fundet ' + IntToStr(Fundet) + ' gange'); Form1.SvaretOrd.Text:= Svar; end else fejl('Du har ikke nok points til at købe en vokal') else begin showMessage(Tegn + ' blev fundet ' + IntToStr(Fundet) + ' gange'); Form1.SvaretOrd.Text:= Svar; end; if (Slags = 'Konsonant') then opdaterPoints(StrToInt(Form1.Rul.Text)*Fundet, 'Konsonant') else if (Slags = 'Vokal') then begin if (strToInt(Form1.Points.Text) - 100 >= 0) then opdaterPoints(0, 'Vokal'); end; end; end; {Denne procedure håndtere om mar har indtastet et enkelt bogstav og ikke et helt ord eller et tomt felt} procedure TForm1.VokalClick(Sender: TObject); begin if (Length(Form1.Text.Text) > 1) then {For langt, char, ikke string!} fejl('Du kan kun købe en vokal af gangen') else if (Length(Form1.Text.Text) = 0) then {Et tomt felt kan man jo ikke gætte på...} fejl('Du skal indtaste en vokal') else if (Length(Form1.Text.Text) = 1) then begin {Check om bogstavet er en vokal og gæt} if Form1.Text.Text[1] in Vokaler then checkBogstav(Form1.Text.Text[1], 'Vokal') else fejl('Dette tegn er ikke en vokal'); end; end; {Denne procedure håndtere om man vil gætte på et enkelt bogstav eller et helt ord og kaldet derefter den rigtige funktion} procedure TForm1.GaetClick(Sender: TObject); begin if (Length(Form1.Text.Text) > 1) then {Udfør et gæt af et helt ord} checkOrd(Form1.Text.Text) else if (Length(Form1.Text.Text) = 0) then {Intet indtastet} fejl('Du skal indtaste en konsonant eller et ord') else if (Length(Form1.Text.Text) = 1) then begin {Check om bogstavet er en konsonant og gæt} if Form1.Text.Text[1] in Konsonanter then begin rulHjul(); checkBogstav(Form1.Text.Text[1], 'Konsonant'); end else fejl('Dette tegn er ikke en konsonant'); end; end; procedure TForm1.NytSpil1Click(Sender: TObject); begin Form1.SvaretOrd.Text:= ''; nytOrd(); Form1.Points.Text:= '0'; Form1.Rul.Text:= '0'; Form1.Gaet.Enabled:= True; Form1.Vokal.Enabled:= True; end; procedure TForm1.SlutSpil1Click(Sender: TObject); var buttonSelected: Integer; begin beep; buttonSelected:= MessageDlg ('Are you sure you want to quit?', mtConfirmation, [mbYes, mbNo], 0); if (buttonSelected = mrYes) then close; end; procedure TForm1.Highscore1Click(Sender: TObject); begin HighscoreForm.Show end; procedure TForm1.FormCreate(Sender: TObject); begin repeat Player:= InputBox('Enter Name', 'Please enter your name', 'Guest'); until Player<> ''; randomize; nytOrd(); end; procedure TForm1.TextKeyPress(Sender: TObject; var Key: Char); begin if (key = chr(13)) then Gaet.OnClick(sender); end; end.