Einzelnen Beitrag anzeigen

Delphi-Noobie

Registriert seit: 28. Nov 2003
102 Beiträge
 
#1

selbsterstellte Canvas-Objecte sollen sich nicht überschneid

  Alt 1. Dez 2004, 20:15
hi, ich hab ne unit geschrieben, die ein haus mit canvas auf einem Formular erzeugt, dazu werden 3 werte übergeben (x1,y1, breite des hauses). Jetzt werden die häuser mit randombreiten erstellt. Wie kann ich abfangen, dass die häuser sich überschneiden, jedoch jeder vorhandene Platz auf dem Formular genutz wird? Hier mal der Code:
Code:
var t:integer = 0;
    q,w,e:array[0..100000] of integer; // zum speichern der Koordinaten im randomfall

implementation

constructor Thaus.create(a:Tform;zx,zy,zbreite:integer);
var g:integer;
begin
zx := (zx div 30) * 30;  // das geht nur, wenn zbreite immer konstant ist, hier 30
zy := (zy div 45) * 45 ; // das haus is zbreite breit und zbreite + zbreite div 2 hoch
q[t]:=zx;
w[t]:=zy;
e[t]:=zbreite;
for g:=t-1 downto 0 do begin
if ((q[g] = zx) and (w[g] = zy)) // dadurch werden sie nicht am selben Punkt nochmal erstellt
then begin inc(v); a.Caption:=inttostr(v)+ ' Häuser konnten nicht erstellt werden, da sie sich überlagern würden!!'; exit; end; /
end;
inc(t);
end;
gemalt wird das haus natürlich mit einer anderen procedure. Er soll jetzt aber immer ein Haus an einer freien Stelle erstellen können bei random breiten, abhängig von der größe von zbreite, die sich nicht überschneiden. Hab keine Peilung wie ich das machen soll
Wieviel Lösungen hat die Gleichung x^13=1? .... 13!
  Mit Zitat antworten Zitat