Einzelnen Beitrag anzeigen

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