Landkarte beweglich machen

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von VBHunter.

    Landkarte beweglich machen

    Hallo,

    ich möchte gerne eine Landkarte in mein Spiel integrieren. Der Spieler klickt auf "Karte" und sieht eine Deutschlandkarte wo gerade seine Fahrzeuge sind und so weiter (sie sollen sich auch Bewegen)

    Das ist meine Karte:



    Ein Spieler startet seinen LKW von Berlin und fährt nach München, jetzt soll ein Punkt die Autobahn langfahren ... Bei klick öffnet sich dann eine kleine Info von wo nach wo das Fahrzeug fährt was es geladen hat usw.

    Ich weiß jetzt nicht genau wie ich es Starten soll, bis jetzt habe ich die Karte aber keine vorstellung wie ich es machen kann das er die genauen Positionen abfährt....

    Hoffentlich kann wer helfen. DANKE
    @VBHunter Das sind zwei Probleme:
    • Du musst wissen, wo auf der Karte Du Dich befindest.
      Dazu kann ich Dir leider nicht helfen, das muss in Deinem Spiel geklärt werden.
    • Das (pixelparallele) Darstellen von Bildern ist sehr einfach, da suchst Du Dir eine geeignete Überladung von Graphics.DrawImage() raus und stellst die Karte dynamisch als Hintergrundbild Deines Spielfeldes dar.
      msdn.microsoft.com/de-de/libra….drawimage(v=vs.110).aspx
    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!
    Okay Super, danke für deine Antwort und anreiz.

    Ich habe die Karte jetzt als PictureBox integriert und im Hintergrund ein Panel gemacht um die Autoscroll funktion zu nutzen. Habe als Start und Info Button einen RadioButton hinzugefügt und integriert, bei klick öffnen sich nun Infos der Stadt.

    Ohne Klick:


    Mit Klick:


    - Hier fällt mir auch gerade noch eine Frage ein wie bekomm ich es hin das der Text Links vom Button steht statt Rechts, weil ja da zu wenig Platz ist?

    - Wie bekomme ich Kordinaten einer Karte herraus ist der Start X 0 ..Y 0 immer oben links?

    - Was meinst du mit dein Punkt 2... Verstehe ich das Richtig, ich setzte einen Punkt und denn steuere ich mit dem befehl das er z.b. nach 10 sek. einen schritt nach unten wandert (Y=-1)

    EDIT:
    hab das soweit hinbekommen mein Punkt bewegt sich jetzt, mit hilfe deines alten Poasts.
    Private LoopCount As Integer = 0
    Private dir As Boolean = False
    Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick
    LoopCount += 1
    If LoopCount = 20 Then
    dir = Not dir
    LoopCount = 0
    End If
    Dim position As Integer
    If dir Then
    position = 2
    Else
    position = -2
    End If

    Dim Loc As Point = Button1.Location
    Button1.Location = New Point(Loc.X + position, Loc.Y + position)
    End Sub


    Muss ich jetzt jede einzelne Stecke selber schreiben?

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

    VBHunter schrieb:

    Muss ich jetzt jede einzelne Stecke selber schreiben?
    Weiß ich nicht.
    Wenn Du so was wie Routenplanung machen willst - lass es sein.
    Bestenfalls kannst Du Strecken vorfertigen und als Vektorzüge ablegen.
    Mit dem Positionieren der Info:
    Rechne Dir aus, bei welchen Bildschirmkoordinaten das Fenster landet und dann positioniere es so, dass nix außerhalb des Bildschirms liegt.
    Nutze dazu die Funktionen Control.PointToClient() und Control.PointToScreen().
    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!

    RodFromGermany schrieb:

    Wenn Du so was wie Routenplanung machen willst - lass es sein.


    Ohje, wenn dem so ist wird's richtig(!) übel. Ist das nen Übungsprojekt um Programmieren tu lernen?

    Anhand ner Karte als Bild geht es vermutlich gar nicht. Du müsstest ja z.B. Wissen, wo welcher Ort auf der Karte ist. Und dann noch die Route dazu, wobei es hier ja mehrere geben kann.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Uh, das klingt ja nach komplizierter Arbeit :whistling:

    Also ein Navi will ich eigendlich nicht machen aber wenn man genau drüber nach denkt ist es ja eigendlich eins, nur mit wenigen speicherungen.

    Ich hatte erst gedacht man kann es irgendwie so machen das ich RadioButtons auf die Städte setze z.b. Berlin & Leipzig & München und dann sage ich dem Radiobutton(Pixel) das er abfahren soll von RB_Berlin nach RB_Leipzig nach RB_Muenchen quasi das er die punkte abfährt und nicht die Kordinaten .... Weil das System kennt doch schon die Position von Radiobutton Berlin usw. oder ?

    VBHunter schrieb:

    ist es ja eigendlich eins, nur mit wenigen speicherungen.
    Jou. So was:

    RodFromGermany schrieb:

    Bestenfalls kannst Du Strecken vorfertigen und als Vektorzüge ablegen.
    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!
    Hm okay,
    also ich glaub das was ich vor habe ist zu komplex, dachte es wäre einfacher aber es kommen immer neue Probleme wenn ich das so machen will || ....

    Ich denke jetzt mal um und will nur noch die Karte machen mit den RadioButtons auf den Städten (Soweit Fertig).
    Klickt man auf dem Button Berlin erscheint ein Fenster welche Fahrzeuge auf dem weg sind und wann sie da sind.

    Wie gehe ich das ambesten an? .... Sinvoll eine MsgBox oder eine Neue Form (im Fenster modus)?
    Die Frage ist doch: Sollen die Punkt-(=Fahrzeug) bewegungen realistisch sein? Also sollen sie sich auf den Autobahnen, Bundesstraßen etc. entlangbewegen? Oder linear? Will heißen: Von Hamburg nach Leipzig einfach gerade diagonal rechts runter, egal, ob da ein Berg, ein See, ein Fluß ist? Letzteres ist leicht, ersteres (Stichwort Navi) sehr kompliziert.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    VBHunter schrieb:

    Wie gehe ich das ambesten an?
    Probier mal ein ToolTip,
    oder nimm eine Form mit .Borderstyle = None, in die Du Deinen Text im PaintEvent direkt reinschreibst.
    Rechne Dir dioe Größe des Textes aus und mach die Form etwas größer. Die Herangehensweise findest Du hier: Drucken mehrseitiger Dokumente
    Starte sie nicht modal (.Show()).
    Im Leave-Ereignis beendest Du die Form.
    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!
    @VaporiZed Ja genau das ist es es soll sich eigendlich realistisch bewegen, methode 2 hatte ich schon sehr gut hin bekommen aber dann sollte es ehr ein Flugspiel sein und kein LKW :D

    @RodFromGermany Okay ich teste das mal und versuche das bis morgen zum laufen zu kriegen.

    EDIT:
    Hab jetzt alles soweit sehr gut hin Bekommen Vielen dank an euch !!!

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