Bewegung in vb ( Timer )

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 28 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Der Laie schrieb:

    Meine Zielidee ist es was du vllt sehen kannst auf dem Bild, das ich ein Modellstraßenverkehr nachbauen möchte und das die Autos wie in der Realität auf der Straße herumfahren mit abbiegen und teilweise voreingestellter Route
    Uiiih!!!
    Das wird aber superkompliziert!
    So ein Strassennetz ist ja mathematisch betrachtet ein Graph, dessen Knoten Kreuzungen bzw. Sackgassen-Endpunkte darstellen.
    Aber die Kanten zwischen den Knoten sind ja nicht wie (mathematisch) üblich grade Linien, sondern können jede beliebige Form annehmen. Dafür würden sich GraphicsPathes mit BezierSplines anbieten.
    Und nun ist ein Auto zu schaffen, was es hinbringt, diese BezierSplines entlang zu fahren.
    Ich hab mal einen Artikel geschrieben mit einem Projekt, wo ein Punkt immerhin einem GraphicsPath entlang-fährt:
    Interpolating Beziersplines
    Das allein ist schon krass, und ist ja nur 1/4 der Miete, weil wie gesagt: die Splines müssen ja als Kanten in ein Graph-Datenmodell integriert werden, und dann muss man iwas schaffen, was zB eine Liste von Knoten als abzufahrende Strecke auswertet und grafisch umsetzt.

    Aber vlt. bin ich Holzweg, und es gibt viel einfachere Ansätze. Das tät mich allerdings interessieren.

    Hier noch OwnerDrawing: das zeigt einen großen Teil des Spektrums der Möglichkeiten von OwnerDrawing, u.a. wie man bewegliche Figuren verschiedenster Art programmiert.
    Und AdvancedPainting: Das zeigt ühaupt mal, wie man ein relationales Datenmodell mit OwnerDrawing verknüpfen kann.

    Also die grundlegenden Technologien, die man (nach meim jetzigen Ansatz) für dein Vorhaben braucht, wären damit angerissen.

    Daraus jetzt aber eine Umsetzung deiner Vorstellungen zu basteln bleibt aber immer noch eine enorme Herausforderung
    ErfinderDesRades moin

    ich möchte dir gleich was zusenden was ich bekommen haben zum Thema Bewegung und vllt könntest du mir mit dem Ansatz vllt weiterhelfen, weil vllt muss ja nicht immer alles so kompliziert sein. Wie gesagt ich schicke dir mal was und schreibe dir dazu meine Gedanken die ich einbringen möchte vllt fällt dir was dazu ein


    LG
    Und warum stellst du es hier nicht Online? Bitte lass das mit den PNs und verwende das Forum denn dafür ist es schliesslich da.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Bewegung in vb

    Moin zusmmen


    Hier ein Programm ( Code ) den ich bekommen habe und mit dem ich gerade etwas Experimentiere

    nun meine Frage wenn ich in der Timer Sub Funktion eine Bedienung setzte mit Checkboxen und ich laut Code vorher festgesetzt habe wo über all die Abbiegung gemacht werden sollen, dann kann ich doch mit den checkboxen die jeweiligte Richtung doch manuell verändern so wie ich es möchte in der Select Case Anweisung und es würde wie auf dem Bild vllt zu sehen ist ein Verkehrsgeschehen stattfinden. Oder ??

    oder ist den noch immer was unklar

    LG




    VB.NET-Quellcode

    1. Public Class FrmMain
    2. Private Enum MovementStatus
    3. ToTheRight
    4. DiagonalToDownRight
    5. DiagonalToDownLeft
    6. ToTheLeft
    7. DiagonalToUpLeft
    8. DiagonalToUpRight
    9. End Enum
    10. Private CurrentMovement As MovementStatus = MovementStatus.ToTheRight
    11. Private PictureBoxIsMoving As Boolean = False
    12. Private Sub BtnToggleMovement_Click(sender As Object, e As EventArgs) Handles BtnToggleMovement.Click
    13. PictureBoxIsMoving = Not PictureBoxIsMoving
    14. If PictureBoxIsMoving Then
    15. UpdateMovementLabelText()
    16. BtnToggleMovement.Text = ";" 'Webdingszeichen Pause ||
    17. TmrPicBoxMovement.Start()
    18. Else
    19. BtnToggleMovement.Text = "4" 'Webdingszeichen Start >
    20. TmrPicBoxMovement.Stop()
    21. End If
    22. End Sub
    23. Private Sub TmrPicBoxMovement_Tick(sender As Object, e As EventArgs) Handles TmrPicBoxMovement.Tick
    24. Select Case CurrentMovement
    25. Case MovementStatus.ToTheRight : PicBox.Left += 2
    26. Case MovementStatus.DiagonalToDownRight : PicBox.Left += 1 : PicBox.Top += 1
    27. Case MovementStatus.DiagonalToDownLeft : PicBox.Left -= 1 : PicBox.Top += 1
    28. Case MovementStatus.ToTheLeft : PicBox.Left -= 2
    29. Case MovementStatus.DiagonalToUpLeft : PicBox.Left -= 1 : PicBox.Top -= 1
    30. Case MovementStatus.DiagonalToUpRight : PicBox.Left += 1 : PicBox.Top -= 1
    31. End Select
    32. Select Case CurrentMovement
    33. Case MovementStatus.ToTheRight : If PicBox.Left > 300 Then CurrentMovement = MovementStatus.DiagonalToDownRight : UpdateMovementLabelText()
    34. Case MovementStatus.DiagonalToDownRight : If PicBox.Left > 350 Then CurrentMovement = MovementStatus.DiagonalToDownLeft : UpdateMovementLabelText()
    35. Case MovementStatus.DiagonalToDownLeft : If PicBox.Left < 300 Then CurrentMovement = MovementStatus.ToTheLeft : UpdateMovementLabelText()
    36. Case MovementStatus.ToTheLeft : If PicBox.Left < 100 Then CurrentMovement = MovementStatus.DiagonalToUpLeft : UpdateMovementLabelText()
    37. Case MovementStatus.DiagonalToUpLeft : If PicBox.Left < 50 Then CurrentMovement = MovementStatus.DiagonalToUpRight : UpdateMovementLabelText()
    38. Case MovementStatus.DiagonalToUpRight : If PicBox.Left > 100 Then CurrentMovement = MovementStatus.ToTheRight : UpdateMovementLabelText()
    39. End Select
    40. End Sub
    41. Private Sub UpdateMovementLabelText()
    42. LblCurrentMovementStatus.Text = [Enum].GetName(GetType(MovementStatus), CurrentMovement)
    43. End Sub
    44. Private Sub FrmMain_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    45. End Sub
    46. End Class
    Bilder
    • Weichensteuerung Vorlage.JPG

      95,63 kB, 1.360×693, 43 mal angesehen
    • 25185107bx.jpg

      90,54 kB, 1.024×768, 41 mal angesehen
    Und wo ist jetzt das Problem ? Versuche es doch einfach anstatt hier zu fragen ob es gehen könnte. Woher sollen wir das wissen ?
    Wir haben nicht dein Projekt um das für dich zu testen und das würde wahrscheinlich auch keiner tun weil du es nicht selbst versuchst.

    Willst du von uns Code oder willst du es selber machen? Mir scheint als ob du indirekt fragst ob das jemand für dich machen kann.


    p.s. verstehe mich nicht falsch. Keiner hat was dagegen dir zu sagen was da passiert oder was auch nicht.
    Nur geht es doch darum das du es lernst und du die Arbeit machst und uns bei Problemen befragst.
    Und nicht du uns eine Aufgabe gibst und wir die für lau erledigen.
    Grüße , xChRoNiKx

    Nützliche Links:
    Visual Studio Empfohlene Einstellungen | Try-Catch heißes Eisen

    Der Laie schrieb:

    dann kann ich doch mit den checkboxen die jeweiligte Richtung doch manuell verändern [...] ist ein Verkehrsgeschehen stattfinden. Oder ??


    Ob du es kannst zeigt sich vermutlich erst, wenn du es machst- bzw. versuchst zu machen.
    Dein Checkboxen-Steuerungs-Konzept scheint mir aber gleichma fragwürdig:
    Ist das so gedacht, wenn die Checkbox "RechtsRum" aussagt, dass dann das Auto an jeder vorkommenden Kreuzung rechts abbiegen wird?

    Was ich dir als Konzept-Anregung vorschlagen täte ist Pacman. Das ist ja eine Art Strassen-Netz, in dem der PacMan tastatur-gesteuert herumrennt.
    Google das mal und versuch eine Site zu finden, die dich nicht datenmässig auszieht.

    Die Grundidee fängt übrigens an mir zu gefallen.
    Da könnte man auf lange Sicht evtl. iwie ein lustiges Multi-Player-Spiel raus entwickeln - "Wettrennen in der Stadt" oder sowas.

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

    Sammal, spinn ich oder was? Wieso wird denn hier in Post#24 schon wieder ohne jegliche Veränderung mein Code gepostet? Ich hab ja nix dagegen, dass er verwendet wird, aber den Code haben wir schon in Post#7 (mein ZIP-Projekt), #10 und #14 gesehen. Hier kommt nix, aber auch gar nix an Eigeninitiative oder was auch immer. Daher bin ich auch hier raus :cursing:
    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.
    VaporiZed moin

    ich weis das ich dein Code benutzt habe nur ich wollte ihn mit meiner Idee erweitern bzw einfügen du hattest mir zwar die Grundidee oder Vorschlag geben und ich wollte andere nur Fragen ob meine vermutliche Idee klappen könnte was ich da vor hatte.
    Klar arbeite ich mit deinem Code hattest du mir ja auch gesagt gehabt ( lerne, verändere ihn, passe ihn an deine Bedürfnisse an, etc ) und da ich gesehen habe das in bestimmten Codeblocks Funktionen drin sind die nützlich seinen können oder sind wollte ich meine Ziel die Idee die ich habe nur ein bringen und diese nur erweitern da ich kein Profi bin wie manche hier sagen mehr oder weniger wollte ich nur vermutliche Bestätigung haben und mehr nicht. und warum darf ich nicht von anderen lernen.

    LG

    Der Laie schrieb:

    und warum darf ich nicht von anderen lernen.
    Du darfst es selbstverständlich.
    Nur merken wir nix davon. ;(
    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!