Suche GDI+ Tiles Tutorial

  • VB.NET

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von FreakJNS.

    Suche GDI+ Tiles Tutorial

    Hey Leute,

    ich suche vergebens nach einem guten Tutorial, wo gezeigt wird, wie ich in VB mit GDI+ z.B. eine Tilesmap erstellen kann.
    Manche Seiten habe ich schon gefunden aber ich blicke da oft nicht weiter.

    Vielen Dank im Vorraus!

    Peter
    hey, wenn du willst schreibe ich ein kleines tutorial - ich denke aber, dass das nicht nötig ist, da es sehr einfach ist.

    du hast ja irgendwo eine liste mit den ganzen Tiles und idealerweise eine map die sagt, wo welches tile (=> der index, also die nummer des tiles) liegt.
    Ein Tile ist am besten eine eigene Klasse die neben der Grafik auch noch Informationen wie Betretbarkeit (für die Kollisionserkennung) etc beinhaltet.

    die Map ist im endeffekt ein 2D Array vom Typ Integer.

    außerdem willst du ja nie die gesamte map auf deinem bildschirm sehen sondern nur einen kleinen ausschnitt. dieser ausschnitt hat eine größe:
    CamSize = new Size(20,14) '=> die Cam kann also einen ausschnitt von 20x14 tiles darstellen
    CamLoc =new point(40,33) '=> die Cam braucht außerdem eine position, wir gehen vom bildschirm-mittelpunkt als camloc aus

    nun kannst du im paint-event (oder wo auch immer) deinen map-ausschnitt zeichnen lassen (hier mal in groben pseudeocode, sollte aber selbsterklärend sein)

    VB.NET-Quellcode

    1. dim xStart as integer = camloc.x - camsize.width/2
    2. dim yStart as integer = camloc.y - camsize.height/2
    3. dim ScreenX as integer = 0
    4. dim ScreenY as integer = 0
    5. for tileX = xStart to xStart+camsize.width
    6. for tileY = yStart to yStart+camsize.height
    7. wenn tilex > 0 und tileX < mapsize.width und tileY > 0 und tileY < mapsize.height dann '=> die positionen müssen inerhalb der map liegen
    8. 'zeichne Tile(tileX,tileY) an der stelle (ScreenX * tileSize, ScreenY * tileSize)
    9. ansonsten
    10. 'zeichne das tile schwarz
    11. screenY +=1
    12. next
    13. screenY = 0
    14. screenX +=1
    15. next



    Wenn du ein Spiel daraus bauen willst empfehle ich dir das ganze nicht mit GDI+ zu machen, da die Framezahl dabei schnell in den Keller geht. [VB 2008] SFML: einfache 2D GrafikEngine ist eine relativ gute und einfache alternative. Du kannst dich da recht schnell reinfinden und mit dem gleichen prinzip wie im pseudocode beschrieben die Tiles rendern lassen. Ich habe das ganze letztens mal mit einer Pokemon-karte versucht und das ganze lief mit 300+ Frames bei einer viel zu großen CamSize-auflösung^^ (siehe [Release] Pokemon MapParser v1.0 )

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „FreakJNS“ ()