Entwickler-Ecke
Multimedia / Grafik - Verkürzung von Quelltext
AlA - Di 01.04.03 12:09
Titel: Verkürzung von Quelltext
Hallo Leute, habe wiedermal ein blödes Problem
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| if (d11 < 6) then begin k:=k+1; energie2:=energie2-15;messagebeep(977444);sx11:=x1;sy11:=y1;schus1 :=false;schuss11.visible:=false;expl1.Top:=(y2);expl1.Left:=(x2);expl1.visible:=true;k2:=k2+1; end; if (d12 < 6) then begin k:=k+1; energie2:=energie2-15;messagebeep(977444);sx12:=x1;sy12:=y1;schus2 :=false;schuss12.visible:=false;expl2.Top:=(y2);expl2.Left:=(x2);expl2.visible:=true;k2:=k2+1; end; if (d13 < 6) then begin k:=k+1; energie2:=energie2-15;messagebeep(977444);sx13:=x1;sy13:=y1;schus3 :=false;schuss13.visible:=false;expl3.Top:=(y2);expl3.Left:=(x2);expl3.visible:=true;k2:=k2+1; end; if (d14 < 6) then begin k:=k+1; energie2:=energie2-15;messagebeep(977444);sx14:=x1;sy14:=y1;schus4 :=false;schuss14.visible:=false;expl4.Top:=(y2);expl4.Left:=(x2);expl4.visible:=true;k2:=k2+1; end; if (d15 < 6) then begin k:=k+1; energie2:=energie2-15;messagebeep(977444);sx15:=x1;sy15:=y1;schus5 :=false;schuss15.visible:=false;expl5.Top:=(y2);expl5.Left:=(x2);expl5.visible:=true;k2:=k2+1; end; if (d16 < 6) then begin k:=k+1; energie2:=energie2-15;messagebeep(977444);sx16:=x1;sy16:=y1;schus6 :=false;schuss16.visible:=false;expl6.Top:=(y2);expl6.Left:=(x2);expl6.visible:=true;k2:=k2+1; end; if (d17 < 6) then begin k:=k+1; energie2:=energie2-15;messagebeep(977444);sx17:=x1;sy17:=y1;schus7 :=false;schuss17.visible:=false;expl7.Top:=(y2);expl7.Left:=(x2);expl7.visible:=true;k2:=k2+1; end; if (d21 < 6) then begin k1:=k1+1;energie1:=energie1-15;messagebeep(977444);sx21:=x2;sy21:=y1;schus21:=false;schuss21.visible:=false;expl11.Top:=(y1);expl11.Left:=(x1);expl11.visible:=true;k2:=k2+1; end; if (d22 < 6) then begin k1:=k1+1;energie1:=energie1-15;messagebeep(977444);sx22:=x2;sy22:=y1;schus22:=false;schuss22.visible:=false;expl12.Top:=(y1);expl12.Left:=(x1);expl12.visible:=true;k2:=k2+1; end; if (d23 < 6) then begin k1:=k1+1;energie1:=energie1-15;messagebeep(977444);sx23:=x2;sy23:=y1;schus23:=false;schuss23.visible:=false;expl13.Top:=(y1);expl13.Left:=(x1);expl13.visible:=true;k2:=k2+1; end; if (d24 < 6) then begin k1:=k1+1;energie1:=energie1-15;messagebeep(977444);sx24:=x2;sy24:=y1;schus24:=false;schuss24.visible:=false;expl14.Top:=(y1);expl14.Left:=(x1);expl14.visible:=true;k2:=k2+1; end; if (d25 < 6) then begin k1:=k1+1;energie1:=energie1-15;messagebeep(977444);sx25:=x2;sy25:=y1;schus25:=false;schuss25.visible:=false;expl15.Top:=(y1);expl15.Left:=(x1);expl15.visible:=true;k2:=k2+1; end; if (d26 < 6) then begin k1:=k1+1;energie1:=energie1-15;messagebeep(977444);sx26:=x2;sy26:=y1;schus26:=false;schuss26.visible:=false;expl16.Top:=(y1);expl16.Left:=(x1);expl16.visible:=true;k2:=k2+1; end; if (d27 < 6) then begin k1:=k1+1;energie1:=energie1-15;messagebeep(977444);sx27:=x2;sy27:=y1;schus27:=false;schuss27.visible:=false;expl17.Top:=(y1);expl17.Left:=(x1);expl17.visible:=true;k2:=k2+1; end; |
Ich suche nach irgendeiner Möglichkeit solche Blöcke zu verkürzen!!!
Einerseits will ich aus der IF-Anweisung eine Case-Anweisung machen.
Geht aber nicht da diese d27,d26...usw keine Konstanten, sondern
sich ständig verändernde Variablen sind!!!! :?
Ausserdem wiederholen sich bei mir Anweisungen wie:
Quelltext
1:
| r21.visible:=false;r22.visible:=true;r23.visible:=false;r24.visible:=false;r25.visible:=false;r26.visible:=false;r27.visible:=false;r28.visible:=false; |
wie kann ich sie in einer Prozedur speichern und dann einfach bei Bedarf
abrufen???
Moderiert von
Aya: Code-Tags hinzugefügt
mars - Di 01.04.03 12:19
Also ich würd mir diese verschiedenen Variablen als Array deklarieren (beispielsweise d: Array of Integer;) und eine Funktion kreieren, die als Parameter einen Integerwert entgegennimmt, den Index. Den Feinschliff musst du natürlich schon selber machen, aber die Funktion sähe dann beispielsweise so aus:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure blabla(I: Integer); begin if d[i]<6 then begin Inc(k); Dec(energie2, 15); MessageBeep(); ... sy[i]:=x1 ... end; |
Aufrufen könntest du die Prozedur dann folgendermassen:
Quelltext
1: 2:
| For i:= 10 to 100 do blabla(i); |
inselberg - Di 01.04.03 12:34
1. ich würde an deiner stelle mal über einrücken nachdenken ... das kann man doch nicht lesen
2. worum gehts bei dem problem ?
denn so viele selbstdefinierte vars hab ich noch nicht mal in grösseren programmen gebraucht.
wäre es nicht besser arrays, listen oder records zu benutzen ... oder gar eine eigene klasse ?
bzw das herangehen an das problem neu zu überdenken ...
en bisschen gekürzt hab ich dir das trotzdem :)
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65:
| procedure proc1(var energie:integer); begin inc(k); dec(energie,15); messagebeep(977444); end;
if (d11 < 6) then begin proc1(energie2);sx11:=x1;sy11:=y1;schus1 :=false;schuss11.visible:=false;expl1.Top:=(y2);expl1.Left:=(x2);expl1.visible:=true;inc(k2); end; if (d12 < 6) then begin proc1(energie2);sx12:=x1;sy12:=y1;schus2 :=false;schuss12.visible:=false;expl2.Top:=(y2);expl2.Left:=(x2);expl2.visible:=true;inc(k2); end; if (d13 < 6) then begin proc1(energie2);sx13:=x1;sy13:=y1;schus3 :=false;schuss13.visible:=false;expl3.Top:=(y2);expl3.Left:=(x2);expl3.visible:=true;inc(k2); end; if (d14 < 6) then begin proc1(energie2);sx14:=x1;sy14:=y1;schus4 :=false;schuss14.visible:=false;expl4.Top:=(y2);expl4.Left:=(x2);expl4.visible:=true;inc(k2); end; if (d15 < 6) then begin proc1(energie2);sx15:=x1;sy15:=y1;schus5 :=false;schuss15.visible:=false;expl5.Top:=(y2);expl5.Left:=(x2);expl5.visible:=true;inc(k2); end; if (d16 < 6) then begin proc1(energie2);sx16:=x1;sy16:=y1;schus6 :=false;schuss16.visible:=false;expl6.Top:=(y2);expl6.Left:=(x2);expl6.visible:=true;inc(k2); end; if (d17 < 6) then begin proc1(energie2);sx17:=x1;sy17:=y1;schus7 :=false;schuss17.visible:=false;expl7.Top:=(y2);expl7.Left:=(x2);expl7.visible:=true;inc(k2); end; if (d21 < 6) then begin proc1(energie1);sx21:=x2;sy21:=y1;schus21:=false;schuss21.visible:=false;expl11.Top:=(y1);expl11.Left:=(x1);expl11.visible:=true;inc(k2); end; if (d22 < 6) then begin proc1(energie1);sx22:=x2;sy22:=y1;schus22:=false;schuss22.visible:=false;expl12.Top:=(y1);expl12.Left:=(x1);expl12.visible:=true;inc(k2); end; if (d23 < 6) then begin proc1(energie1);sx23:=x2;sy23:=y1;schus23:=false;schuss23.visible:=false;expl13.Top:=(y1);expl13.Left:=(x1);expl13.visible:=true;inc(k2); end; if (d24 < 6) then begin proc1(energie1);sx24:=x2;sy24:=y1;schus24:=false;schuss24.visible:=false;expl14.Top:=(y1);expl14.Left:=(x1);expl14.visible:=true;inc(k2); end; if (d25 < 6) then begin proc1(energie1);sx25:=x2;sy25:=y1;schus25:=false;schuss25.visible:=false;expl15.Top:=(y1);expl15.Left:=(x1);expl15.visible:=true;inc(k2); end; if (d26 < 6) then begin proc1(energie1);sx26:=x2;sy26:=y1;schus26:=false;schuss26.visible:=false;expl16.Top:=(y1);expl16.Left:=(x1);expl16.visible:=true;inc(k2); end; if (d27 < 6) then begin proc1(energie1);sx27:=x2;sy27:=y1;schus27:=false;schuss27.visible:=false;expl17.Top:=(y1);expl17.Left:=(x1);expl17.visible:=true;inc(k2); end; |
natürlich immer davon ausgehend dass du nur "global" vars nimmst :roll:
AlA - Di 01.04.03 12:51
Titel: Danke
Es handelt sich um ein Spiel das für den
Schulunterricht gefertigt wird (Inf GK)
Abschnitt klärt die Kokkision von geschussen
und Raumschiffen.
dxx sind die Abstände zw. den Schüssen und den
Raumschiffen,enex die Energie
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!