Minecraft 2D Block Problem

  • VB.NET

Es gibt 50 Antworten in diesem Thema. Der letzte Beitrag () ist von Eistee.

    Minecraft 2D Block Problem

    Guten Abend, ich weiß nicht ob es hierher gehört...
    Wenn nicht bitte verschieben!

    Zu meinen Problem:
    Ich versuche mich zurzeit an einem Minecraft 2D.
    Nun habe ich das Problem, das der Spieler durch alles durch gehen kann.
    ist das möglich, das der Spieler nicht durch blöcke gehen kann?
    Hier ist mal mein Code:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Integer) As Integer
    3. Dim tastendruck As String
    4. Dim pfad As String = "img/"
    5. Public aktblock As String = "grass"
    6. Dim typ As String = ".png"
    7. Dim auswahl As String = pfad + aktblock + typ
    8. Public chara As New PictureBox
    9. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    10. chara.Width = 32
    11. chara.Height = 64
    12. Dim charapoint As New Point(0, 200)
    13. chara.Location = charapoint
    14. chara.BackgroundImage = Image.FromFile("img/chara.png")
    15. chara.BackgroundImageLayout = ImageLayout.Zoom
    16. Controls.Add(chara)
    17. End Sub
    18. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    19. For charabewegung = 1 To 255
    20. tastendruck = GetAsyncKeyState(charabewegung)
    21. If tastendruck = -32767 Then
    22. Select Case charabewegung
    23. Case 65
    24. chara.Left -= 32
    25. Case 68
    26. chara.Left += 32
    27. Case 83
    28. chara.Top += 32
    29. Case 87
    30. chara.Top -= 32
    31. Case 2
    32. Dim block As New PictureBox
    33. block.Width = 32
    34. block.Height = 32
    35. block.BackgroundImageLayout = ImageLayout.Zoom
    36. block.BackgroundImage = Image.FromFile(pfad + aktblock + typ)
    37. block.Left = chara.Right
    38. block.Top = chara.Bottom - 32
    39. Controls.Add(block)
    40. End Select
    41. End If
    42. Next
    43. End Sub
    44. Private Sub PictureBox8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox8.Click
    45. aktblock = "wood"
    46. aktuellblock.BackgroundImage = Image.FromFile(pfad + "wood" + typ)
    47. End Sub
    48. Private Sub PictureBox7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox7.Click
    49. aktblock = "orange"
    50. aktuellblock.BackgroundImage = Image.FromFile(pfad + "orange" + typ)
    51. End Sub
    52. Private Sub PictureBox6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox6.Click
    53. aktblock = "obsidian"
    54. aktuellblock.BackgroundImage = Image.FromFile(pfad + "obsidian" + typ)
    55. End Sub
    56. Private Sub PictureBox5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox5.Click
    57. aktblock = "iron"
    58. aktuellblock.BackgroundImage = Image.FromFile(pfad + "iron" + typ)
    59. End Sub
    60. Private Sub PictureBox4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox4.Click
    61. aktblock = "gold"
    62. aktuellblock.BackgroundImage = Image.FromFile(pfad + "gold" + typ)
    63. End Sub
    64. Private Sub PictureBox3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox3.Click
    65. aktblock = "cyanblue"
    66. aktuellblock.BackgroundImage = Image.FromFile(pfad + "cyanblue" + typ)
    67. End Sub
    68. Private Sub PictureBox2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox2.Click
    69. aktblock = "cobblestone"
    70. aktuellblock.BackgroundImage = Image.FromFile(pfad + "cobblestone" + typ)
    71. End Sub
    72. Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click
    73. aktblock = "grass"
    74. aktuellblock.BackgroundImage = Image.FromFile(pfad + "grass" + typ)
    75. End Sub
    76. End Class


    Ich hoffe mir kann jemand helfen

    *Topic verschoben*

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „hal2000“ ()

    Hole die Bilder aus der Ressource, nicht vom File.
    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!

    Deadsecret schrieb:

    Guten Abend, ich weiß nicht ob es hierher gehört...
    Wenn nicht bitte verschieben!

    Zu meinen Problem:
    Ich versuche mich zurzeit an einem Minecraft 2D.
    Nun habe ich das Problem, das der Spieler durch alles durch gehen kann.
    ist das möglich, das der Spieler nicht durch blöcke gehen kann?
    Hier ist mal mein Code:

    VB.NET-Quellcode

    1. [..]


    Ich hoffe mir kann jemand helfen
    Der Code kommt mir bekannt vor...
    Youtube? :P
    Wenn das von YouTube ist, dann hau dem Ersteller mal eine rein. Der Code ist ja grässlich, alles mit PictureBoxen. Mach das mit GDI+.
    „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

    -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.

    Lukas schrieb:

    Wenn das von YouTube ist, dann hau dem Ersteller mal eine rein. Der Code ist ja grässlich, alles mit PictureBoxen. Mach das mit GDI+.


    http://www.youtube.com/watch?v=Zf5UHo96g6A <- Der Name sagt alles. Ein GIMP Freak. :D :D :D

    EDIT:

    Ja ist von Youtube
    Naja, ich machs erstmal so, aber könnt ihr mir helfen ?


    FAIL? Ich habe das Tutorial mal ausprobiert, und ich kann Dir eins sagen: Der Code ist sowas von *********************************. Alles ruckelt........
    Das glaube ich dir nicht. Denn dieses Programm ist so performant wie eine Schrankwand.
    „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

    -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.

    Deadsecret schrieb:

    Ja ist nun geändert

    Der Titel sagt trozdem nicht viel über dein problem aus.

    Weil ein anderer User wird nicht nach Minecraft 2D suchen wenn er Probleme bei der Kollisionserkennung hat.

    Da du mit Picboxen arbeitest kannst du eine Kollision so erkennen:

    VB.NET-Quellcode

    1. If PictureBox1.ClientRectangle.IntersectsWith(PictureBox2.ClientRectangle) Then
    Ja ok danke, aber wie mache ich es nun, und vorallem wo muss ich das im script machen?
    Also kurze Erklärung:
    Ein Block steht vor einen Spieler, wenn der Spieler davor läuft, soll er stehen bleiben...
    Oder andere Variante:
    Ein Block steh tvor einen Spieler, wenn der Spieler davor läuft, soll er zurückgeschmießen werden.

    Weißt du wie ich es meine ?
    Du prüfst einfach beim drücken der Taste ob nun eine Kollision stattfindet!

    Wenn Ja wird die Picbox(Der Spieler) nicht weiter gehen können.

    Wenn Nein wird der Spieler weitergehen.

    Also

    VB.NET-Quellcode

    1. Dim speed As Integer
    2. If PictureBox1.ClientRectangle.IntersectsWith(PictureBox2.ClientRectangle) Then
    3. speed = 0
    4. else
    5. speed = 1
    6. EndIF
    haha danke, ne habs nur überflogen, muss beim drücken der taste es prüfen alles klar danke :)
    Schaue kurz ob es geht!

    #EDIT

    Es geht nicht ...

    VB.NET-Quellcode

    1. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    2. Dim block As New PictureBox
    3. For charabewegung = 1 To 255
    4. tastendruck = GetAsyncKeyState(charabewegung)
    5. If tastendruck = -32767 Then
    6. Select Case charabewegung
    7. Case 65
    8. Dim speed As Integer
    9. If PictureBox1.ClientRectangle.IntersectsWith(PictureBox2.ClientRectangle) Then
    10. speed = 0
    11. Else
    12. speed = 1
    13. End If
    14. chara.Left -= 32
    15. Case 68
    16. chara.Left += 32
    17. Case 83
    18. chara.Top += 32
    19. Case 87
    20. chara.Top -= 32
    21. Case 2
    22. block.Width = 32
    23. block.Height = 32
    24. block.BackgroundImageLayout = ImageLayout.Zoom
    25. block.BackgroundImage = Image.FromFile(pfad + aktblock + typ)
    26. block.Left = chara.Right
    27. block.Top = chara.Bottom - 32
    28. Controls.Add(block)
    29. Case 1
    30. block.Width = 32
    31. block.Height = 32
    32. block.Left = chara.Right
    33. block.Top = chara.Bottom - 32
    34. Controls.Remove(block)
    35. End Select
    36. End If
    37. Next
    38. End Sub


    So sieht es bei mir aus ...