Delphi-PRAXiS
Seite 3 von 5     123 45      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Das große Lotto-Spiel - Bet and Win (https://www.delphipraxis.net/81703-das-grosse-lotto-spiel-bet-win.html)

Martin K 2. Dez 2006 14:00

Re: Das große Lotto-Spiel - Bet and Win
 
Sorry, aber das ist doch absoluter Schwachsinn:
Delphi-Quellcode:
type
  TLottozahlen=array[1..1] of Integer;
Weißt Du wie ein array funktioniert?
Weißt Du für was das [1..1] steht?

//Edit:
Mein Vorschlag für eine Typendeklaration von Lottozahlen sähe so aus:
Delphi-Quellcode:
type
  TLottozahl = 1..49;
  TLottozahlen = array[1..6] of TLottozahl;

Namenloser 2. Dez 2006 14:05

Re: Das große Lotto-Spiel - Bet and Win
 
Ein array mit einem element?! sry, aber hääää?

Und wa sich einfach wissen möchte ist: Steht bei den Listboxen jeweils eine Listbox für eine Ziehung, oder jede Listbox für eine [b]Zahl aus einer Ziehung[b], und die reihen untereinander jeweils für eine neue zeihung?

Wenn letzteres der Fall ist, und dich einfach nur stört, dass die Zahlen dann zu klein sind, und nicht im Gleichen abstand, kannst du auch EINE listbox benutzen, und das ereignis ondrawitem (oder so ähnlich) benutzen, und den inhalt der listbox selber zeichnen.

edit: also, wenn du mich fragst, ist das projekt verkorxt. vielleicht wäre es besser noch mal völlig neu anzufangen, arrays zu verstehen und das bedienkonzept zu überdenken...

Balu der Bär 2. Dez 2006 14:07

Re: Das große Lotto-Spiel - Bet and Win
 
Ähm was war nochmal die eigentliche Frage in diesem Thread? :stupid:

Wenn es ums Speichern geht könntest du ganz einfach sowas machen:
Delphi-Quellcode:
var
  ini : TIniFile;
  i, g: Integer;
begin
  try
   ini := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'data.ini');
   for i := 1 to 6 do
    begin
      for g := 0 to (FindComponent('Listbox' + IntToStr(i)) as TListbox).Items.Count-1 do
       ini.WriteInteger('Listbox' + IntToStr(i), IntToStr(g), (FindComponent('Listbox' + IntToStr(i)) as TListbox).Items[g]);
     end;
   finally
    ini.Free;
end;
Ich habe den Code schnell getippt und nicht getestet, eigentlich sollte es aber in dieser Form gehen.

Martin K 2. Dez 2006 14:11

Re: Das große Lotto-Spiel - Bet and Win
 
Die Prozedur für eine Lottoziehung sähe mit meiner Typendeklaration dann so aus:

Delphi-Quellcode:
Procedure Zahlen_ermitteln(var Lottozahlen: TLottozahlen);
var
  i,j: Integer;
  zahl: TLottozahl;
  ok: boolean;
begin
  for i := 1 to 6 do
  begin
    ok := true;
    repeat
      zahl := random(49)+1;
      for j := 1 to i do
        ok := ok and (lottozahlen[j] <> zahl);
    until ok;
    Lottozahlen[i] := zahl;
  end;
end;
Zurück zum Thema (da hat Balu der Bär wohl recht :oops: ), dies ist eigentlich eine noch bessere Lösung für das speichern, zumal man dann alles in EINE INI-Datei speichern kann, also das von den Listboxen und von den Edits.

Jay15688 2. Dez 2006 14:14

Re: Das große Lotto-Spiel - Bet and Win
 
@Martin:

Klar ist das Schwachsinn und in der Schule hatten wir auch 1....6 aber ich habe es umgeändert, damit er pro Fenster eine Zahl ausgibt...und das war so am leichtesten, da ich wie gesagt nicht wirklich viel Ahnung habe nach 3 Monaten Info-Unterricht :(

Daher brauch ich auch immer so ausführliche Hilfen bzw am besten Beispiele, damit ich was von euren guten Ideen umsetzen kann!

Werde deine Prozedur direkt ausprobieren :)


@NamenLozer: Ja ganz genau! Ich meine zweiteres! Wenn das auch so geht, wäre das optimal! Geht dabei wie gesagt vorallem um die Optik...auch hier wäre ein Beispiel gut!


@Balu: Kann ich dann mit deinem ini Code trotzdem meinen normalen SaveDialog behalten?

@Ihr Drei: Ihr habt jetzt von mir die offizielle Erlaubnis mich auszulachen! ;)


Danke für eure Hilfe!


Durch eure Ideen und Wissen könnte das am Ende sogar was geben :)

Balu der Bär 2. Dez 2006 14:16

Re: Das große Lotto-Spiel - Bet and Win
 
Zitat:

@Balu: Kann ich dann mit deinem ini Code trotzdem meinen normalen SaveDialog behalten?
Natürlich. Statt
Delphi-Quellcode:
ini := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'data.ini');
einfach
Delphi-Quellcode:
if SaveDialog1.Execute then
begin
 ini := TIniFile.Create(SaveDialog1.Filename);
  //... der restliche Code
end;
//Edit: Niemand wird dich auslachen, ich kann dir nur raten es selbst zu versuchen und nicht deinem Lehrer den fertigen Code abzugeben, könnte sonst Probleme wenn du nicht genau weißt wie/was funktioniert. ;)

Hawkeye219 2. Dez 2006 14:25

Re: Das große Lotto-Spiel - Bet and Win
 
Hallo,

Delphi-Quellcode:
Procedure Zahlen_ermitteln(var Lottozahlen: TLottozahlen);
var
  i,j: Integer;
  zahl: TLottozahl;
  ok: boolean;
begin
  for i := 1 to 6 do
  begin
    ok := true;
    repeat
      zahl := random(49)+1;
//      for j := 1 to i do // Element i ist noch nicht initialisiert!
      for j := 1 to i - 1 do
        ok := ok and (lottozahlen[j] <> zahl);
    until ok;
    Lottozahlen[i] := zahl;
  end;
end;
bei einer Lottoziehung spielt das Glück zwar eine große Rolle, aber nicht initialisierte Feldelemente sollte man immer außen vor lassen.

Einen anderen Ansatz für eine Lottoziehung (mit Erklärung) findet man hier.

//Edit
Noch eine Frage: wenn die Variable "ok" einmal den Wert False hatte, kann sie dann jemals wieder den Wert True erhalten?

Gruß Hawkeye

Namenloser 2. Dez 2006 14:57

Re: Das große Lotto-Spiel - Bet and Win
 
ja, hab auch gerade gemerkt, dass "ok := true" UNTER "repeat" muss.

Namenloser 2. Dez 2006 15:15

Re: Das große Lotto-Spiel - Bet and Win
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich hab mal ein beispiel für dich geproggt.
Ich hab einige stellen offen gelassen, die musst du selbst proggen. (speichern+laden)
Es sollte aber mit dieser neuen Struktur einfacher sein, einen Speicher- u. Lademechanismus einzubauen.

(TPlayers kannst du ähnlich wie TZiehungen programmieren, falls du diese Struktur übernehmen willst!)
Außerdem wäre es gut, eine Sortier-Funktion mit einzubauen, aber das überlasse ich dir. (oder du nimmst diese methode: http://www.dsdt.info/tipps/?id=470 )

Jay15688 2. Dez 2006 16:32

Re: Das große Lotto-Spiel - Bet and Win
 
Vielen Dank NamenLozer für das Beispiel! Gefällt mir sehr gut und ich werde in der Tat daran weiterproggen!

Ebenfalls vielen Dank an alle anderen für die hilfreichen Tipps! Werde eine Menge berücksichtigen!

Aber trotzdem glaube ich nicht, dass ich jetzt alles bis zum Ende alleine hinkriegen werde, sodass ich heute abend oder morgen wieder hier rein posten werde! Würde mich freuen, wenn ihr hin und wieder reinschaut und mir weiterhin so tatkräftig zur Seite steht!


Danke an alle!! :kiss:


MfG Jay


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:17 Uhr.
Seite 3 von 5     123 45      

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