AGB  ·  Datenschutz  ·  Impressum  







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

Verkürzung des Codes

Ein Thema von Flo.Hoe · begonnen am 8. Nov 2006 · letzter Beitrag vom 9. Nov 2006
Antwort Antwort
Flo.Hoe

Registriert seit: 28. Sep 2006
Ort: Berlin
73 Beiträge
 
Turbo C++
 
#1

Verkürzung des Codes

  Alt 8. Nov 2006, 20:03
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).
Angehängte Dateien
Dateityp: zip puzzelv1.0_183.zip (217,7 KB, 31x aufgerufen)
Florian
  Mit Zitat antworten Zitat
Benutzerbild von mr47
mr47

Registriert seit: 6. Dez 2004
Ort: Stuttgart
644 Beiträge
 
Delphi 2005 Personal
 
#2

Re: Verkürzung des Codes

  Alt 8. Nov 2006, 20:22
OT: Mal abgesehen von deiner Frage, dein Spiel gefällt mir. Ist genau das richtige für mich: Knobeln


Achja und im Anhang was Schönes


mfg
Miniaturansicht angehängter Grafiken
gewonnen_125.gif  
  Mit Zitat antworten Zitat
Benutzerbild von Hador
Hador

Registriert seit: 11. Dez 2004
Ort: Recke
682 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Verkürzung des Codes

  Alt 8. Nov 2006, 21:35
Ich habs mir nur ganz kurz angeguckt, aber hab schon was zu meckern

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:
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;
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 - und neustart.Visible:=false; hast du auch mehrmals drin):
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;
  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;
Dann würde ich die Integer Variablen (p1,p2,p3,p4,p5,p6,p7,p8,p9:integer in einem Array speichern:
p: Array[1..9] of Integer; Darauf zugreifen kannst du dann mit P[1] bis P[9].

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:
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;
Sind jetzt nur ein paar Sachen, habs mir aber wie gesagt auch nur ganz kurz angeschaut

Aso und statt
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;
  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;
kannst du dann natürlich auch
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;
Lars Kiesow
http://www.larskiesow.de

Computer gehorchen deinen Befehlen, nicht deinen Absichten.
  Mit Zitat antworten Zitat
Flo.Hoe

Registriert seit: 28. Sep 2006
Ort: Berlin
73 Beiträge
 
Turbo C++
 
#4

Re: Verkürzung des Codes

  Alt 8. Nov 2006, 21:48
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.
Florian
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Verkürzung des Codes

  Alt 8. Nov 2006, 21:55
Hi,

so'n Schluck auf ist echt mist was hador?

Gruß oki
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.613 Beiträge
 
#6

Re: Verkürzung des Codes

  Alt 9. Nov 2006, 07:19
Zitat von Flo.Hoe:
Das haben wir im Unterricht allse gar nicht gemacht.
Alles halb so wild. Es ist schliesslich noch kein Meister vom Himmel gefallen
Deswegen sind wir ja da.

Edit: Den Rest bitte einfach vergessen.. ist noch früh am morgen, da hab ich crap verzapft
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#7

Re: Verkürzung des Codes

  Alt 9. Nov 2006, 07:30
Zitat von Flo.Hoe:
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.
Das wäre ja noch schöner, wenn man in einem halben Jahr Schul-Informatik das gleiche lernen würde wie in 3 jahren Informatik-Ausbildung oder in 8 Semestern Informatik-Studium.

Das alles lernst Du mit der Zeit.
Erfahrung bekommt man nicht im Unterricht vermittelt.
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.876 Beiträge
 
Delphi 12 Athens
 
#8

Re: Verkürzung des Codes

  Alt 9. Nov 2006, 09:13
und noch was wichtiges:
Man findet in Deinem Quellcode folgendes:
Delphi-Quellcode:
procedure TForm4.Panel1Click (Sender:TObject);
begin
  [...]
  Form4.berechne;
end;
Sowas sollte man grundsätzlich nicht machen.
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
Thomas Breitkreuz
Gruß Thomas
- Admin DelphiPRAXIS
- Admin Delphi-Treff
- Embarcadero MVP
  Mit Zitat antworten Zitat
Antwort Antwort


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 16:54 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