![]() |
Verkürzung des Codes
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe vor einem knappen halben Jahr in der
Schule mit dem Informatikunterricht begonnen und mich endlich mal an einem eigenen Proramm versucht. Da wir im Unterricht keine zeit haben uns wirklich innig mit Delphi zu beschäftigen, ist es mir schwer gefallen meine Ideen zu verwirklichen. Ich bin mir sicher, dass mein Quellcode noch stark komprimiert werden kann. Aber Wie? Komme ich wirklich nicht drumm herrum bereits geschribenen text zu wiederholen ? (Projektdateien und exe im Anhang) Kann mir jemand helfen, Strucktur in mein Projekt zu bringen? Anletung zum Programm: Es liegen neun farbige Felder vor, die in einem Quadrat angeordnet sind. Bei einem Klick auf ein Feld, ändert sich die Farbe des jeweiligen Feldes und die der Nachbarfelder. Dabei ist die Reihenfolge: schwrz , rot , grün , gelb. Danach wiederholt sich die Reihe. Ziel ist es , das alle Felder die selbe Farbe haben (sehr schwer). |
Re: Verkürzung des Codes
Liste der Anhänge anzeigen (Anzahl: 1)
OT: Mal abgesehen von deiner Frage, dein Spiel gefällt mir. Ist genau das richtige für mich: Knobeln :wink:
Achja und im Anhang was Schönes :) mfg |
Re: Verkürzung des Codes
Ich habs mir nur ganz kurz angeguckt, aber hab schon was zu meckern :twisted:
Das allerwichtigste was du verbessern solltest, ist die Form deines Quellcodes. Das Stichwort heißt: Strukturieren! Denn stelldir mal vor was passiert, wenn du etwas größere Programme schreibst und du dort immer so schreibst:
Delphi-Quellcode:
Immer nur ein Befehl pro Zeile und zwischen begin/end einrücken ((p1=p2)and (p1=p2) ist wie dir vmtl. auch selbst klar ist, unsinn :wink: - und neustart.Visible:=false; hast du auch mehrmals drin):
if (p1=p2)and (p1=p2)and(p1=p3)and(p1=p4)and(p1=p5)and(p1=p6)and(p1=p7)and(p1=p8)and(p1=p9)then
begin label1.caption:='HERZLICHEN GLÜCKWUNSCH!!! SIE HABEN GEWONNEN!!!'; Neustart.Visible:=false;Panel1.Visible:=false;Panel2.Visible:=false;Panel3.Visible:=false;Panel4.Visible:=false;Panel5.Visible:=false;Panel6.Visible:=false;Panel7.Visible:=false;Panel8.Visible:=false;Panel9.Visible:=false; neustart.Visible:=false; Button1.Visible:=false; end;
Delphi-Quellcode:
Dann würde ich die Integer Variablen (p1,p2,p3,p4,p5,p6,p7,p8,p9:integer;) in einem Array speichern:
if (p1=p2) and (p1=p3) and (p1=p4) and (p1=p5) and (p1=p6) and (p1=p7) and (p1=p8) and (p1=p9) then
begin label1.caption := 'HERZLICHEN GLÜCKWUNSCH!!! SIE HABEN GEWONNEN!!!'; Neustart.Visible := False; Panel1.Visible := False; Panel2.Visible := False; Panel3.Visible := False; Panel4.Visible := False; Panel5.Visible := False; Panel6.Visible := False; Panel7.Visible := False; Panel8.Visible := False; Panel9.Visible := False; Button1.Visible:=false; end;
Delphi-Quellcode:
Darauf zugreifen kannst du dann mit P[1] bis P[9].
p: Array[1..9] of Integer;
Wenn du dann deine 9 Panels ebenfalls noch in einem Array speicherst, dann kannst du deine berechnen-Prozedur bspw. folgendermaßen verkürzen:
Delphi-Quellcode:
Sind jetzt nur ein paar Sachen, habs mir aber wie gesagt auch nur ganz kurz angeschaut
for i := 1 to 9 do
case p[i] of 1: panel[i].color := clblack; 2: panel[i].color := clred; 3: panel[i].color := clgreen; 0: panel[i].color := clyellow; end; Aso und statt
Delphi-Quellcode:
kannst du dann natürlich auch
if (p1=p2) and (p1=p3) and (p1=p4) and (p1=p5) and (p1=p6) and (p1=p7) and (p1=p8) and (p1=p9) then
begin label1.caption := 'HERZLICHEN GLÜCKWUNSCH!!! SIE HABEN GEWONNEN!!!'; Neustart.Visible := False; Panel1.Visible := False; Panel2.Visible := False; Panel3.Visible := False; Panel4.Visible := False; Panel5.Visible := False; Panel6.Visible := False; Panel7.Visible := False; Panel8.Visible := False; Panel9.Visible := False; Button1.Visible:=false; end;
Delphi-Quellcode:
if (p1=p2) and (p1=p3) and (p1=p4) and (p1=p5) and (p1=p6) and (p1=p7) and (p1=p8) and (p1=p9) then
begin label1.caption := 'HERZLICHEN GLÜCKWUNSCH!!! SIE HABEN GEWONNEN!!!'; Neustart.Visible := False; for i := 1 to 9 do Panel[i].Visible := False; Button1.Visible:=false; end; |
Re: Verkürzung des Codes
Erst einmal dreifachen Dank an den Arbeitsaufwand :!:
Da hab ich's mir aber wirklich schwer gemacht. Das haben wir im Unterricht allse gar nicht gemacht. :warn: |
Re: Verkürzung des Codes
Hi,
so'n Schluck auf ist echt mist was hador? :stupid: Gruß oki |
Re: Verkürzung des Codes
Zitat:
Deswegen sind wir ja da. Edit: Den Rest bitte einfach vergessen.. ist noch früh am morgen, da hab ich crap verzapft :) |
Re: Verkürzung des Codes
Zitat:
Das alles lernst Du mit der Zeit. Erfahrung bekommt man nicht im Unterricht vermittelt. |
Re: Verkürzung des Codes
und noch was wichtiges:
Man findet in Deinem Quellcode folgendes:
Delphi-Quellcode:
Sowas sollte man grundsätzlich nicht machen.
procedure TForm4.Panel1Click (Sender:TObject);
begin [...] Form4.berechne; end; Du referenzierst hier in der Implementation Deiner Klasse TForm4 die Eine Instanz (Form4) der selben Klasse. Dadurch würde in jeder weiteren Instanz der Klasse immer wieder nur die Procedure berechne aus der Instanz Form4 verwendet. Außerdem wäre jede Instanz Deiner Klasse nur dann lauffähig, wenn in dem Programm zumindest die Instanz mit Namen Form4 vorkommt und diese von der Instanz aus erreichbar ist. Dem oo-Ansatz entspricht es, das Form4 ganz weckzulassen. Gruß onlinekater |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:23 Uhr. |
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