Problem beim Programmieren eines Mini-Spiels

  • VB.NET

Es gibt 17 Antworten in diesem Thema. Der letzte Beitrag () ist von Prof.Eich.

    Problem beim Programmieren eines Mini-Spiels

    Hallo Community,

    Ich bin dabei ein kleines Spiel zu programmieren. Bei diesem Spiel bewege ich eine Figur (Picture-Box) mit den Pfeiltasten. Nun suche ich einen Befehl, mit dem ich ein Hindernis programmieren kann, welches meine Figur nicht durchqueren kann. Dieses Hindernis sollte auch eine Picture-Box oder ein Panel sein.

    Über eine schnelle Antwort würde ich mich freuen.

    Prof.Eich
    Erstmal Willkommen im Forum :thumbup:

    Zu deinem Problem: Am besten lässt du das mit den PictureBoxen direkt sein, die sind nämlich 1. nicht dafür gedacht und 2. kommst du irgendwann an die Grenze das man nicht mehr weiter kann( so wie du jetzt ).
    Wenn du wirklich schon ein Minispiel programmieren willst, dann guck dir, wie mein Vorposter schon erwähnt hat, GDI+ an. Damit werden auch die Controls gezeichnet (Button, CheckBox etc.) die du im Werkzeugkasten findest.
    Oder eine bessere Alternative ist das XNA Framework. Damit kannst du noch viiiiel mehr machen.

    Für den Anfang reicht aber auch GDI+ und das ist garnicht soo schwer.
    Na los, gib dir nen Ruck. :thumbsup:

    Edit: Es gibt auch ein gutes Tutorial hier im Forum.

    Prof.Eich schrieb:

    Nun suche ich einen Befehl, mit dem ich ein Hindernis programmieren kann,

    VB.NET-Quellcode

    1. If PictureBox1.Location.X < 17 Then
    2. ' ... linker Anschlag
    3. Else If PictureBox1.Location.X + PictureBox1.Width > 765 Then
    4. ' ... rechter Anschlag
    5. End If
    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!
    Danke für die Antwort.
    Mit diesem Vorgehen arbeite ich bereits, jedoch ist es auf dauer lästig bei einem neuen Hindernis (Picture-Box) jedes mal die Maße einzutippen, da sich meine Figur auch noch nach oben und unten bewegen kann.

    Deshalb suche ich einen Befehl der in etwa so heißen sollte:

    If picturebox1.location = picturebox2.location then
    ' nix
    End if

    Das funktioniert jedoch nicht aber in diese Richtung sollte es gehen, wenn das nicht möglich ist werde ich wohl mein Spiel umstrukturieren müssen.
    Suchst Du so was:

    VB.NET-Quellcode

    1. Dim rc1 As New Rectangle(1, 2, 3, 4)
    2. Dim rc2 As New Rectangle(2, 3, 4, 5)
    3. If rc1.IntersectsWith(rc2) Then
    4. '
    5. Else
    6. '
    7. End If
    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!
    Soviel ich verstanden habe ist dies ein Befehl für das Zeichnen mit GDI+, liege ich da richtig?

    In meinem Programm benutze ich jedoch Picture-Boxen, die mit diesem Code nicht funktionieren (außer ich mache was falsch).


    Trotzdem Danke :thumbsup:

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Prof.Eich“ ()

    Prof.Eich schrieb:

    (außer ich mache was falsch)
    Vielleicht so:

    VB.NET-Quellcode

    1. Dim rc1 As New Rectangle(PictureBox1.Location, PictureBox1.Size)
    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!
    Vielen Dank euch zwei.

    Es funktioniert leider trotzdem noch nicht ich habe folgendes gemacht:

    VB.NET-Quellcode

    1. Dim rc1 As New Rectangle(Figur.Location,
    2. Figur.Size)
    3. Dim rc2 As New Rectangle(Haus.location, Haus.size)


    VB.NET-Quellcode

    1. If
    2. rc1.IntersectsWith(rc2) Then
    3. Else
    4. End If


    Figur ist dabei meine Spielfigur die ich bewegen kann und Haus ist ein Objekt über das die Figur nicht laufen sollte.

    Als Fehlermeldung kommt:

    Fehler beim Erstellen des Formulars. Weitere Informationen
    finden Sie in Exception.InnerException. Fehler: Der Objektverweis wurde nicht
    auf eine Objektinstanz festgelegt..

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Prof.Eich“ ()

    Prof.Eich schrieb:

    Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt..
    Da haste irgendein Objekt noch nicht mit New instanziiert, ich tippe mal auf Figur und / oder Haus.
    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!
    z.b

    VB.NET-Quellcode

    1. dim Haus as New Rectangle(x,y,w,h)
    2. dim Figur as New Rectangle(x,y,w,h)
    3. dim DEINHAUSBILD as New Bitmap("DeinFILE")
    4. dim DEINFIGURBILD as New Bitmap("DeinFILE")

    ps zum bild zeichnen dann im paint event das :

    VB.NET-Quellcode

    1. e.graphics.drawimage(DEINHAUSBILD,Haus)
    2. e.graphics.drawimage(DEINFIGURBILD,Figur)


    MFG BlackNetworkBit
    MFG 0x426c61636b4e6574776f726b426974
    InOffical VB-Paradise IRC-Server
    webchat.freenode.net/
    Channel : ##vbparadise

    Prof.Eich schrieb:

    btw was ist instanziieren?
    Haste das jetzt und knallt es noch oder bist Du schon einen Schritt weiter?
    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!