2D Spiel mit Pfeiltastensteurung

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von PlyfexHD.

    2D Spiel mit Pfeiltastensteurung

    Hallo, ich hab vor ein 2D Spiel mit VB 2012 zu programmieren nun hab ich aber 2 probleme

    1.Das Bewegen nur beim drücken
    Man kann es ja so machen das wenn man in der Textbox die Pfeiltasten benutzt, das Objekt sich mit einem Timer bewegt. ABER wie kann man es so machen das das Objekt sich nur bewegt wenn man drückt wenn man loslässt wieder den Timer Stoppt.

    2.Eine Wand
    Wie kann ich es so machen das z.b wenn ein Objekt gegen eine Wand kommt nicht durch kann weil es ja auch eine Wand ist :D also soll man sich dann z.b nicht weiter nach rechts bewegen können
    Danke im Voraus
    Einfacher Code bitte :D


    Und wie mache ich es so das der Charakter überhaupt auf dem Boden stehen bleibt?

    Hier ein Bild:




    *Topic verschoben, das ist kein VBS!*

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Marcus Gräfe“ ()

    @PlyfexHD Das ganze im KeyDown-Event zu machen dürfte stressig werden, weil wes da das AutoRepeat gibt.
    Wenn Du im Timer-Tick-Event mit GetAsyncKeyState() die Tastatur abftragst, sollte das Deinen Zweck erfüllen: pinvoke.net/default.aspx/user32.getasynckeystate
    Du musst natürlich Dein Labyrinth modelliert haben: Wege und Wände, oben, unten und links und rechts. Du hast eine Spieler-Position, die Du im Labyrinth bewegst.
    Nach jedem Schritt wird das Labyrinth gezeichnet, im Prinzip genügt es, die alte Spielerposition zu löschen und die aktuelle Spielerposition neu zu zeichnen. Wenn das Labyrinth größer ist als der Bildschirm, musst Du einen Weg finden, das so darzustellen, dass z.B. der Spieler immer in einem inneren Rahmen dargestellt wird, d.h., dass sich das Labyrinth gelegentlich entgegen bewegt.
    In diesem Stenario steht die Frage mit der Wand gar nicht, weil die Wand weiß, dass der Spieler da nicht durch kann.
    Feddich.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Wegen deinem Wand Problem, das hatte ich auch mal: Visual Basic Movement: Mauern



    Geholfen hatte mir die Antwort

    Quellcode

    1. Definiere eine Variable LastGoodPosition, die die letzte valide Position des Spielers beinhaltet. Wenn der Spieler dann mit einer Wand kollidiert, wird er einfach auf jene valide Position zurückgesetzt, bevor er neu gezeichnet wird.
    von VaporiZed.

    ╔══╦═╦╦╦═╦══╦══╦╗╔╦═╦╦═╦══╗
    ║║║║╩╠..╣╦╬╗╚╬╗╔╣╚╝║╠║║║╠╗╚╣
    ╚╩╩╩╩╩╩╩═╩══╝╚╝╚══╩═╩╩═╩══╝