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.