AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Rechtecke überlagern sich beim zufälligen erstellen ?
Thema durchsuchen
Ansicht
Themen-Optionen

Rechtecke überlagern sich beim zufälligen erstellen ?

Ein Thema von mimi · begonnen am 29. Jan 2006 · letzter Beitrag vom 2. Feb 2006
 
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#1

Rechtecke überlagern sich beim zufälligen erstellen ?

  Alt 29. Jan 2006, 14:53
Hallo,
ich habe es mit meinem eignen code nicht und mit einem code aus disem forum auch nicht hinbekommen.
Ich möchte gerne das meine bilder zufällig auf ein TBitMap verteielt werden und dabei ist zu berücksichtigen:
Es darf kein andres Objekt auf der Position sein
Und es darf nicht auserhalb des angeben Rechteckes sein.
ich habe hier die proceduren und funktionen die dafür verantwortlich sind rein kopiert:
Delphi-Quellcode:
// Diese hier habe ich aus dem forum
function RectIntersect(A, B: TRect; Offset: Integer): Boolean;
begin
  result := not((A.Right + Offset <= B.Left) or
                (A.Bottom + Offset <= B.Top) or
                (A.Top - Offset >= B.Bottom) or
                (A.Left - Offset >= B.Right));
end;
// -----------------------

function TForm1.Kollision(rect:TRect):Boolean;
var
  i:Integer;
  r1:TRect;
begin
  result:=False;
  for i := 0 to High(Items) do begin
    r1.Left:=Items[i].x; r1.Top:=Items[i].y;
    r1.Right:=Items[i].w; r1.Bottom:=Items[i].h;
    if RectIntersect(r1,rect, 100) then begin
      result:=True;
     // break;
    end;
  end;
end;
// hier kommt die anwendung
function TForm1.Zufall(px,py,w,h,index:Integer):TPoint;
var
  x,y,z:Integer;
  i,r:Boolean;
begin

  x:=px; y:=py; z:=0;
// px:=px*w; py:=py*h;

  i:=CheckCollision(px,py,w,h,index);//CheckCollision(x*w,y*h,w,h,index);
  Label3.Caption:=BoolToStr(i,True);

  if (i = False) or (x < 0) or (y <0) or (x > 640) or (y >240) then begin
    repeat
      x:=random(640-w);
      y:=random(280-h);
      inc(z);
      r:=CheckCollision(x,y,w,h,index);
    until (r = False) or (z = 5);
  end;
  ListBox1.Items.Add(IntToStr(Index)+ '\'+ IntToStr(x) + '\' + IntToStr(y));
  result.X:=x;
  result.Y:=y;
end;
// und hier noch mal meine eigne:
function TForm1.GetItemIndex(px,py,pw,ph,Index:Integer):Integer;
var
  i:Integer;
  t:Integer;
  g:TRect;
begin
  ListBox2.items.Clear;
  t:=-1;
  Label1.Caption:='';
  for i:=0 to HIGH(Items) do begin
    with Items[i] do begin
         ListBox2.Items.Add(IntTostr(x) + '\' + IntToStr(y));

      if (typ <> 4) and (typ <> 1) and (PlayerIndex <> i) then begin
// if PtInRect(Rect(x,y,w,h),Point(px,py)) = True then begin
         if IntersectRect(g,rect(x,y,w,h),rect(px,py,pw,ph)) = True then begin
                 Label1.Caption:=InttoStr(x)+'\'+IntToStr(y) + '\'+ IntToStr(Random(4));
         // if (px >=x) and ( py>=y) and (px <=x+pw) and (py <=y+ph)then begin
// if (x >=px) and (y >=py) and (x <=px+pw) and (y <=py+ph) and (PlayerIndex <> i) then begin

          t:=i;
          break;
        end;
      end;
    end;
  end;
  result:=t;
end;
das problem dabei ist bei diesem code überlagen sich teilweise die Grafiken übereinander und ich weiß einfach nicht warum. Habe hier im forum gesucht letzte woche saß ich stunden vor diesem Problem, habe aber leider keine lösung gefunden !
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  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 16:57 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