Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Spiel: Gedächtnistrainer (https://www.delphipraxis.net/66617-spiel-gedaechtnistrainer.html)

fritte 1. Apr 2006 13:07


Spiel: Gedächtnistrainer
 
Hallo zusammen,

ich hoffe ihr könnt bzw. wollt mir bei meinem Problem weiter helfen.

Es soll ein Gedächtnistrainer programmiert werden, der folgendermaßen funktionieren soll:
Der Computer schreibt eine Folge von Ziffern auf, die nach 3 Sekunden gelöscht wird. Der Spieler muss sich diese Folge merken und anschließend eingeben. Wenn er richtig geraten hat, wird die Folge um eine Ziffer verlängert. Das Spiel läuft so lange, bis die Ziffernfolge falsch eingetippt wird.

Hierzu mein Quelltext (ist nicht wirklich großartig, was ich bisher geschaft hab :oops: )


Delphi-Quellcode:
unit ZusatzU;

interface

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

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Button1: TButton;
    Button2: TButton;
    Timer1: TTimer;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
  folge:integer;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
    zufallszahl:Integer;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var zahl, zufallszahl:integer;

begin
zahl:=StrToInt(Edit1.Text);
timer1.Enabled:=false;
if Edit2.Text=Edit1.Text then
  begin
    showmessage('RICHTIG');
    zufallszahl:=zufallszahl*10+random(10)
  end
else
  begin
    Edit1.Text:='';
    Edit2.Text:='';
    showmessage('Wie lautet nun die zahlenfolge?');
  end
end;

procedure TForm1.Button2Click(Sender: TObject);
var zufallszahl:integer;
begin
randomize;
zufallszahl:=Random(800)+100;
Edit1.Text:=IntToStr(zufallszahl);
timer1.Enabled:=true;
end;

end.
Jetzt werden die ersten drei zahlen ausgegeben und nach 3 Sekunden gelöscht, und eine message gezeigt.
möchte man nun die Zahlenfolge eingeben, stürzt dass ganze ab.
Ich hätte das gaze vielleicht besser ander machen sollen...

Für die Profies unter euch ist mein problem vermutlich banal :mrgreen:

Vielen Dank schon mal für eure Hilfe.

Ratte 1. Apr 2006 13:13

Re: Spiel: Gedächtnistrainer
 
Du hast die Variabl zufallszahl einmal global definiert und dann in jeder procedure nochmal. Das muss quasi murks geben!

fritte 1. Apr 2006 13:23

Re: Spiel: Gedächtnistrainer
 
Wo hatte ich blos wieder meinen kopf? :roll:

Das prog ist leider immer noch weit davon entfernt, wirklich zu funktionieren.

Nicodius 1. Apr 2006 13:25

Re: Spiel: Gedächtnistrainer
 
Zitat:

Wenn er richtig geraten hat,
wenn er ratet hat er doch eh schon irgendwas falsch gemacht :lol:


ich mach mal schnell nen code für dich

fritte 1. Apr 2006 13:32

Re: Spiel: Gedächtnistrainer
 
haha.... :-D ,mein ausdruck lässt wohl was zu wünschen übrig.
ich kauf mir gleich mal ne tüte deutsch :mrgreen:

danke, danke, danke, danke, danke, danke...

Nicodius 1. Apr 2006 13:43

Re: Spiel: Gedächtnistrainer
 
Delphi-Quellcode:
var
  Form1: TForm1;
  anzZ : Integer = 1;
  zZ : Integer;
implementation

{$R *.dfm}

Function MakeZZ(anzZ : Integer) : String;
var str : String;
    i : Integer;
begin
  str := '';
  if anzZ = 1 then str := IntTostr(random(100))
  else
  begin
    for i := 1 to anzZ do
      str := str + IntTostr(random(100)) + ',';
    delete(Str,Length(Str),1);
  end;
  result := str;

  end;
procedure TForm1.FormCreate(Sender: TObject);
begin
  randomize;
  label1.Caption := MakeZZ(anzZ);
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
  if edit1.Text = label1.Caption then
  begin
    Showmessage('Richtig');
    inc(anzZ);
    Label1.Caption := MakeZZ(anzZ);
    edit1.Text := '';
    label1.Visible := true;
  end
  else
    Showmessage('Falsch  Ergebnis:' + IntToStr(anzZ));
  Timer1.Enabled := true;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  label1.visible := false;
  Timer1.Enabled := false;
end;
dürfte gehen - ist natürlich unsauber programmiert aber auf die schnelle gings ned so ;)
gebraucht wird auf dem form 1 button, 1 label, 1 edit und ein timer

grüße Nico

fritte 1. Apr 2006 13:47

Re: Spiel: Gedächtnistrainer
 
Vielen herzlichen Dank, hatte nicht mit ner so schnellen Reaktion auf meine Frage/Bitte gerechnet.
Danke, dass du dir die Zeit genommen hast Nicodius.

Nicodius 1. Apr 2006 13:48

Re: Spiel: Gedächtnistrainer
 
kein problem - bei unverständnissen einfach nachfragen ;)


aja ich hab den code nochmal editiert dsa Timer1.Enabled := true; gehört am ende von button1.click hin ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:35 Uhr.

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