AGB  ·  Datenschutz  ·  Impressum  







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

Problem mit For-Schliefe

Ein Thema von Kopnop · begonnen am 20. Mai 2012 · letzter Beitrag vom 21. Mai 2012
 
Kopnop

Registriert seit: 20. Mai 2012
2 Beiträge
 
#1

Problem mit For-Schliefe

  Alt 20. Mai 2012, 22:07
Guten Abend,

ich arbeite schon seit ca. 1 1/2 Jahren von der Schule aus mit Delphi, hab aber erst seit ein paar Monaten damit angefangen in meiner Freizeit kleine Spiele zu proggen.
Jetzt hab ich aber ein Problem... oder so etwas Ähnliches^^
Mein Programm funktioniert auch problemlos, wenn ich es so lasse, wies jetzt is, da die Änderung nur im Quelltext zu sehen wäre und nichts am eigentlichen Programm ändern würde, aber ich wüsste gerne generell, ob und wie das geht.
Also, ich hab hier diesen Quelltext (inhaltlich müsst ihr nich drauf eingehen, geht mir nur um die For-Schleifen-Alternative):
(Das ist natürlich nicht der komplette Text aus der FormCreate, lediglich der relevante Teil)
Delphi-Quellcode:
 
procedure TSpielfeld1.FormCreate(Sender: TObject);
begin
  repeat
    hindernis1.initiate(clblue, random(image1.width - 20) + 10,random(image1.height- 20) + 10, random(40) + 81);
  until ((sqrt(sqr(abs(maus.x - hindernis1.hx)) + sqr(abs(maus.y - hindernis1.hy))) > (maus.r + hindernis1.hr) + 8));
  repeat
    hindernis2.initiate(clblue, random(image1.width - 20) + 10,random(image1.height- 20) + 10, random(40) + 81);
  until ((sqrt(sqr(abs(maus.x - hindernis2.hx)) + sqr(abs(maus.y - hindernis2.hy))) > (maus.r + hindernis2.hr) + 8));
  repeat
    hindernis3.initiate(clblue, random(image1.width - 20) + 10, random(image1.height - 20) + 10, random(40) + 81);
  until ((sqrt(sqr(abs(maus.x - hindernis3.hx)) + sqr(abs(maus.y - hindernis3.hy))) > (maus.r + hindernis3.hr) + 8));
  hindernis1.show;
  hindernis2.show;
  hindernis3.show;
end;
Ich arbeite mit Canvas und die Hindernisse sind alle Kreise vom Typ 'THindernis', die Maus ist auch ein Kreis vom Typ 'TMaus'.

Da das ja eigentlich immer das gleiche is - es nur einmal mit dem Hindernis 1, 2 und anschließend 3 gemacht wird, sollte sich das doch auch in eine For-Schleife umschreiben lassen, oder?
Ich hab mir das ungefähr so vorgestellt:
Delphi-Quellcode:
procedure TSpielfeld1.FormCreate(Sender: TObject);
var
i:integer;
begin
  for i:=1 to 3 do
begin
  repeat
    hindernis[i].initiate(clblue, random(image1.width - 20) + 10,random(image1.height- 20) + 10, random(40) + 81);
  until ((sqrt(sqr(abs(maus.x - hindernis1.hx)) + sqr(abs(maus.y - hindernis1.hy)))> (maus.r + hindernis1.hr) + 8));
  hindernis[i].show;
end;
end;
oder irgendwie so:
...(hindernis+i).initiate...
Aber wenn ich das so schreibe, erkennt er nich, dass ich 'hindernis1' ansprechen will, also weiß er auch nicth, dass er damit etwas machen soll.
Gibt es da vllt eine Variablenbezeichnung, die das möglich macht?

Ich hoffe, ihr versteht, was ich möchte und könnt mir helfen
MfG Kopnop
  Mit Zitat antworten Zitat
 


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 17:48 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