Problem bei meinem Programmierten Spiel

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Select10.

    Problem bei meinem Programmierten Spiel

    Hallo liebe Community, Ich habe ein Problem bei meinem Spiel "Blockman", und zwar habe ich es soweit so gut programmiert das man Blöcke setzen kann,auswählen kann,sich bewegen kann aber jedoch weiß ich den Code nicht für das Abbauen der Blöcke.

    Bitte den folgenden Code nicht weiter verwenden!
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class Spiel
    2. Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Integer) As Integer
    3. Dim Tastendruck As String
    4. Dim count As Integer
    5. Dim pfad As String = "img/"
    6. Public aktblock As String = "grass"
    7. Dim typ As String = ".png"
    8. Dim auswahl As String = pfad + aktblock + typ
    9. Public chara As New PictureBox
    10. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    11. chara.Width = 32
    12. chara.Height = 65
    13. Dim charapoint As New Point(200, 200)
    14. chara.Location = charapoint
    15. chara.BackgroundImage = Image.FromFile("img/chara.png")
    16. chara.BackgroundImageLayout = ImageLayout.Zoom
    17. Controls.Add(chara)
    18. Panel1.BackgroundImage = Image.FromFile("img/leiste.png")
    19. Panel1.BackColor = Color.Transparent
    20. End Sub
    21. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    22. For charabewegung = 1 To 255
    23. Tastendruck = GetAsyncKeyState(charabewegung)
    24. If Tastendruck = -32767 Then
    25. Select Case charabewegung
    26. Case 65
    27. chara.Left -= 32
    28. Case 68
    29. chara.Left += 32
    30. Case 83
    31. chara.Top += 32
    32. Case 87
    33. chara.Top -= 32
    34. Case 2
    35. Dim grass As New PictureBox
    36. grass.Width = 32
    37. grass.Height = 32
    38. grass.BackgroundImageLayout = ImageLayout.Zoom
    39. grass.BackgroundImage = Image.FromFile(pfad + aktblock + typ)
    40. grass.Left = chara.Right
    41. grass.Top = chara.Bottom - 32
    42. Controls.Add(grass)
    43. End Select
    44. End If
    45. Next
    46. End Sub
    47. Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click
    48. aktblock = "grass"
    49. aktuell.BackgroundImage = Image.FromFile(pfad + "grass" + typ)
    50. End Sub
    51. Private Sub PictureBox2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox2.Click
    52. aktblock = "cobblestone"
    53. aktuell.BackgroundImage = Image.FromFile(pfad + "cobblestone" + typ)
    54. End Sub
    55. Private Sub PictureBox3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox3.Click
    56. aktblock = "cyanblue"
    57. aktuell.BackgroundImage = Image.FromFile(pfad + "cyanblue" + typ)
    58. End Sub
    59. Private Sub PictureBox4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox4.Click
    60. aktblock = "obsidian"
    61. aktuell.BackgroundImage = Image.FromFile(pfad + "obsidian" + typ)
    62. End Sub
    63. Private Sub PictureBox5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox5.Click
    64. aktblock = "wood"
    65. aktuell.BackgroundImage = Image.FromFile(pfad + "wood" + typ)
    66. End Sub
    67. Private Sub LinkLabel1_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles LinkLabel1.LinkClicked
    68. System.Diagnostics.Process.Start("http://www.jrbprograms.de.tl")
    69. End Sub
    70. Private Sub LinkLabel2_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles LinkLabel2.LinkClicked
    71. System.Diagnostics.Process.Start("mailto:" & "justinback66@gmail.com?subject=Support")
    72. End Sub
    73. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    74. MessageBox.Show("Rechte Maustaste: Blöcke Platzieren" & vbNewLine & "W: Hoch" & vbNewLine & "A: Links" & vbNewLine & "S: Unten" & vbNewLine & "D: Rechts")
    75. End Sub
    76. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    77. MessageBox.Show("Programmierer: Justin Back" & vbNewLine & "Tester: SpieleHund" & vbNewLine & "Tester: Offen" & vbNewLine & "Tester: Offen")
    78. End Sub
    79. Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
    80. System.Diagnostics.Process.Start("mailto:" & "justinback66@gmail.com?subject=Bewerben")
    81. End Sub
    82. Private Sub PictureBox6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox6.Click
    83. aktblock = "gold"
    84. aktuell.BackgroundImage = Image.FromFile(pfad + "gold" + typ)
    85. End Sub
    86. Private Sub PictureBox7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox7.Click
    87. aktblock = "orange"
    88. aktuell.BackgroundImage = Image.FromFile(pfad + "orange" + typ)
    89. End Sub
    90. Private Sub PictureBox8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox.Click
    91. aktblock = "iron"
    92. aktuell.BackgroundImage = Image.FromFile(pfad + "iron" + typ)
    93. End Sub
    94. Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label1.Click
    95. End Sub
    96. Private Sub aktuell_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles aktuell.Click
    97. End Sub
    98. Private Sub PictureBox9_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox9.Click
    99. aktblock = "TimHead"
    100. aktuell.BackgroundImage = Image.FromFile(pfad + "TimHead" + typ)
    101. End Sub
    102. Private Sub PictureBox10_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox10.Click
    103. aktblock = "dirt"
    104. aktuell.BackgroundImage = Image.FromFile(pfad + "dirt" + typ)
    105. End Sub
    106. Private Sub PictureBox11_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox11.Click
    107. aktblock = "bedrock"
    108. aktuell.BackgroundImage = Image.FromFile(pfad + "bedrock" + typ)
    109. End Sub
    110. Private Sub PictureBox12_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox12.Click
    111. aktblock = "dia"
    112. aktuell.BackgroundImage = Image.FromFile(pfad + "dia" + typ)
    113. End Sub
    114. Private Sub PictureBox13_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox13.Click
    115. aktblock = "oak"
    116. aktuell.BackgroundImage = Image.FromFile(pfad + "oak" + typ)
    117. End Sub
    118. Private Sub PictureBox14_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox14.Click
    119. aktblock = "chest"
    120. aktuell.BackgroundImage = Image.FromFile(pfad + "chest" + typ)
    121. End Sub
    122. Private Sub PictureBox15_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox15.Click
    123. aktblock = "rail"
    124. aktuell.BackgroundImage = Image.FromFile(pfad + "rail" + typ)
    125. End Sub
    126. Private Sub PictureBox19_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox19.Click
    127. aktblock = "npcb"
    128. aktuell.BackgroundImage = Image.FromFile(pfad + "npcb" + typ)
    129. End Sub
    130. Private Sub PictureBox18_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox18.Click
    131. aktblock = "npcg"
    132. aktuell.BackgroundImage = Image.FromFile(pfad + "npcg" + typ)
    133. End Sub
    134. Private Sub PictureBox17_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox17.Click
    135. aktblock = "npcr"
    136. aktuell.BackgroundImage = Image.FromFile(pfad + "npcr" + typ)
    137. End Sub
    138. Private Sub PictureBox16_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox16.Click
    139. aktblock = "chara"
    140. aktuell.BackgroundImage = Image.FromFile(pfad + "chara" + typ)
    141. End Sub
    142. Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
    143. MessageBox.Show("Hallo! " & namen.Text & " mein Name ist Tim. Lass uns doch die Welt retten")
    144. End Sub
    145. Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
    146. MessageBox.Show("Tschüss! " & namen.Text & " Komm aber wieder es gibt nohc viel zu tun!")
    147. Me.Close()
    148. End Sub
    149. Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
    150. mini.Text += 1
    151. End Sub
    152. Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click
    153. MessageBox.Show("Ich mag es leuten zu helfen!")
    154. End Sub
    155. Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click
    156. MessageBox.Show("Ich komme vom Planeten Xenor")
    157. End Sub
    158. Private Sub Button9_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button9.Click
    159. End Sub
    160. Private Sub mini_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mini.Click
    161. End Sub
    162. Private Sub Button10_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button10.Click
    163. MessageBox.Show("Public Alpha 0.05" & vbNewLine & "___________________" & vbNewLine & " =-= Bugs/Glitches Behoben =-= " & vbNewLine & " =-= Stein hinzugefügt (Prefix: Stein) =-=" & vbNewLine & " =-= Neue Charakter Textur (Umfrage läuft ob es euch gefällt)" & vbNewLine & " =-= Endlich eine Geschichte hinzugefügt, die das Spiel komplett ändert =-=" & vbNewLine & " =-= Interface geändert =-=")
    164. End Sub
    165. Private Sub PictureBox20_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox20.Click
    166. aktblock = "crail"
    167. aktuell.BackgroundImage = Image.FromFile(pfad + "crail" + typ)
    168. End Sub
    169. Private Sub PictureBox21_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox21.Click
    170. aktblock = "crail1"
    171. aktuell.BackgroundImage = Image.FromFile(pfad + "crail1" + typ)
    172. End Sub
    173. Private Sub PictureBox22_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox22.Click
    174. aktblock = "crail2"
    175. aktuell.BackgroundImage = Image.FromFile(pfad + "crail2" + typ)
    176. End Sub
    177. Private Sub PictureBox23_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox23.Click
    178. aktblock = "crail3"
    179. aktuell.BackgroundImage = Image.FromFile(pfad + "crail3" + typ)
    180. End Sub
    181. Private Sub PictureBox24_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox24.Click
    182. aktblock = "rail1"
    183. aktuell.BackgroundImage = Image.FromFile(pfad + "rail1" + typ)
    184. End Sub
    185. Private Sub PictureBox25_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox25.Click
    186. End Sub
    187. Private Sub Button11_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button11.Click
    188. System.Diagnostics.Process.Start("mailto:" & "BlockmanTim@web.de?subject=Fragen")
    189. End Sub
    190. Private Sub PictureBox26_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox26.Click
    191. aktblock = "door"
    192. aktuell.BackgroundImage = Image.FromFile(pfad + "door" + typ)
    193. End Sub
    194. Private Sub PictureBox28_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox28.Click
    195. aktblock = "diab"
    196. aktuell.BackgroundImage = Image.FromFile(pfad + "diab" + typ)
    197. End Sub
    198. Private Sub PictureBox27_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox27.Click
    199. aktblock = "glas"
    200. aktuell.BackgroundImage = Image.FromFile(pfad + "glas" + typ)
    201. End Sub
    202. Private Sub PictureBox29_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox29.Click
    203. aktblock = "sap"
    204. aktuell.BackgroundImage = Image.FromFile(pfad + "sap" + typ)
    205. End Sub
    206. Private Sub Label32_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
    207. End Sub
    208. Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs)
    209. End Sub
    210. Private Sub namen_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles namen.TextChanged
    211. End Sub
    212. Private Sub LineShape1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LineShape1.Click
    213. aktblock = "ich"
    214. aktuell.BackgroundImage = Image.FromFile(pfad + "ich" + typ)
    215. End Sub
    216. Private Sub GroupBox5_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles GroupBox5.Enter
    217. End Sub
    218. Private Sub PictureBox8_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox8.Click
    219. MessageBox.Show("Code gefunden: 4543-4654-6354")
    220. End Sub
    221. Private Sub Button12_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
    222. End Sub
    223. Private Sub Button12_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button12.Click
    224. System.Diagnostics.Process.Start("mailto:""justinback66@gmail.com?subject=Gewinnspiel")
    225. End Sub
    226. Private Sub PictureBox30_Click(sender As System.Object, e As System.EventArgs) Handles PictureBox30.Click
    227. aktblock = "stone"
    228. aktuell.BackgroundImage = Image.FromFile(pfad + "stone" + typ)
    229. End Sub
    230. Private Sub Button13_Click(sender As System.Object, e As System.EventArgs) Handles Button13.Click
    231. MessageBox.Show("Dein Bewegungs ablauf sieht wie gefolgt so aus: (" & Texter.Text & ").")
    232. End Sub
    233. Private Sub Button14_Click(sender As System.Object, e As System.EventArgs) Handles Button14.Click
    234. MessageBox.Show("Die Geschichte von Blockman" & vbNewLine & "_________________________" & vbNewLine & "Vor genau 10 Jahren,kam ein Superheld vom Planet Xenor," & vbNewLine & "um die Erde wiederaufzubauen, die wegen einem riesigen," & vbNewLine & "Meteor zerstört worden ist,er hatte die gewaltigen Aufbau kräfte mit denen er der Erde helfen wollte.")
    235. End Sub
    236. Private Sub PictureBox31_Click(sender As System.Object, e As System.EventArgs) Handles PictureBox31.Click
    237. aktblock = "wolle"
    238. aktuell.BackgroundImage = Image.FromFile(pfad + "wolle" + typ)
    239. End Sub
    240. End Class

    Freue mich auf Antworten!
    EDIT: Ich habe jetzt die Msgboxen geändert


    Schriftgröße erneut angepasst!
    -Artentus
    Fragen dürfen gerne via PN gesendet werden ;)

    Ich versuche sie schnell wie möglich zu beantworten und euch zu helfen :)

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „Select10“ ()

    Oh man, sorry aber die Schriftgröße zerstört meine Augen, ändere das bitte in was leslicheres und packe den Code bitte in einen expander/spoiler.

    Soo..
    • Du solltest dir eine vernünfitge Benennung der Controls angewöhnen, PictureBox31 etc. sind keine aussagekräftigen Namen.
    • Du solltest dir die neue MessageBox.Show() Methode ansehen, statt MsgBox() zu benutzen, MsgBox() ist veraltet (mehr dazu beispielsweise hier)
    Dann mal zum eigentlichen Problem:
    Das mit dem Code ist allgemein ziemlich doof zum scrollen gewesen bei der übertriebenen Größe.
    Ich habe gesehen, dass du deine "Blöcke" scheinbar als PictureBoxen + Zuweisung der Image Property zuweist/darstellst.

    Wenn du das Bild einer PictureBox löschen möchtest, sollte da

    VB.NET-Quellcode

    1. PictureBox.Image = Nothing
    reichen, ggf. noch deine Auswahl usw. resetten.

    Die nächsten Antworten die dann wahrscheinlich folgen werden wären:
    Benutze GDI und eigene Klassen zum Zeichnen deiner Objekte, darin kannst du dann passende Properties bereitstellen und ggf. noch Form.DoubleBuffered auf True stellen.

    Wenn du noch neu bist, kanns sein, dass es auch so reicht, aber irgendwann ist es besser du realisierst sowas mit GDI. Es gibt dazu schon mehrere Threads.

    EDIT: Danke Artentus ;)!
    Polling is trolling!

    Achtung: Ich habe die komische Angewohnheit, simple Dinge zu verkomplizieren..
    Ok Vielen Dank und ja ich bin neu ;) so jetzt nochmal einprogrammieren ;)

    EDIT: Da das jetzt ein klein wenig neuland für mich ist frage ich mich wo

    VB.NET-Quellcode

    1. PictureBox.Image = Nothing
    rein kommt

    Vielen Dank für Antworten
    Fragen dürfen gerne via PN gesendet werden ;)

    Ich versuche sie schnell wie möglich zu beantworten und euch zu helfen :)

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Select10“ ()

    @Select10 Willkommen im Forum. :thumbup:
    1. Tastendrücke werden im KeyDown-Event abgefangen und verarbeitet, ein Timer ist da nicht erforderlich.

      VB.NET-Quellcode

      1. Private Sub Form1_KeyDown(sender As Object, e As KeyEventArgs) Handles MyBase.KeyDown
      2. Select Case e.KeyCode
      3. Case Keys.Up
      4. '...
      5. Case Keys.Down
      6. '...
      7. Case Keys.Left
      8. '...
      9. Case Keys.Right
      10. '...
      11. End Select
      12. End Sub

    2. Schmeiß alle leeren Prozeduren raus, die verwirren nur.
    3. Wozu brauchst Du so viele PictureBoxen? Nimm genau eine und erstell Dir mathematisch ein Raster darauf:

      VB.NET-Quellcode

      1. Private NB_X As Integer = 13
      2. Private NB_Y As Integer = 14
      3. Private Sub PictureBox1_MouseMove(sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseMove
      4. Dim x = NB_X * e.X \ Me.PictureBox1.Width
      5. Dim y = NB_Y * e.Y \ Me.PictureBox1.Height
      6. Label1.Text = x.ToString
      7. Label2.Text = y.ToString
      8. End Sub

    4. Lade die Bilder nicht von der Festplatte, sondern pack sie in die Ressourcen Deines Programms:
      Projekt -> Eigenschaften -> Ressourcen -> Ressourcen hinzufügen
      und dann so aufrufen:

      VB.NET-Quellcode

      1. img = My.Ressources.Image15
    5. Kannst Du mit wenigen Sätzen Dein Spiel beschreiben?
    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!
    Ok danke ich versuchs mal ;)
    Fragen dürfen gerne via PN gesendet werden ;)

    Ich versuche sie schnell wie möglich zu beantworten und euch zu helfen :)