Autor Beitrag
AlA
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 30



BeitragVerfasst: Di 01.04.03 12:09 
Hallo Leute, habe wiedermal ein blödes Problem


ausblenden 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:

ausblenden 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 user profile iconAya: Code-Tags hinzugefügt

_________________
ala
mars
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 238

Debian Woody, Win 2000, Win XP
D7 Ent, Kylix 3
BeitragVerfasst: 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:
ausblenden 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:
ausblenden Quelltext
1:
2:
For i:= 10 to 100 do
 blabla(i);
inselberg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 458



BeitragVerfasst: 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 :)


ausblenden volle Höhe 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 30



BeitragVerfasst: 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

_________________
ala