All pastes #33640 Raw Edit

Stuff

public text v1 · immutable
#33640 ·published 2005-12-14 12:10 UTC
rendered paste body
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.