Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi zahlenraten (https://www.delphipraxis.net/80090-zahlenraten.html)

Mikamuh 2. Nov 2006 21:00


zahlenraten
 
HI leutz,
unzwar habe ich erstens keinen plan ob das hier der richtige bereich is, wenn nich dann werden das die admin hoffentlich richten :D


zu meinem problem:
ich muss für informatik ein programm schreiben in dem eine zufallzahl generiert wird und ich dann in ein edit fenster zahlen eingeben kann. das proggy gibt mir nach überprüfung der zahl entweder "zahl zu klein" oder eben "zu groß" aus.
als letztes sollte man mittels eines reset buttons eine neue zahl generieren können. das ganze kann man eigentlich unter zahlen raten zusammenfassen.

ich erwarte jetzt nicht das ihr mir den gesamten quellcode runterschreibt, aber vllt könnt ihr mir ein paar denkanstöße oder vllt links zu tutorials geben.


mfg michi

3_of_8 2. Nov 2006 21:06

Re: Neuling + Problem
 
Wie wärs, wenn du anfängst und fragst dann, wenn du nicht weiterweißt?

richie 2. Nov 2006 21:06

Re: Neuling + Problem
 
Du solltest dir die Prozedur Delphi-Referenz durchsuchenRandomize und die Funktion Delphi-Referenz durchsuchenRandom mal angucken. :zwinker:

Phoenix 2. Nov 2006 21:13

Re: Neuling + Problem
 
Bitte ändere Deinen Titel in etwas aussagekräftiges. Benutze dafür bitte den Edit-Button neben Deinem Beitrag, Danke.

Mikamuh 2. Nov 2006 21:46

Re: zahlenraten
 
ok..also immer wenn ich versuche mein programm zu starten kommt dieser fehler:


[Fehler] Unit1.pas(35): Anweisung erwartet, aber '=' gefunden


Delphi-Quellcode:
procedure TZahl.FormCreate(Sender: TObject);
begin
   RANDOMIZE;
   ZufallsZahl.Caption ;= *an dieser stelle tritt der fehler auf* IntToStr(Random(101));
end;

procedure TZahl.BokClick(Sender: TObject);
var I:Integer;
begin
I:=StrToInt(Zahl.Text);
If I>StrToInt(Zufallszahl.Caption) Then
                Lausgabe.Caption:='eingebene Zahl ist zu groß!';
If I<StrToInt(Zufallszahl.Caption) Then
                Lausgabe.Caption:='eingebene Zahl ist zu klein!';
If I=StrToInt(Zufallszahl.Caption) Then
                Begin
                  Lausgabe.Caption:='Richtig geraten!';
                  Zufallszahl.visible:=TRUE;
                End;
end;

end.
wer hat ne idee?

mkinzler 2. Nov 2006 21:47

Re: zahlenraten
 
Delphi-Quellcode:
ZufallsZahl.Caption := IntToStr(Random(101));

Mikamuh 2. Nov 2006 21:52

Re: zahlenraten
 
dankeschön

Mikamuh 2. Nov 2006 22:05

Re: zahlenraten
 
weitergehts... nächster fehler:

http://img69.imageshack.us/img69/194...led1ee2.th.jpg

code ist noch der selbe wie oben genannt nur mit der verbesserung von mkinzler



mfg michi

mkinzler 2. Nov 2006 22:09

Re: zahlenraten
 
Der Fehler sagt doch alles, der wert in Zahl.Text/ZufallsZahl.Text ('Zahl') kann nicht in einen Integer gewandelt werden.
Entwder Konvertierungen in try..except einschließen oder TryStrToInt verwenden.

Mikamuh 2. Nov 2006 22:15

Re: zahlenraten
 
bei trystrtoint kommt "[Fehler] Unit1.pas(42): Nicht genügend wirkliche Parameter"

mkinzler 2. Nov 2006 22:17

Re: zahlenraten
 
Zitat:

Zitat von Mikamuh
bei trystrtoint kommt "[Fehler] Unit1.pas(42): Nicht genügend wirkliche Parameter"

Dann schu dir mal die Hilfe dazu an:
Delphi-Quellcode:
function TryStrToInt(const s: string; out i : integer): boolean;

Jakob3 2. Nov 2006 22:28

Re: zahlenraten
 
Das spiel hab ich auch schon gesschrieben. Hier mein Quelltext:

Delphi-Quellcode:
unit spiel;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Edit1: TEdit;
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;
const Max = 15;
var
  Form1: TForm1;
  Eingabe, Versuche, Zufall: Integer;
  spielEnde: Boolean;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  if spielEnde then Close;
  try
    Edit1.SetFocus;
    Eingabe := StrToInt (Edit1.Text);
    inc (Versuche);
    if Versuche <= Max then
     Label2.Caption := IntToStr (Versuche) + '. Versuche:'
    else
     Label2.Caption := 'Es reicht!';
    if Eingabe = Zufall then label1.Caption := 'Richtig geraten!';
    if Eingabe < Zufall then Label1.Caption := 'Deine Zahl ist zu klein!';
    if Eingabe > Zufall then Label1.Caption := 'Deine Zahl ist zu groß';
    if (Eingabe = Zufall) or (Versuche > Max) then
    begin
    Button1.Caption := 'Ende';
    SpielEnde := true;
    end;

  except
    Label1.Caption := 'Quatsch!';
    end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  randomize;
  Zufall := random(1000) + 1;
  Versuche := 1;
  SpielEnde := false;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
   Edit1.SetFocus;
   Label1.Caption := 'Ich denke mir eine neue Zahl aus!';
   Label2.Caption := 'Rate mal!';
   Button1.Caption := 'OK';
   Zufall := random(1000) + 1;
   Versuche := 1;
   SpielEnde := false;

end;

end.
Hoff es hilft dir weiter :cheers:

3_of_8 2. Nov 2006 23:13

Re: zahlenraten
 
Kurzer Hinweis, damit du dich nicht wunderst: Exceptions werden, auch wenn du sie mit try...except abfängst, trotzdem im Debugger gemeldet.

mkinzler 3. Nov 2006 07:03

Re: zahlenraten
 
Ich würde das Auftreten von Exception verhindern, in dem ich die jeweilen Try<Typ>To<Typ>-Varianten nehme.

Klaus01 3. Nov 2006 07:12

Re: zahlenraten
 
Du könntest auch den Ansatz versuchen, nur die Eingabe von Zahlen im Editfeld
zuzulassen.

Delphi-Quellcode:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if not (key in ['0'..'9',#8]) then
    key:=#0;
end;
Grüße
Klaus


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:27 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz