Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Zufalls Zahl Spiel mit Hilfe (https://www.delphipraxis.net/158032-zufalls-zahl-spiel-mit-hilfe.html)

xDarkx 2. Feb 2011 22:38

Zufalls Zahl Spiel mit Hilfe
 
Sers,

So unser Lehrer hat uns eine Super Tolle.... Aufgabe gegeben :P

Wir sollten ein "Spiel" Programmieren wo eine Zahl von Delphi generiert wird und diese man dann Raten muss.
Bis hier hin habe ichs noch geschafft :)

Nun verlangt er aber von uns das wenn wir auf den Button "Hilf" klicken in der Memo erscheint in welchem Bereich die zahlt liegt.
z.B. von 20 bis 30
Das Problem ist allerdings das es nicht viele IF-Abfragen geben darf sondern wir das irgendwie Rechnen sollen und ich Kein Plan habe wie :P

Ebenfalls habe ich dazu programmiert das man mit Enter das Geschätzte abschicken kann und mit der Entferntaste das Memo wieder löschen.

Hier mal mein Momentaner Code soweit wie ich bin
Code:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    Edit1: TEdit;
    Button3: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
    procedure Edit1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    { Private-Deklarationen }
    x: integer;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  Memo1.Clear;
  Edit1.Text := '';

  Randomize;

  x := Random(100);

  Memo1.Lines.Add('Anfangen !!!!!!!!!!')

end;

procedure TForm1.Button1Click(Sender: TObject);
var y : Integer;
begin
    y := StrToInt(Edit1.Text);

    if y < x then Memo1.Lines.Add(IntToStr(y) + ' Zu Klein')
    else if y > x then Memo1.Lines.Add(IntToStr(y) + ' Zu Groß')
    else if y = x then Memo1.Lines.Add(IntToStr(y) + ' PERFEKTTTTT!!!!!!!');
end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if ord(key)=13 then begin
    Form1.Button1Click(self);
    Edit1.Text := '';
  end;
end;


procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if ord(key)=46 then begin
    Memo1.Clear;
    Memo1.Lines.Add('Anfangen !!!!!!!!!!')
  end;
end;

end.

Hoffe jemand kann mir helfen wie ich Weiter komme.

mfg

-Phantom- 2. Feb 2011 22:54

AW: Zufalls Zahl Spiel mit Hilfe
 
In der Schule haben wir die gleiche Aufgabe. Ich habs hinbekommen. Ein Tipp : Versuche es mal mit der REPEAT- Schleife, wenn du dann immernoch Probleme haben solltest werde ich dir weiterhelfen aber versuche es.

Aphton 2. Feb 2011 22:57

AW: Zufalls Zahl Spiel mit Hilfe
 
Edit: Wait!

x = 23
Hilfe = "Zahl liegt zwischen 20 und 30"

Vorgang:
Delphi-Quellcode:
UntereGrenze := ( x div 10 ) * 10;
ObereGrenze := UntereGrenze + 10;
UntereGrenze:
x (23) div 10 = 2
10*2 = 20

ObereGrenze:
UntereGrenze (20) + 10 = 30

Luckie 2. Feb 2011 22:58

AW: Zufalls Zahl Spiel mit Hilfe
 
Wieso Schleife? Die Zahl ist mal angenommen 20. Dann würde ich zehn Drauf addieren und zehn abziehen. Dann habe ich 10 und 30 und das wäre der Bereich, in der die Zahl liegt. Aufpassen muss man nur wenn bei der Addition oder Subtraktion die Ober- und/oder Untergrenze unterschritten wird. Das müsste man noch behandeln.

-Phantom- 2. Feb 2011 23:06

AW: Zufalls Zahl Spiel mit Hilfe
 
Delphi-Quellcode:
Repeat
geratenZ := InputBox('Zahlenraten','Bitte geben Sie eine beleibige Zahl von 1 bis 20 ein !','');
Until Strtoint(geratenZ) = zufallZ;

end;
So muss man die Zahl So lange eingeben bis die "geratenZ" = "zufallZ" ist. Und das mit den im welchen Bereich hat Lucky ja schon gesagt

haentschman 2. Feb 2011 23:07

AW: Zufalls Zahl Spiel mit Hilfe
 
Hallo und Willkommen in der DP :dp:

in der Variable X hast du ja den "gezogenen" Wert. Da brauchst du nur um den Wert einen Bereich zu definieren.
Vorschlag:
- deklariere 2 Variablen (MinX, MaxX) um den Bereich zu speichern.
- Fester bereich von 10 Ziffern
- die einfachste Variante wäre
Delphi-Quellcode:
MinX:= X-5;
  MaxX:= X+5;
// ist aber Quatsch, da der Benutzer das irgendwann spitzkriegt.
- schwieriger
Delphi-Quellcode:
// zusätzliche Variable X1 z.B
X1:= Random(10);
// mit der Variable X1 den Bereich nach oben und unten berechnen. Dabei die Sonderfälle beachten
// Bereich darf nicht größer sein als 100 und kleiner als 0
:hi:

xDarkx 2. Feb 2011 23:14

AW: Zufalls Zahl Spiel mit Hilfe
 
Ich habs gemacht wie Aphton beschrieben hat..
Und es funktioniert :)

Code:
procedure TForm1.Button3Click(Sender: TObject);
var UntereGrenze, ObereGrenze : Integer;
begin
UntereGrenze := ( x div 10 ) * 10;
ObereGrenze := UntereGrenze + 10;

    Memo1.Lines.Add('Zahl liegt zwischen ' + IntToStr(UntereGrenze) + ' und ' + IntToStr(ObereGrenze));

end;

Wie eine REPEAT- Schleife geht hatten wir bisher Leider noch nicht :(

Danke an alle fürs Helfen :)

haentschman 2. Feb 2011 23:17

AW: Zufalls Zahl Spiel mit Hilfe
 
Zitat:

Ich habs gemacht wie Aphton beschrieben hat..
...dann hat deine gezogene Zahl immer den gleichen Abstand zur oberen bzw. unteren Grenze. Wenn das ausreichnend ist geht das in Ordnung. Kniffliger ist es mit einem "dynamischen Abstand".
:hi:

xDarkx 2. Feb 2011 23:21

AW: Zufalls Zahl Spiel mit Hilfe
 
Er meinte wir sollen nur machen das da steht:
"Zahl ist zwischen 10 bis 20"
"Zahl ist zwischen 20 bis 30"

So mehr wollte er nicht :P

haentschman 2. Feb 2011 23:26

AW: Zufalls Zahl Spiel mit Hilfe
 
Die Variante mit dem div hat ja quasi einen dynamischen Abstand. Alles ist gut :zwinker:


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:25 Uhr.
Seite 1 von 2  1 2      

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