Picturebox auf Picturebox setzen per Tastendruck

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von Lukas97.

    Picturebox auf Picturebox setzen per Tastendruck

    Hallo,

    ich bin mal wieder...
    Wie füge ich eine Picturebox über einen Tastendruck auf eine Picturebox hinzu?
    Das mit den Tastendruck habe ich schon:

    VB.NET-Quellcode

    1. If e.KeyCode = Keys.Space Then
    2. Dim Dirt As PictureBox = New PictureBox
    3. locationX = PicturePlayer.Location.X
    4. locationY = PicturePlayer.Location.Y
    5. Dirt.Location = New Point(locationX + 25, locationY)
    6. Dirt.Image = My.Resources.Dirt
    7. Dirt.Width = Dirt.Image.Width
    8. Dirt.Height = Dirt.Image.Height
    9. Me.Controls.Add(Dirt)
    10. Dirt.Show()
    11. End If

    Der Spieler bewegt sich auf einer großen Picturebox, vorher war es nur die Form. Weiß da jemand eine Lösung?

    MfG
    Lukas
    Wie füge ich eine Picturebox über einen Tastendruck auf eine Picturebox hinzu?

    Könntest du die Frage vielleicht ein bisschen präziser formulieren ?
    Der Spieler bewegt sich auf einer großen Picturebox, vorher war es nur die Form. Weiß da jemand eine Lösung?

    Welcher Spieler?

    Was genau ist dein Problem ? :)
    Die Lösung: es sein lassen. Mit Controls baut man kein "Spiel" (außer vllt TicTacToe oder Minesweeper und da hörts auch schon auf). Überlege dir ein Klassen-Konzept welches Spieler, Gegner und Welt unter einen Hut bekommt und zeichne das mit GDI.
    Genau am besten wie der Vorposter gesagt hat.
    FreakJNS hat ein paar Tutorials dazu, die sind sehr gut, und schnell zu verstehen.

    Edit: Hab's mir angeguckt, GDI und XNA ist wirklich besser, mit PictureBoxen bringt das nichts.

    Edit: Schau dir das mal an: Das kann selbst ich in VB übersetzen :) bitte

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

    Ich hab mir das projekt mal angesehen, jede menge fails xD

    VB.NET-Quellcode

    1. Dim ich As String = RandomDll.Zahlen(Label1.Text, Label1.Text)

    Ganz schlechte Idee schon zum Erstellzeitpunkt der Klasse auf Controls zugreifen zu wollen. Da kommt meistens humbuk bei raus.

    Gebe deinem Projekt mal Option Strict On, dann wird das angekreidet:

    VB.NET-Quellcode

    1. Dim i As Integer
    2. For i = 0 To 10 Step 0.5


    Erstens: Das ist in meinen Augen schlechter Stil, mache einen Einzeiler daraus, denn die Zählervariable i wirst du außerhalb der Schleife nichtmehr benutzen wollen/sollen:

    VB.NET-Quellcode

    1. For i as integer = 0 to 10


    Zweitens: Step 0.5 funktioniert hier nicht. Integer ist eine Ganzzahl, also entweder 2 oder 3 - aber nie 2.5 ! Unter Strict Off wird also immer fleißig aufgerundet (im Falle step = 0.5), was bedeutet, dass fast alle Werte doppelt vorkommen: 0,1,1,2,2,3,3, etc noch lustiger: es wird eine Dauerschleife. Fail² xD

    VB.NET-Quellcode

    1. PicturePlayer.Location = New Point(PicturePlayer.Location.X, PicturePlayer.Location.Y - 25)

    lass es bleiben^^ Controls umherschwirren zu lassen mag erstmal cool aussehen stößt aber schon sehr bald an Grenzen. Denke mal darüber nach, wie du eine Bewegung flüssiger darstellen könntest, wird so nur sehr schwer funktionieren.

    trotzdem nicht entmutigen lassen! Spiele sind anders gesagt besonders komplexe Programme und für Programmieranfänger etwas zuviel^^
    lg


    GDI ist für WinForms - du kannst damit direkt auf Controls (oder Bilder) zeichnen. Als erstes versuche aber die Welt, den Spieler, Gegner, etc in Klassen zu fassen und das ganze irgendwie mit Struktur zu hinterlegen. Ansonsten legst du dir wieder Steine in den Weg. Die Grundlagen sind zum Programmieren wichtig - für Spiele gleich doppelt!
    Ich bekomm ja schon nen Fehler bei .drawLine .... Oo

    .DrawLine(Pens.Black, 400, 400)
    ist blau unterstrichen, mit diese Meldung:

    Quellcode

    1. C:\WINDOWS\Microsoft.NET\Framework\v3.5\Vbc.exe /noconfig /imports:Microsoft.VisualBasic,System,System.Collections,System.Collections.Generic,System.Data,System.Drawing,System.Diagnostics,System.Windows.Forms,System.Linq,System.Xml.Linq /optioncompare:Binary /optionexplicit+ /optionstrict:custom /nowarn:42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 /optioninfer+ /rootnamespace:Minecraft /doc:obj\Release\Minecraft.xml /define:"CONFIG=\"Release\",TRACE=-1,_MyType=\"WindowsForms\",PLATFORM=\"AnyCPU\"" /reference:"c:\Programme\Reference Assemblies\Microsoft\Framework\v3.5\System.Core.dll","c:\Programme\Reference Assemblies\Microsoft\Framework\v3.5\System.Data.DataSetExtensions.dll",C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Data.dll,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Deployment.dll,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.dll,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Drawing.dll,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Windows.Forms.dll,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Xml.dll,"c:\Programme\Reference Assemblies\Microsoft\Framework\v3.5\System.Xml.Linq.dll" /main:Minecraft.My.MyApplication /debug:pdbonly /filealign:512 /optimize+ /out:obj\Release\Minecraft.exe /resource:obj\Release\Minecraft.Form1.resources /resource:obj\Release\Minecraft.Resources.resources /target:winexe Form1.vb Form1.Designer.vb "My Project\AssemblyInfo.vb" "My Project\Application.Designer.vb" "My Project\Resources.Designer.vb" "My Project\Settings.Designer.vb"


    //EDIT
    Fehler gefunden, blödheit XD