AGB  ·  Datenschutz  ·  Impressum  







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

Zufallszahl ziehen ohne wiederholung

Offene Frage von "walli18"
Ein Thema von walli18 · begonnen am 6. Feb 2009 · letzter Beitrag vom 17. Feb 2009
Antwort Antwort
Seite 5 von 7   « Erste     345 67      
Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#41

Re: Zufallszahl ziehen ohne wiederholung

  Alt 7. Feb 2009, 21:06
schöner Spaghetti-code und massig units...wozu die 3 leeren units (2-4)?
nachdem ich deine projektdatei geöffnet habe, vermute ich, dass die units auch nicht die richtigen sind (anderer Ordner).
lagere mal bitte die fragen+antworten in eine externe Datei (ini,xml,etc) aus, damit das Codesegment universeller und besser lesbarer wird.
36 Schwierigkeitsgrade? ich denke 3 reichen...ist sicher nur unglückliches benamen der variablen.

als kleiner tipp am rande...folgendes lässt sich auch entscheidend verkürzen:
Delphi-Quellcode:
      Case Loesung of
        1:begin
          Panel2.Color:=clgreen;
          Panel3.Visible:=false;
          Panel4.Visible:=false;
          Panel5.Visible:=false;
          end;
        2:begin
          Panel3.Color:=clgreen;
          Panel2.Visible:=false;
          Panel4.Visible:=false;
          Panel5.Visible:=false;
          end;
        3:begin
          Panel4.Color:=clgreen;
          Panel2.Visible:=false;
          Panel3.Visible:=false;
          Panel5.Visible:=false;
          end;
        4:begin
          Panel5.Color:=clgreen;
          Panel2.Visible:=false;
          Panel4.Visible:=false;
          Panel3.Visible:=false;
          end;
z.b. so:
Delphi-Quellcode:
var panel:TPanel
Panel2.Visible:=false;
Panel3.Visible:=false;
Panel4.Visible:=false;
Panel5.Visible:=false;
panel:=findcomponent('Panel'+IntToStr(Loesung+1));
if assigned(panel) then
begin
  panel.visible:=true;
  panel.color:=clGreen;
end;
oder
Delphi-Quellcode:
  case ZS of
    1:
    begin
      with mediaplayer1 do
      begin
        Filename:=Pfad+'\Mediendateien\richtigeAntwort\1.wav';
        mediaplayer1.Open;
        mediaplayer1.Play;
      end;
    end;
... //obiger code noch 3x und das bei jedem panelclick.
einfach so:
Delphi-Quellcode:
with mediaplayer1 do
begin
  Filename:=Pfad+'\Mediendateien\richtigeAntwort\'+IntToStr(ZS)+'.wav';
  mediaplayer1.Open;
  mediaplayer1.Play;
end;
du kannst mehreren Panels auch die gleiche Click-Prozedur zuweisen...so sparst du redundaten code...
wenn du die paar sachen machst und noch eine bessere Einrückung dann wird dein code schonmal viel besser lesbar.warum eigentlich 4 mediaplayer?

den Vergleich, ob frage schon gefragt wurde hab ich noch nicht gefunden...

Gruß Frank
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.349 Beiträge
 
Delphi 11 Alexandria
 
#42

Re: Zufallszahl ziehen ohne wiederholung

  Alt 7. Feb 2009, 21:22
Sag mal, kann das sein, dass da die falschen Dateien dabei sind? In dem Quelltext nimmst du ja noch eine beliebige Zufallszahl. Im Projekt wird verwiesen auf ein Verzeichnis '..\das was net ging\Delphi Projekt', aber diese Dateien sind leider nicht dabei...

Zum Konzept: Wie wäre es, wenn du die Fragen aus einer Datei lädst oder zumindest konstante Arrays benutzt? So ist das doch viel zu umständlich, wenn du Fragen hinzufügst, etc.

// EDIT:
Zur Frage "Wo ist der Sitz des Bundeshauses?":
Der Sitz des Bundestages ist Berlin und das Bundeshaus steht immer noch in Bonn, wird aber anderweitig verwendet.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
walli18

Registriert seit: 29. Jan 2009
21 Beiträge
 
#43

Re: Zufallszahl ziehen ohne wiederholung

  Alt 7. Feb 2009, 21:43
Das habe ich auch schon gerade festgestellt, ich werde gleich noch mal die richtigen hochladen
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.349 Beiträge
 
Delphi 11 Alexandria
 
#44

Re: Zufallszahl ziehen ohne wiederholung

  Alt 7. Feb 2009, 21:46
Da reichen aber die Quelltextdateien, und die kannst du auch hier in den Anhang legen, wer die anderen Dateien dazu will, der kann ja den Link oben benutzen.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
walli18

Registriert seit: 29. Jan 2009
21 Beiträge
 
#45

Re: Zufallszahl ziehen ohne wiederholung

  Alt 7. Feb 2009, 22:18
So das hab ich jetzt auch gemacht! Hier ist der Quelltext!
http://rapidshare.com/files/19529755...lli18.rar.html
Sorry, ich hätts auch hier hochladen können, is mir aber zu spät eingefallen!


Das Problem bleibt immer noch:
1. ich muss den Quelltext redundanter gestalten
2. wieso er in der unit 5 bei button 1 click das mit der zufallszahl z super macht und in der listbox dokumentiert aber genau dasselbe bei form5.button 2. click nicht macht und immer gleich die if bedingung erfüllt was dazu führt, dass er schreibt, sie haben das spiel erfolgreich beendet
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.349 Beiträge
 
Delphi 11 Alexandria
 
#46

Re: Zufallszahl ziehen ohne wiederholung

  Alt 7. Feb 2009, 22:32
Zitat:
Delphi-Quellcode:
procedure TForm5.Button2Click(Sender: TObject);

var p,z,i:integer;

    liste: string;
begin
////////////////////////////////////////////////////////////////////////
  Randomize;
 // liste:='';
  //for i:=1 to gesamt do
    //liste:=liste+chr(i);
if length(liste)<=gesamt-anzahl then
  begin
    showmessage('Sie haben das Spiel erfolgreich beendet!');
    exit;
  end;
Erstens hast du eine lokale Variable liste, deine globale gleichnamige Variable wird also gar nicht benutzt...
Zweitens ist der Quelltext auskommentiert, der die Variable füllt...

So geht es bei mir:
Delphi-Quellcode:
procedure TForm5.Button2Click(Sender: TObject);

var p,z,i:integer;

    //liste: string;
begin
////////////////////////////////////////////////////////////////////////
  Randomize;
  liste:='';
  for i:=1 to gesamt do
    liste:=liste+chr(i);
if length(liste)<=gesamt-anzahl then
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
walli18

Registriert seit: 29. Jan 2009
21 Beiträge
 
#47

Re: Zufallszahl ziehen ohne wiederholung

  Alt 7. Feb 2009, 22:46
Danke jaenicke! Ich bin einen großen Schritt weiter!
Es funktioniert jetzt! Ich hab nur noch das Problem, dass ich ja immer wieder wenn ich eine neue zufallszahl will und die brauche ich 15 mal auf button 2 clicke!
und mit dieser variante kommen dann die zufallszahlen doppelt vor, das möchte ich ja aber nicht, da ich keine doppelten fragen haben möchte! Ich denke das liegt daran, dass diese liste immer beim klicken auf button 2 neu erstellt wird, aber wie muss ich den quelltext ändern, damit die ersten 15 zufallszahlen nicht doppelt vorkommen??
Ich hab auch noch nen button für neues spiel, dabei sollten wieder neue zufallszahlen kommen! Was muss ich da eigeben??
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.349 Beiträge
 
Delphi 11 Alexandria
 
#48

Re: Zufallszahl ziehen ohne wiederholung

  Alt 7. Feb 2009, 22:58
Ach ja, die Initialisierung brauchst du da ja nicht. Die brauchst du dann aber für ein neues Spiel, womit deine zweite Frage beantwortet ist.
Delphi-Quellcode:
procedure TForm5.Button2Click(Sender: TObject);

var p,z,i:integer;

begin
////////////////////////////////////////////////////////////////////////
  Randomize;
if length(liste)<=gesamt-anzahl then
Und einen Fehler: Wenn ich auf Weiter statt eine Antwort klicke wird trotzdem weitergezählt...
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
walli18

Registriert seit: 29. Jan 2009
21 Beiträge
 
#49

Re: Zufallszahl ziehen ohne wiederholung

  Alt 7. Feb 2009, 23:06
dankeschön, soweit habe ich das auch jetzt endlich hinbekommen! Es bleibt noch eine frage! mit neues spiel starten klappt! Das problem ist nur, dass ich button2. click in form5 habe und neues spiel starten in form6 habe! Der quelltext funktioniert (ich hab ihn mal zum neuen Spiel starten in form5 gehauen) aber in form6 kann ich die liste aus form5 net löschen! Was muss ich dafür tun??

Danke für die Antwort!
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.349 Beiträge
 
Delphi 11 Alexandria
 
#50

Re: Zufallszahl ziehen ohne wiederholung

  Alt 7. Feb 2009, 23:08
Weil du die Variable Liste in der implementation Sektion deklariert hast. Damit ist diese nur innerhalb dieser Unit sichtbar. Du kannst die Variable unter public deklarieren, dann kannst du mit Form5.liste auch darauf zugreifen.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 5 von 7   « Erste     345 67      


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 00:50 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