Also, zunächst mal Guten morgen zusammen. Ich habe mich gerade erst hier angemeldet, falls dieser Post nicht im richtigen Thema gepostet wurde, bitte ändern.
Ich absolviere eine Vorlehre als Informatiker in der Schweiz, und mache ab dem Sommer die Lehrstelle. Im Modul, dass ich gerade durchgehe, muss ich Visual Basic lernen. Im Rahmen des Themas "Klassen und Objekte" bin ich ein kleineres Spiel am schreiben. Nun habe ich es gerade erst geschafft, Häuser undurchdringbar zu machen. Nun möchte ich, dass bei Kollision zwischen Charakter und Gebäude, eine neue Form aufgeht. Da die Kollisionsüberprüfung aber in einem Timer läuft, lasse ich zunächst bei Kollision einen Button erscheinen, der danach fragt, ob man das Gebäude denn jetzt betreten wolle. Anonsten würde sich die zu öffnende Form unbegrenzt oft öffnen. Nach dem klick darauf, öffnet sich eine neue Form, in der man zwischen verschiedensten Esswaren auswählen kann. Nun habe ich aber folgendes Problem: Nach schliessen dieser Form, kann ich meinen Charakter nicht mehr bewegen, und habe KEINE Ahnung, warum.
Hier der gesamte Code:
Und ja ich weiss, ich habe das Kollisionsproblem etwas primitiv gelöst.
Ich absolviere eine Vorlehre als Informatiker in der Schweiz, und mache ab dem Sommer die Lehrstelle. Im Modul, dass ich gerade durchgehe, muss ich Visual Basic lernen. Im Rahmen des Themas "Klassen und Objekte" bin ich ein kleineres Spiel am schreiben. Nun habe ich es gerade erst geschafft, Häuser undurchdringbar zu machen. Nun möchte ich, dass bei Kollision zwischen Charakter und Gebäude, eine neue Form aufgeht. Da die Kollisionsüberprüfung aber in einem Timer läuft, lasse ich zunächst bei Kollision einen Button erscheinen, der danach fragt, ob man das Gebäude denn jetzt betreten wolle. Anonsten würde sich die zu öffnende Form unbegrenzt oft öffnen. Nach dem klick darauf, öffnet sich eine neue Form, in der man zwischen verschiedensten Esswaren auswählen kann. Nun habe ich aber folgendes Problem: Nach schliessen dieser Form, kann ich meinen Charakter nicht mehr bewegen, und habe KEINE Ahnung, warum.
Hier der gesamte Code:
VB.NET-Quellcode
- Public Class NewGame
- Dim kollision As Boolean
- Dim vonlinks As Boolean
- Dim vonrechts As Boolean
- Dim vonoben As Boolean
- Dim vonunten As Boolean
- Dim charaspeed As Integer = 10
- Dim untengedrückt As Boolean
- Dim obengedrückt As Boolean
- Dim rechtsgedrückt As Boolean
- Dim linksgedrückt As Boolean
- 'Bewegung
- Private Sub NewGame_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
- 'Koordiniert die Bewegungsmöglichkeiten
- If e.KeyCode = Keys.W And vonunten = False Then
- chara.Top -= charaspeed
- obengedrückt = True
- untengedrückt = False
- linksgedrückt = False
- rechtsgedrückt = False
- chara.Image = CType(My.Resources.ResourceManager.GetObject("charhinten"), Drawing.Image)
- ElseIf e.KeyCode = Keys.S And vonoben = False Then
- chara.Top += charaspeed
- obengedrückt = False
- untengedrückt = True
- linksgedrückt = False
- rechtsgedrückt = False
- chara.Image = CType(My.Resources.ResourceManager.GetObject("char1"), Drawing.Image)
- ElseIf e.KeyCode = Keys.A And vonrechts = False Then
- chara.Left -= charaspeed
- obengedrückt = False
- untengedrückt = False
- linksgedrückt = True
- rechtsgedrückt = False
- chara.Image = CType(My.Resources.ResourceManager.GetObject("charlinks"), Drawing.Image)
- ElseIf e.KeyCode = Keys.D And vonlinks = False Then
- chara.Left += charaspeed
- obengedrückt = False
- untengedrückt = False
- linksgedrückt = False
- rechtsgedrückt = True
- chara.Image = CType(My.Resources.ResourceManager.GetObject("charrechts"), Drawing.Image)
- End If
- Label1.Text = vonoben
- Label2.Text = vonunten
- Label3.Text = vonlinks
- Label4.Text = vonrechts
- End Sub
- 'Kollisionssteuerung
- Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckCol.Tick
- If chara.Bounds.IntersectsWith(house2.Bounds) Then
- enterburgershopbtn.Visible = True
- End If
- kollision = False
- 'vonoben = False
- 'vonunten = False
- 'vonlinks = False
- 'vonrechts = False
- 'Kollision
- If chara.Top + chara.Height >= house1.Top And chara.Top <= house1.Top + house1.Height And _
- chara.Left + chara.Width >= house1.Left And chara.Left <= house1.Left + house1.Width Or _
- chara.Top + chara.Height >= house2.Top And chara.Top <= house2.Top + house2.Height And _
- chara.Left + chara.Width >= house2.Left And chara.Left <= house2.Left + house2.Width Or _
- chara.Top + chara.Height >= robot.Top And chara.Top <= robot.Top + robot.Height And _
- chara.Left + chara.Width >= robot.Left And chara.Left <= robot.Left + robot.Width Then
- If untengedrückt = True Then
- vonoben = True
- vonunten = False
- vonlinks = False
- vonrechts = False
- ElseIf obengedrückt = True Then
- vonunten = True
- vonoben = False
- vonlinks = False
- vonrechts = False
- ElseIf linksgedrückt = True Then
- vonrechts = True
- vonlinks = False
- vonoben = False
- vonunten = False
- ElseIf rechtsgedrückt = True Then
- vonlinks = True
- vonrechts = False
- vonoben = False
- vonunten = False
- End If
- Else
- vonoben = False
- vonunten = False
- vonlinks = False
- vonrechts = False
- End If
- End Sub
- Private Sub NewGame_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
- CheckCol.Enabled = True
- enterburgershopbtn.Visible = False
- End Sub
- Private Sub enterburgershopbtn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles enterburgershopbtn.Click
- burgerladen.Show()
- End Sub
- Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles robot.Click
- End Sub
- End Class
Und ja ich weiss, ich habe das Kollisionsproblem etwas primitiv gelöst.