picturebox.location produziert codefehler

  • VB.NET

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

    picturebox.location produziert codefehler

    Hallo,

    ..ich bin dabei ein MzeGame zu programmieren (mit kleinen schritten stetig vorwärts). Jetzt versuche ich einen "schuß" zu implementieren um dann im nächsten Schritt kleine Sachen zu zerstören (es läuft dann demnächst auf eine Kolissionsabfrage hinaus). Jetzt zu meinen Problem:

    über "spacebar" starte ich den schuß ->funktioniert


    VB.NET-Quellcode

    1. If e.KeyCode = Keys.Space Then
    2. Timer1.Enabled = True
    3. PictureBox2.Location = New Point(PictureBox1.Location.X + 46, PictureBox1.Location.Y + 40)
    4. PictureBox3.Location = New Point(PictureBox1.Location.X + 46, PictureBox1.Location.Y + 40)
    5. PictureBox4.Location = New Point(PictureBox1.Location.X + 46, PictureBox1.Location.Y + 40)
    6. PictureBox5.Location = New Point(PictureBox1.Location.X + 46, PictureBox1.Location.Y + 40)
    7. End If




    pictureboxen werden vom objekt per Timer in die Richtungen entsendet ->funktioniert



    VB.NET-Quellcode

    1. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    2. PictureBox2.Visible = True
    3. PictureBox3.Visible = True
    4. PictureBox4.Visible = True
    5. PictureBox5.Visible = True
    6. PictureBox2.Top -= 10
    7. PictureBox3.Top += 10
    8. PictureBox4.Left -= 10
    9. PictureBox5.Left += 10




    pictureboxen(2-5) sollen in einer bestimmten entfernung zur picbox1 wieder verschwinden ->geht nicht :wacko:


    VB.NET-Quellcode

    1. If PictureBox2.Top = PictureBox1.Location.Y - 45 Then PictureBox2.Enabled = False
    -> nichts passiert

    oder anders

    VB.NET-Quellcode

    1. If PictureBox2.Location.Y = PictureBox1.Location.Y - 45 Then PictureBox2.Enabled = False
    -> nichts passiert

    was mach ich falsch? habs auch zum testen nach x umgestellt, aber es bleibt dabei..die verflixte picbox bleibt sichtbar

    Mit Freundlichem Gruß Tobi
    Nimm GDI+ zur Hand, Spiele mit Controls sind Bullshit.
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Das hab ich schon des öfteren gelesen.
    Leider hilft mir das im Moment nicht! Ich programmiere nicht für andere sondern bisher für mich, um erlerntes zu festigen und Stück für Stück zu erweitern. GDI steht auf der Agenda, aber eben noch nicht jetzt.

    Deshalb: dein Beitrag hilft mir gerade nicht viel :(
    Du lernst aber nichts, wenn du es falsch machst (außer vielleicht, warum das, was du machst, falsch ist), und Controls sind eindeutig komplett ungeeignet für Spiele, darüber lässt sich nicht streiten.
    Wenn du glaubst, du bist noch nicht bereit für GDI+, dann such dir ein anderes Projekt, GDI+ ist bei sowas Grundvoraussetzung, besser noch DirectX.
    Das GDI hierfür besser geeignet wäre steht garnicht zur Diskussion, das ist mir auch klar. Ich versuche hier ein programm zu erstellen mit minimalistischen Werkzeugen (die Mittel, die mir im moment bereit stehen).

    Wenn du glaubst, du bist noch nicht bereit für GDI+, dann such dir ein anderes Projekt, GDI+ ist bei sowas Grundvoraussetzung, besser noch DirectX.


    Bisher funktioniert es aber (!), bis eben diese verflixte "Entfernung von picBox" auftauchte.
    Ich will hier nicht behaupten das das hier elegant, optimal oder richtig gelöst wird..sondern nur das es trotz allem scheinbar (irgendwie?) ?( funktioniert.



    mit >-40 oder <-40 usw hab ich herum experimentiert (zum testen den Timer als "then" event eingesetzt)..der Timer stoppt,im selben code mit der PicBox eingesetzt passiert trotzdem weiterhin nix.


    Edit: hab den Denkfehler gerade bemerkt..Danke nochmal, RushDen..lag doch and der direkten zuordnung anstatt zu vergleichen.

    Im Timer-event:

    VB.NET-Quellcode

    1. If PictureBox3.Top > PictureBox1.Top + 100 Then Timer1.Enabled = False
    2. If PictureBox3.Top > PictureBox1.Top + 100 Then PictureBox3.Visible = False



    Danke an alle.

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

    Das Problem mit dem "Lernen mit den derzeit verfügbaren Mitteln" (mit aller Gewalt) ist, dass sich dieses falsch gelernte ebenso verfestigt wie hättest du richtiges gelernt.
    Du gleichst also einem, der aufgrund einer Sehschwäche gelernt hat, nur noch ein Auge zu nutzen. Dieses gelernte ist nicht nur unnütz, sondern er steht sich damit auch noch massiv selbst im Weg, und man muß ihn später mühsam zurück-umlernen, etwa, indem man monatelang sein stärkeres Auge zuklebt.

    Deshalb rät dir jeder Progger: lern besser nichts, als dass du dir untaugliches Zeugs aneignest. Noch besser ist natürlich, es gleich richtig zu lernen.