Hab ein logisches Problem[erledigt]

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

LordArtus

Betreff: Hab ein logisches Problem[erledigt]

BeitragMi, Sep 12, 2007 23:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

wie schon einige mitbekommen haben , bin ich am DEFENDER dran.
Alles klappt eigentlich nicht schlecht , bloss habe ein Problem mit dem Grenzübergang der Map.
Ich weiss es nicht , ob ich schon müde bin oder ich bin einfach zu blöd für sowas.
Ich versuche es so gut wie möglich zu erklären:
Bsp.
GX=1280 ' horizontale Auflösung
GY=1024 ' vertikale Auflösung
MapGrösse 10000,GY

so , auf der ganzen Map bewegen sich Objekte , sobald die Objekte den horizontalen Anfang der Map erreichen (MapXpos=0) , erscheinen die automatisch am Ende der Map (MapXpos=10000) und genauso umgekehrt je nachdem in welche Richtung die fliegen (sozusagen 10000=0 und umgekehrt) , mit meinem Raumschiff kann ich genau das gleiche machen.
Das Problem ist , wenn ich mit dem Raumschiff in die Nähe der Grenze(unsichtbar) komme , sehe wie andere Objekte in der Grenze verschwinden (die sind natürlich da , bloss habe das Prob mit der Anzeige der Grenze).
Hoffe kann mir jemand helfen , ein Bsp.Code wäre super.

MfG

LordArtus

p.s. Wenns jemand nicht verstehten sollte , kann ich es noch viel genauer erklären.

Edit: Habs gelöst Smile

Alles horizontal:

mapx=Position der Anzeige (innerhalb der Map)
x=Position von Objekt
MAPXSIZE=selbsterklärend
GX=horizontale Auflösung

Code: [AUSKLAPPEN]

   Method Draw(mapx:Int)
      SetColor 255,255,255
      If x<GX And mapx>MAPXSIZE-GX
         DrawOval x+MAPXSIZE-mapx,y,10,10
      Else
         DrawOval x-mapx,y,10,10
      EndIf
   EndMethod
  • Zuletzt bearbeitet von LordArtus am Do, Sep 13, 2007 14:04, insgesamt einmal bearbeitet

Smily

BeitragDo, Sep 13, 2007 10:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Die IF-Abfragen kannst du eigentlich weglassen, da Blitz schon intern überprüft, ob du ausserhallb des Bildschirm zeichnest. Also ist es ohne IF sogar schneller:

Code: [AUSKLAPPEN]

Function Draw(x,y)
    DrawOval x,y,10,10
    DrawOval x+mapx,y,10,10
    DrawOval x-mapx,y,10,10
end function


Das ist wohl die einfachste methode ^^

gruß,
Smily0412
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets

"Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!"
stummi.org

LordArtus

BeitragDo, Sep 13, 2007 13:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

hmmm , sowas ist mir ganz neu Smile aber werde es mal checken.

MfG

LordArtus

Edit :

Habs getestet und dein Code funktioniert nicht (zumindest bei mir), mein Code sieht jetzt so aus , ist etwas schneller wie mein erster , vorallem bei vielen Objekten macht sich der Geschwindigkeitsvorteil bemerkbar.

Code: [AUSKLAPPEN]

   Method Draw(mapx:Int) ' ToDo Überprüfen , kleiner Sprung beim Grenzübergang
      SetColor 255,255,255
      If Abs(x-mapx)<GX Or Abs(x-mapx)>MAPXSIZE-GX
         If x<GX And mapx>MAPXSIZE-GX
            DrawOval x+MAPXSIZE-mapx,y,10,10
         Else
            DrawOval x-mapx,y,10,10
         EndIf
      EndIf
   EndMethod


Bei meinem Spiel bin noch immer bei über 5000FPS , bei ziemlich vielen Objekten , und das Konstrukt ist schon fast fertig Wink

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group