Zahlenraten

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Thund3rC4k3
Beiträge: 2
Registriert: Sa 15. Feb 2014, 15:17

Zahlenraten

Beitrag von Thund3rC4k3 »

Hallo,

ich habe gerade erst meine ersten Programmieranfänge gemacht und ersuche nun eure Hilfe.
Ich habe ein Zahlenraten Spiel geschrieben, es ist jetzt eingestellt das man zwischen 0-9 raten soll.
Es funktioniert auch das es schreibt "größer" oder "kleiner", nur ab der Zahl "11" schreibt es trotzdem "größer".

Code: Alles auswählen

unit Unit1;
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,
  StdCtrls;
 
type
 
  { TForm1 }
 
  TForm1 = class(TForm)
    versucheanzeige: TLabel;
    status: TLabel;
    starten: TButton;
    zahl_pruefen: TButton;
    Edit1: TEdit;
    Timer1: TTimer;
    procedure startenClick(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure zahl_pruefenClick(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;
 
var
  Form1: TForm1;
  zufall: integer;
  versuche: integer;
 
implementation
 
{$R *.lfm}
 
{ TForm1 }
 
procedure TForm1.startenClick(Sender: TObject);
begin
  Randomize;
  versuche := 0;
  zufall := random(10);
end;
 
procedure TForm1.Timer1Timer(Sender: TObject);
begin
     versucheanzeige.caption := 'Versuche: ' + IntToStr(versuche);
end;
 
procedure TForm1.zahl_pruefenClick(Sender: TObject);
begin
  versuche := versuche +1;
  if Edit1.Text = IntToStr(zufall) then
  status.caption := 'Status: richtig!'
  else if
  Edit1.Text < IntToStr(zufall) then
  status.caption := 'Status: Zahl ist größer'
  else if
  Edit1.Text > IntToStr(zufall) then
  status.caption := 'Status: Zahl ist kleiner';
end;
 
end.
 
hier mein Code.

Viele Grüße Thund3rC4k3

wp_xyz
Beiträge: 5153
Registriert: Fr 8. Apr 2011, 09:01

Re: Zahlenraten

Beitrag von wp_xyz »

Dein Fehler ist, dass du die Strings vergleichst. Das ist wie bei den Namen in einem Telefonbuch, und da kommt "A" vor "AA", weil "A" kürzer ist - genauso kommt dann "1" vor "11". Vergleiche stattdessen die Zahlen-Werte: "zufall" ist schon ein Integer, daher musst du nur noch den Text im Edit-Feld in eine Zahl umwandeln. Die dafür benötigte Funktion will ich nicht verraten, aber die umgekehrte Funktion für die Umwandlung eines Integer in einen String hast du bereits verwendet...

Thund3rC4k3
Beiträge: 2
Registriert: Sa 15. Feb 2014, 15:17

Re: Zahlenraten

Beitrag von Thund3rC4k3 »

wp_xyz hat geschrieben:Dein Fehler ist, dass du die Strings vergleichst. Das ist wie bei den Namen in einem Telefonbuch, und da kommt "A" vor "AA", weil "A" kürzer ist - genauso kommt dann "1" vor "11". Vergleiche stattdessen die Zahlen-Werte: "zufall" ist schon ein Integer, daher musst du nur noch den Text im Edit-Feld in eine Zahl umwandeln. Die dafür benötigte Funktion will ich nicht verraten, aber die umgekehrte Funktion für die Umwandlung eines Integer in einen String hast du bereits verwendet...
Danke, dass du es mir nicht verraten hast ! :-) habe mal an die Möglichkeit gedacht, habe es aber nicht beachtet, da ich dachte es wäre so schon richtig. IntToStr -> StrToInt + ein paar Klammern ändern und schon ging es.
Vielen Dank !

Antworten