AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Problem mit Floodfill?
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit Floodfill?

Ein Thema von nuellz · begonnen am 23. Dez 2007 · letzter Beitrag vom 23. Dez 2007
 
nuellz

Registriert seit: 13. Dez 2007
6 Beiträge
 
#1

Problem mit Floodfill?

  Alt 23. Dez 2007, 11:41
Hallo,

ich hab irgendwie ein sehr seltsames Problem (Für mich zumindest^^)

Ich bin dabei ein Spiel zu programmieren, das so eine Mischung aus "Worms" und den normalen "Cannon"-Spielen ist. Es stehen also zwei Spieler in einer 2D Landschaft und können sich ein bisschen bewegen und sich gegenseitig beschießen. Zunächst wurde die Landschaft entweder aus einer externen Bitmap-Datei in das Spielfeld geladen oder selbst "gemalt". Jetzt hab ich jedoch zusätzlich die Möglichkeit eingebaut eine zufallsgenerierte Landschaft einzubauen. Hierfür werden zufällige Punkte erzeugt und miteinander verbunden, es entsteht also eine zackige Kurve - soweit sogut. Später hab ich aber den Bereich unter der Kurve mit FloodFill auch noch gefärbt wie es sich eben gehört . Als ich das Spiel dann ausprobiert hab, hat das Spiel plötzlich extrem gelaggt. Die Spieler und Geschosse bewegen sich durch ganz normale Timer und haben sich immer flüssig bewegt, seit dem FloodFill Befehl nicht mehr. Es liegt definitiv an diesem Befehl - wenn ich den rausnehme und nur die Kurve zeichne läuft es wunderbar. Dabei wird die Prozedur mit dem Floodfill während der Spieler/Geschossbewegung gar nicht mehr aufgerufen? Ist mit völlig unverständlich, aber vielleicht kann mir ja hier wer helfen^^.

Hier noch der Code:

Delphi-Quellcode:


   paintbox1.canvas.brush.color:=farbe;
   paintbox1.Canvas.pen.style:=psclear;
   paintbox1.Canvas.Rectangle(0,0,paintbox1.width+1,paintbox1.height+1);
 
        //Hier wird das Spielfeld (Paintbox1) erstmal komplett mit "farbe" übermalt (farbe ist die defininierte Hintergrundfarbe,
        //auf die die Geschosse nicht reagieren, bei allen anderen Farben explodieren sie)

    paintbox1.canvas.Pen.style:=pssolid;
    paintbox1.canvas.Pen.color:=clblack;


   paintbox1.canvas.moveto(0,paintbox1.height-350+random(310));
   //Anfangspunkt wird gesetzt

   for j:=1 to trunc(paintbox1.width/80) do paintbox1.canvas.lineto(j*80,paintbox1.height-350+random(310));
   //Die Linie wird gezeichnet

   paintbox1.canvas.lineto(paintbox1.width+1,paintbox1.height-350+random(310));
   //Die linie wird bis zum Endpunkt gezeichnet

   paintbox1.canvas.brush.color:=clblack;

   paintbox1.Canvas.FloodFill(3,paintbox1.height-3,clblack,fsborder); // <-- Dieser Befehl macht alles langsam :(


     timers.enabled:=true;
     timersr.enabled:=true;

 // Timer, die die Spieler von oben fallen lassen, bis sie auf Landschaft "treffen" werden gestartet, laufen aber nicht flüssig
Ich weiß, dass das alles nicht so sauber programmiert ist, aber das ist mein erstes größeres Projekt und ich bin völlig ohne Logik rangegangen... Trotzdem kann ich mir nicht erklären, warum es auf einer Landschaft die so generiert ist, nicht genauso läuft wie auf jeder x-beliebigen Landschaft, da diese Prozedur die Landschaft ja nur einmal erstellt - und zwar schnell! und dann nie wieder aufgerufen wird...
  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 07:24 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz