"Boulder Dash"-Klon Selbst gemacht

  • VB.NET

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

    "Boulder Dash"-Klon Selbst gemacht

    Hallo Jungs,

    Ich habe mir überlegt ein Boulder Dash-klon selbst zu Programmieren...
    Als Consolenanwendung habe ich das auch hinbekommen, jedoch habe ich immer das ganze spielfeld aktualisiert, was zu einem Blinken der Console wurde, wenn man sich zu schnell bewegt hat.
    Also habe ich mir gedacht, ich mache ein Form und Probiere es mit Pictureboxen.
    Ziemlicher reinfall, denn ich bin noch Visual Basic Anfänger und habe (nur um das Spielfeld darzustellen) über 6000 zeilen quelltext, mit auslesen von zeichen aus einer txt datei und einer abfrage bei welcher picturebox ich bin um diese dann zu füllen. (Es sind übrigens 256 Pictureboxen) ^^

    Jetz habe ich mir überlegt das vllt in einer Schleife zu machen,aber ich weiss nicht wie ich die namen der pictureboxen in der schleife durchlaufen kann, sodass ich bei jedem schleifendurchlaf eine variable aus einer datei auslese und die einer picturebox zuweise, und dann beim nächsten durchlauf alles für die nächste picturebox mache.

    Ich weiss zwar wie ich Multithreading mache und wie ich die Gegner KI programmiere, aber ich weiss das nicht und würde gern mein Programm abkürzen wenn möglich.

    Ich hoffe ihr habt meine Frage verstanden, denn ich hatte beim tippen schon schwierigkeiten hinterher zu kommen.

    Vielen Dank schonmal für die (hoffentlich) zahlreichen antworten :D
    Ich habe bei meinem Sokoban Klon damals den Inhalt des Spielfeldes in Variablen gemerkt und nach dem verschieben erstmal nur in den Variablen verschoben. Im Anzeige Sub dann den aktuellen Stand mit dem vorherigen verglichen und nur geänderte aktualisiert.
    Gruß
    Peterfido

    Keine Unterstützung per PN!
    Ja... das mit dem array wollte ich auch so machen... also das spielfeld quasi als array machen und danach dann in pictureboxen ausgeben.... aber ich wollte ein Beispiel wie man eine Schleife macht in der sich die Pictureboxen ändern.
    also ungefähr so (nur das es net geht ^^) :

    VB.NET-Quellcode

    1. dim i as integer
    2. for i = 0 to 256
    3. picturebox(i).Image = new bitmap "mein_pfad_+_bildername.bmp"
    4. next i



    so dass es quasi für jedes "i" ein bild in die nächste picturbox gemacht wird.
    (also:
    für "i = 1" dass es dann "picturebox1.image" ist und für i = 2 "picturebox2.image ist"..

    Also dass ich nicht 256 zeilen nur:
    picturebox1.image = new bitmap "pfad_bild.bmp"
    picturebox2.image = new bitmap "anderes_bild.bmp"
    und so weiter.....
    quasi nur eine 5 zeilen schleife oder so habe...
    Hoffe ihr versteht was ich meine ;)
    cool.... ja danke ich werds mal ausprobieren ^^
    und jetz hab ich noch ein problem... :(
    mein Multithreading will nicht so wie ich es gern hätte ;)
    ich hab folgendes geschrieben:

    VB.NET-Quellcode

    1. Private Sub frm_Main_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
    2. Dim firstThread As ThreadStart
    3. firstThread = New ThreadStart(AddressOf Steine_fallen)
    4. Dim myFirstThread As New Thread(firstThread)
    5. myFirstThread.Start()
    6. Thread.Sleep(10)' Das folgende sind nur If abfragen für die Bewegungen des Männchens
    7. If e.KeyCode = Keys.W Then
    8. where_is_waldo(man)
    9. Spielbrett(man) = "0"
    10. lol.Image = New Bitmap("c:\Datenablage\Wochenprojekt\nixx.bmp")
    11. man -= 16
    12. If Spielbrett(man) = "2" Or Spielbrett(man) = "3" Then
    13. man += 16
    14. End If
    15. Spielbrett(man) = "5"
    16. where_is_waldo(man)
    17. lol.Image = New Bitmap("c:\Datenablage\Wochenprojekt\Männchen.bmp")
    18. ElseIf e.KeyCode = Keys.S Then
    19. where_is_waldo(man)
    20. Spielbrett(man) = "0"
    21. lol.Image = New Bitmap("c:\Datenablage\Wochenprojekt\nixx.bmp")
    22. man += 16
    23. If Spielbrett(man) = "2" Or Spielbrett(man) = "3" Then
    24. man -= 16
    25. End If
    26. Spielbrett(man) = "5"
    27. where_is_waldo(man)
    28. lol.Image = New Bitmap("c:\Datenablage\Wochenprojekt\Männchen.bmp")
    29. ElseIf e.KeyCode = Keys.A Then
    30. where_is_waldo(man)
    31. Spielbrett(man) = "0"
    32. lol.Image = New Bitmap("c:\Datenablage\Wochenprojekt\nixx.bmp")
    33. man -= 1
    34. If Spielbrett(man) = "2" Or Spielbrett(man) = "3" Then
    35. man += 1
    36. End If
    37. Spielbrett(man) = "5"
    38. where_is_waldo(man)
    39. lol.Image = New Bitmap("c:\Datenablage\Wochenprojekt\Männchen.bmp")
    40. ElseIf e.KeyCode = Keys.D Then
    41. where_is_waldo(man)
    42. Spielbrett(man) = "0"
    43. lol.Image = New Bitmap("c:\Datenablage\Wochenprojekt\nixx.bmp")
    44. man += 1
    45. If Spielbrett(man) = "2" Or Spielbrett(man) = "3" Then
    46. man -= 1
    47. End If
    48. Spielbrett(man) = "5"
    49. where_is_waldo(man)
    50. lol.Image = New Bitmap("c:\Datenablage\Wochenprojekt\Männchen.bmp")
    51. End If


    und das will ich parallel laufen lassen mit:

    VB.NET-Quellcode

    1. Sub Steine_fallen()
    2. For i As Integer = 239 To 0 Step -1
    3. If Spielbrett(i) = "3" And Spielbrett(i + 16) = "0" Then
    4. Spielbrett(i) = "0"
    5. where_is_waldo(i)
    6. lol.Image = New Bitmap("c:\Datenablage\Wochenprojekt\nixx.bmp")
    7. Spielbrett(i + 16) = "3"
    8. where_is_waldo(i + 16)
    9. lol.Image = New Bitmap("c:\Datenablage\Wochenprojekt\NZStein.bmp")
    10. End If
    11. Next i
    12. End Sub


    Ich kann es umschreiben wie ich will (mit schleifen drum und Thread.sleep(100) usw. und es fallen entweder die steine sofort bis ganz unten oder nur wenn ich mich bewege :(

    Manchmal Laggt das Programm auch richtig doll... weiss nicht woran das liegt :(

    Könnt ihr mir dabei auch helfen???

    Vielen Dank schonmal für die bereits erhaltene Hilfe ;) :thumbsup:
    ja aber wenn ich dann eine "unendlich" schleife darum baue, dann hängt sich das programm auf bzw. geht da halt unendlich mal durch und ich weiss nicht was ich als abbruch bedingung nehmen kann -.-

    ich probier schon die ganze zeit -.- aber ich komm net drauf xD
    _______

    ich habs jetz erweitert um eine while a <> 0 schleife (obwohl "a" 1 ist) xD

    jetz rennt er die ganze zeit immer und imemr wieder durch die Männchen Bewege Schleife ohne die andere Abzufragen -.-

    Kann es sein dass er das macht was ich will, nur ich sehe es nicht weil er die pictureboxen nicht aktualisiert?

    Edit by Agent: Keine Doppelposts! Es gibt eine Bearbeitenfunktion!

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