AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Das große Lotto-Spiel - Bet and Win

Ein Thema von Jay15688 · begonnen am 2. Dez 2006 · letzter Beitrag vom 3. Dez 2006
Antwort Antwort
Seite 2 von 5     12 34     Letzte »    
Jay15688

Registriert seit: 10. Nov 2006
25 Beiträge
 
#11

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

  Alt 2. Dez 2006, 12:33
Oben im ersten Post ist der gesamte Quellcode.

Wir haben halt in der Schule gelernt, wie man in einer ListBox per Zufall irgendwelche Zahlen ausgibt. An diesem Beispiel hat er uns den array erklärt, falls ich das richtig in Erinnerung habe. Und nun ist mein Lehrer auf die glorreiche Idee gekommen uns eine Woche Zeit zu geben, in der wir jetzt basierend auf der Listbox und den Zufallszahlen ein Lottospiel programmieren sollen.

Vllt. verstehst du das ganze ja besser, wenn du dir den Quellcode ansiehst. Da ich Delphi-Neuling bin, weiß ich auch nicht genau, welche Alternative zur ListBox in diesem Fall sinnvoll wären!

P.S: Laden tue ich die Daten über einen OpenDialog:

Zitat:
procedure TForm1.Spielladen1Click(Sender: TObject);
begin
OpenDialog1.Title := 'Spiel laden';
OpenDialog1.FileName := '';
OpenDialog1.Filter := '.sav';
if OpenDialog1.Execute then
Listbox1.Items.LoadFromFile(OpenDialog1.FileName);
Listbox2.Items.LoadFromFile(OpenDialog1.FileName);
Listbox3.Items.LoadFromFile(OpenDialog1.FileName);
Listbox4.Items.LoadFromFile(OpenDialog1.FileName);
Listbox5.Items.LoadFromFile(OpenDialog1.FileName);
Listbox6.Items.LoadFromFile(OpenDialog1.FileName);
end;

MfG Jay
  Mit Zitat antworten Zitat
Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#12

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

  Alt 2. Dez 2006, 12:52
Wie wäre es denn, wenn Du jede ListBox in eine extra Datei speicherst?

Zum Beispiel so:

Speichern:
Delphi-Quellcode:
procedure TForm1.Spielspeichern1Click(Sender: TObject);
begin
  if SaveDialog1.Execute then
  begin
    Listbox1.Items.SaveToFile(ChangeFileExt(SaveDialog1.FileName,'.list1'));
    Listbox2.Items.SaveToFile(ChangeFileExt(SaveDialog1.FileName,'.list2'));
    Listbox3.Items.SaveToFile(ChangeFileExt(SaveDialog1.FileName,'.list3'));
    Listbox4.Items.SaveToFile(ChangeFileExt(SaveDialog1.FileName,'.list4'));
    Listbox5.Items.SaveToFile(ChangeFileExt(SaveDialog1.FileName,'.list5'));
    Listbox6.Items.SaveToFile(ChangeFileExt(SaveDialog1.FileName,'.list6'));
  end;
end;
Laden:
Delphi-Quellcode:
procedure TForm1.Spielladen1Click(Sender: TObject);
begin
  if OpenDialog1.Execute then
  begin
    Listbox1.Items.LoadFromFile(ChangeFileExt(OpenDialog1.FileName,'.list1'));
    Listbox2.Items.LoadFromFile(ChangeFileExt(OpenDialog1.FileName,'.list2'));
    Listbox3.Items.LoadFromFile(ChangeFileExt(OpenDialog1.FileName,'.list3'));
    Listbox4.Items.LoadFromFile(ChangeFileExt(OpenDialog1.FileName,'.list4'));
    Listbox5.Items.LoadFromFile(ChangeFileExt(OpenDialog1.FileName,'.list5'));
    Listbox6.Items.LoadFromFile(ChangeFileExt(OpenDialog1.FileName,'.list6'));
  end;
end;
Anmerkung:
Hier wird für jede Datei eine eigene Endung verwendet, *.list1 usw.
Delphi-Referenz durchsuchenChangeFileExt ändert die Dateiendung, d.h. wenn beim Öffnen eine von den 6 Dateien ausgewählt wird, wird auch sichergestellt, dass jede der Listen trotzdem seine eingene Datei (mit der eigenen Endung) bekommt.

P.S.:
Wenn Du den Code einrückst (so wie in meinen Beispielen) wird es übersichtlicher.
Wenn mehrere Befehle zu einer IF-Abfrage gehören, musst Du diese in einen begin/end-Block schreiben.

//Edit:
Klammern korrigiert
Mit den Menschen ist es wie mit Computern -
es gibt Nullen und Einsen.
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#13

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

  Alt 2. Dez 2006, 12:53
Bist du sicher, dass dein info-Lehrer nicht eher EINE listbox gemeint hat, bei der in jeder zeile eine Ziehung steht?
So etwa...
Zitat:
Ziehung1: 7, 10, 23, 35, 36, 47
Ziehung2: 4, 8, 17, 22, 28, 32
Ziehung3: 5, 23, 24, 39, 42, 48
...
  Mit Zitat antworten Zitat
Jay15688

Registriert seit: 10. Nov 2006
25 Beiträge
 
#14

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

  Alt 2. Dez 2006, 13:10
@Martin K.

Vielen Dank! Es funktioniert einwandfrei! Du hattest in deinem Code hinten in jeder Zeile noch eine ")" vergessen, aber das war dann das kleinste Problem und sogar für einen Noob wie mich zu lösen! Besten Dank schonmal! Später muss ich ja noch mehr Dinge speichern. Zum Beispiel die abgegebenen Tipps der einzelnen Spieler. Sollte ich das genauso machen oder hast du da eine Idee? die Tipps werden über Edit-Felder abgegeben. Vielen Dank!


@NamenLozer: Ja wir hatten es ursprünglich nur in einer ListBox, wobei es mir so optisch viel besser gefällt und es auch übersichtlicher und benutzerfreundlicher ist!


Ich habe oben ja noch ein zweites Problem beschrieben. Sollte einer von euch dazu was sagen können, würde ich mich sehr freuen! Wie ich die abgegebenen Tipps in den Edit Feldern mit den Werten aus den Listboxen vergleichen kann! Wie im Lotto halt...


Was mir auch noch einfällt: Wie könnte ich hinkriegen, dass bei den sechs Listbox-Ziehungen keine Zahl doppelt gezogen werden kann? Anders wäre das etwas unreal

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
Var
   Lottozahlen:TLottozahlen;

   Procedure Zahlen_ermitteln(var Lottozahlen:TLottozahlen);
   var i:integer;
   begin
   randomize;
   for i:=1 to 1 do
   Lottozahlen[i]:=random(49)+1;
   end;

   procedure Zahlen_ausgeben(Lottozahlen:TLottozahlen);
   var i:integer;
   begin
   for i:=1 to 1 do
   ListBox1.Items.Add(IntToStr(Lottozahlen[i]));
   end;

begin
Zahlen_ermitteln(Lottozahlen);
Zahlen_ausgeben(Lottozahlen);
end;

procedure TForm1.Button2Click(Sender: TObject);
Var
   Lottozahlen:TLottozahlen;

   Procedure Zahlen_ermitteln(var Lottozahlen:TLottozahlen);
   var i:integer;
begin
   randomize;
   for i:=1 to 1 do
   Lottozahlen[i]:=random(49)+1;
   end;

   procedure Zahlen_ausgeben(Lottozahlen:TLottozahlen);
   var i:integer;
   begin
   for i:=1 to 1 do
   ListBox2.Items.Add(IntToStr(Lottozahlen[i]));
   end;

begin
Zahlen_ermitteln(Lottozahlen);
Zahlen_ausgeben(Lottozahlen);
end;

procedure TForm1.Button3Click(Sender: TObject);
Var
   Lottozahlen:TLottozahlen;

   Procedure Zahlen_ermitteln(var Lottozahlen:TLottozahlen);
   var i:integer;
begin
   randomize;
   for i:=1 to 1 do
   Lottozahlen[i]:=random(49)+1;
   end;

   procedure Zahlen_ausgeben(Lottozahlen:TLottozahlen);
   var i:integer;
   begin
   for i:=1 to 1 do
   ListBox3.Items.Add(IntToStr(Lottozahlen[i]));
   end;

begin
Zahlen_ermitteln(Lottozahlen);
Zahlen_ausgeben(Lottozahlen);
end;

procedure TForm1.Button4Click(Sender: TObject);
Var
   Lottozahlen:TLottozahlen;

   Procedure Zahlen_ermitteln(var Lottozahlen:TLottozahlen);
   var i:integer;
begin
   randomize;
   for i:=1 to 1 do
   Lottozahlen[i]:=random(49)+1;
   end;

   procedure Zahlen_ausgeben(Lottozahlen:TLottozahlen);
   var i:integer;
   begin
   for i:=1 to 1 do
   ListBox4.Items.Add(IntToStr(Lottozahlen[i]));
   end;

begin
Zahlen_ermitteln(Lottozahlen);
Zahlen_ausgeben(Lottozahlen);
end;

procedure TForm1.Button5Click(Sender: TObject);
Var
   Lottozahlen:TLottozahlen;

   Procedure Zahlen_ermitteln(var Lottozahlen:TLottozahlen);
   var i:integer;
begin
   randomize;
   for i:=1 to 1 do
   Lottozahlen[i]:=random(49)+1;
   end;

   procedure Zahlen_ausgeben(Lottozahlen:TLottozahlen);
   var i:integer;
   begin
   for i:=1 to 1 do
   ListBox5.Items.Add(IntToStr(Lottozahlen[i]));
   end;

begin
Zahlen_ermitteln(Lottozahlen);
Zahlen_ausgeben(Lottozahlen);
end;

procedure TForm1.Button6Click(Sender: TObject);
Var
   Lottozahlen:TLottozahlen;

   Procedure Zahlen_ermitteln(var Lottozahlen:TLottozahlen);
   var i:integer;
begin
   randomize;
   for i:=1 to 1 do
   Lottozahlen[i]:=random(49)+1;
   end;

   procedure Zahlen_ausgeben(Lottozahlen:TLottozahlen);
   var i:integer;
   begin
   for i:=1 to 1 do
   ListBox6.Items.Add(IntToStr(Lottozahlen[i]));
   end;

begin
Zahlen_ermitteln(Lottozahlen);
Zahlen_ausgeben(Lottozahlen);
end;
Tut mir jetzt schon Leid, dass ich euch hier mit meine Unfähigkeit aufhalte, aber es geht hier um 15 Punkte in Info
  Mit Zitat antworten Zitat
Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#15

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

  Alt 2. Dez 2006, 13:24
Zitat von Jay15688:
Vielen Dank! Es funktioniert einwandfrei! Du hattest in deinem Code hinten in jeder Zeile noch eine ")" vergessen, aber das war dann das kleinste Problem und sogar für einen Noob wie mich zu lösen!
Sorry, war nur so auf die Schnelle getippt und nicht getestet
Zitat von Jay15688:
Besten Dank schonmal! Später muss ich ja noch mehr Dinge speichern. Zum Beispiel die abgegebenen Tipps der einzelnen Spieler. Sollte ich das genauso machen oder hast du da eine Idee? die Tipps werden über Edit-Felder abgegeben. Vielen Dank!
Dann würde ich aber doch eine Delphi-Referenz durchsuchenTIniFile bevorzugen.
Such doch mal nach ein paar Beispielen (entweder hier im Forum oder in der Delphi-Hilfe oder auch sonst wo im Netz), wie man einen String mit einer IniFile speichert.

Zitat von Jay15688:
Was mir auch noch einfällt: Wie könnte ich hinkriegen, dass bei den sechs Listbox-Ziehungen keine Zahl doppelt gezogen werden kann? Anders wäre das etwas unreal
Bevor Du eine neue Zufallszahl in Dein array schreibst, müsstest Du im array überprüfen, ob diese Zahl nicht schon bereits drin stehet.
Es wird dann so oft eine neue Zufallszahl generiert bis eine Zufallszahl gefunden wurde, die noch nicht im array steht.
Dann erst wird die neue Zufallszahl ins array geschrieben.

P.S.:
Verwende anstatt dem Zitat-Button den Delphi-Code-Button für Deinen Delphi-Quelltext, dann sieht es schon gleich besser formatiert aus
//Edit:
ich sehe gerade, das hast Du ja schon geändert!
Mit den Menschen ist es wie mit Computern -
es gibt Nullen und Einsen.
  Mit Zitat antworten Zitat
Jay15688

Registriert seit: 10. Nov 2006
25 Beiträge
 
#16

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

  Alt 2. Dez 2006, 13:36
Könntest du mir das mit dem iniFile genauer erklären? Habe mir schon etwas angelesen im Netz und hier im Forum, aber den totalen Geistesblitz habe ich leider nicht! Die Delphi-Hilfe klappt bei mir nicht, da ich Windows Vista verwendet und die Hilfe-Datei nicht kompatibel ist!

Und auch für den array bzw. die Zufallszahl, die nicht doppelt vorkommen darf, könnte ich ein Beispiel sehr gut gebrauchen...


Wie gesagt...tut mir echt Leid, dass ich mich so blöd anstelle, aber habe noch nich soviel Ahnung und muss es morgen Abend fertig haben und bei uns im Info Forum hochladen.


Danke schonmal!
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#17

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

  Alt 2. Dez 2006, 13:46
Mal abgesehen von dem ini-file war ich mal so frei, deinen code etwas zu vereinfachen:

Delphi-Quellcode:
Procedure Zahlen_ermitteln(var Lottozahlen: TLottozahlen);
var i,j,zahl: integer;
    ok: boolean;
begin
  for i := 1 to 1 do // for i := 1 to 6 do würde für mich mehr sinn machen o.ô
  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;

procedure Zahlen_ausgeben(Lottozahlen: TLottozahlen; Listbox: TListbox);
var i: integer;
begin
  for i := 1 to 1 do
    ListBox.Items.Add(IntToStr(Lottozahlen[i]));
end;

procedure TForm1.Button1Click(Sender: TObject);
Var Lottozahlen:TLottozahlen;
begin
  Zahlen_ermitteln(Lottozahlen);
  Zahlen_ausgeben(Lottozahlen, listbox1);
end;

procedure TForm1.Button2Click(Sender: TObject);
Var Lottozahlen:TLottozahlen;
begin
  Zahlen_ermitteln(Lottozahlen);
  Zahlen_ausgeben(Lottozahlen, listbox2);
end;

procedure TForm1.Button3Click(Sender: TObject);
Var Lottozahlen:TLottozahlen;
begin
  Zahlen_ermitteln(Lottozahlen);
  Zahlen_ausgeben(Lottozahlen, listbox3);
end;

procedure TForm1.Button4Click(Sender: TObject);
Var Lottozahlen:TLottozahlen;
begin
  Zahlen_ermitteln(Lottozahlen);
  Zahlen_ausgeben(Lottozahlen, listbox4);
end;

procedure TForm1.Button5Click(Sender: TObject);
Var Lottozahlen:TLottozahlen;
begin
  Zahlen_ermitteln(Lottozahlen);
  Zahlen_ausgeben(Lottozahlen, listbox5);
end;

procedure TForm1.Button6Click(Sender: TObject);
Var Lottozahlen:TLottozahlen;
begin
  Zahlen_ermitteln(Lottozahlen);
  Zahlen_ausgeben(Lottozahlen, listbox6);
end;

initialization
  randomize;
Mir ist abe rimmernoch nicht ganz klar, wozu du 6 listboxen brauchst, in die du eine zahl reinschreibst. Vllt. bin ich ja zu doof, aber ich kapier nicht, wie das gemeint ist (so viel zum thema benutzerfreundlich *g*)


edit: achja, das wichtigste hätt ich fast vergessen: es sollte keine zahl mehr doppelt vorkommen^^
  Mit Zitat antworten Zitat
Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#18

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

  Alt 2. Dez 2006, 13:49
Mir fällt grad auf, dass Du die Schleife mit den Lottozahlen immer so durchläufst:
for i:=1 to 1 do 1. Was für einen Sinn hat eine Schleife, die von 1 bis 1 läuft?
2. Wie hast Du denn genau TLottozahlen definiert, zeig mal Deine Typendeklaration!

TIniFile geht so:
Delphi-Quellcode:
uses
  {...,} IniFiles;

{...}

var
  ini: TIniFile;

{...}

ini := TIniFile.Create( {Dateiname} ); //Datei erzeugen
try
  //hier machst Du was mit ini

  //einen String, der in Edit1.Text steht, speichern:
  ini.WriteString('Sektor', 'Wert', Edit1.Text);
  //am besten schaust Du Dir jetzt die erzeugte Datei mal an, dann weißt Du was mit Sektor und Wert gemeint ist

  //einen String aus der ini-Datei auslesen und in Edit1.Text schreiben:
  Edit1.Text := ini.ReadString('Sektor', 'Wert', '');
  //im letzten Parameter (wo '' steht) wird der Default-Wert angegeben, d.h. der String der in Edit1.Text geschrieben wird, wenn ein Eintrag mit dem Namen 'Wert' in der Datei nicht vorhanden ist.

finally
  ini.Free; //Datei freigeben
end;
Mit den Menschen ist es wie mit Computern -
es gibt Nullen und Einsen.
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#19

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

  Alt 2. Dez 2006, 13:57
Zitat von Martin K:
Mir fällt grad auf, dass Du die Schleife mit den Lottozahlen immer so durchläufst:
for i:=1 to 1 do 1. Was für einen Sinn hat eine Schleife, die von 1 bis 1 läuft?
Gneau das frag ich mich eben auch, und das ist u.a. der grund, warum ich dieses Porgramm nicht so richtig verstehe
  Mit Zitat antworten Zitat
Jay15688

Registriert seit: 10. Nov 2006
25 Beiträge
 
#20

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

  Alt 2. Dez 2006, 13:57
@NamenLozer:

Vielen Dank für die Mühe! Werde es gleich sofort ausprobieren!

Stell dir mal vor, ich hätte eine einzige ListBox und in jeder Zeile würden 6 Zahlen für eine Ziehung stehen. Das sähe doch ersten relativ unübersichtlich, sowie viel zu klein aus! Ich finde das optisch recht gut wie es ist.
Wobei mir da eine Idee kommt! Es müsste doch bestimmt irgendwie möglich sein, dass man die 6 Zahlen in den ListBoxen zieht und die Ziehung dann in einer weiteren großen ListBox ausgibt, wo die 6 Zahlen dann in einer Reihe stehen. Dann würde sich das speichern auch um einiges vereinfachen und man könnte die 6 Listboxen sozusagen als Lotto-Zahlen-Generator nehmen!

Ich weiß, klingt alles bescheuert...aber für 15 Punkte muss man ja auch mal bissl innovativ sein



Also für weitere Anregungen, Hilfen sowie Ideen liebe ich euch


@Martin:

Delphi-Quellcode:
type
TLottozahlen=array[1..1] of Integer;
  TForm1 = class(TForm)
    ListBox1: TListBox;
    Button1: TButton;
    ListBox2: TListBox;
    Button2: TButton;
    ListBox3: TListBox;
    Button3: TButton;
    ListBox4: TListBox;
    Button4: TButton;
    ListBox5: TListBox;
    Button5: TButton;
    ListBox6: TListBox;
    Button6: TButton;
    Label1: TLabel;
    MainMenu1: TMainMenu;
    Datei1: TMenuItem;
    NeuesSpiel1: TMenuItem;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    ExitGame1: TMenuItem;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Edit6: TEdit;
    Spielspeichern1: TMenuItem;
    SaveDialog1: TSaveDialog;
    Spielladen1: TMenuItem;
    OpenDialog1: TOpenDialog;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure NeuesSpiel1Click(Sender: TObject);
    procedure ExitGame1Click(Sender: TObject);
    procedure Spielspeichern1Click(Sender: TObject);
    procedure Spielladen1Click(Sender: TObject);

Hoffe, dass du damit was anfangen kannst! Habe auch nocheinmal das gesamte Projket im Anhang hochgeladen
Angehängte Dateien
Dateityp: rar lotto_151.rar (175,8 KB, 18x aufgerufen)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 5     12 34     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:14 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