I'm working on the game snake and I'm currently doing this:
Snake Class:
My issue is in the 'new game' sub. I set breakpoints where I declare a new instance of the snake and where I set up some of it's properties, but when I go to debug my program those breakpoints don't ever come up. Everything prior like the clearing the list(of snake) and clearing me.controls fires, but everything after that doesn't. I was hoping someone could point out what I'm doing wrong.
Code:
Option Strict On
Option Explicit On
Public Class Form1
Private snake_head As Snake 'This will be the snake head and item(0) in snake_body
Private snake_body As List(Of Snake) 'This will hold the snakes body
Private r As New Random 'New instance at form level
Private fruit As Snake 'Instance of a random fruit in the place_fruit sub
Private playing As Boolean
Private Sub new_game()
game_timer.Stop() 'Stop the timer
playing = False 'We aren't playing anymore
Me.Controls.Clear() 'Get rid of any existing control
snake_body.Clear() 'Get rid of the prior body parts
snake_head = New Snake 'Declare a new instance of the head
'Set some properties of the head
With snake_head
.BorderStyle = BorderStyle.FixedSingle
.BackColor = Color.Honeydew
.Location = New Point(CInt(Me.Width / 2), CInt(Me.Height / 2))
.IsHead = True
.MovingDirection = Snake.Direction.Left
.Size = New Size(50, 50)
End With
snake_body.Add(snake_head) 'Add the head to the body list
Me.Controls.Add(snake_head) 'Add the head to me
End Sub
Private Sub place_fruit()
fruit = New Snake 'Declare a new instance of a snake
'Set some properties
With fruit
.BackColor = Color.LightGreen
.Location = New Point(r.Next(0, Me.Width - 50), r.Next(0, Me.Height - 50))
.IsHead = False
.MovingDirection = Snake.Direction.Left
.Size = New Size(25, 25)
End With
Me.Controls.Add(fruit)
End Sub
Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
'The controls are:
'Up - Up Arrow or W
'Down - Down Arrow or S
'Left - Left Arrow or A
'Right - Right Arrow or D
'Start/Pause - Spacebar
Select Case e.KeyCode
Case Keys.Up Or Keys.W 'Up
If playing Then 'Check to make sure we're plaing, then make the snake head go in that direction
snake_head.MovingDirection = Snake.Direction.Up
End If
Case Keys.Down Or Keys.S 'Down
If playing Then
snake_head.MovingDirection = Snake.Direction.Down
End If
Case Keys.Left Or Keys.A 'Left
If playing Then
snake_head.MovingDirection = Snake.Direction.Left
End If
Case Keys.Right Or Keys.D 'Right
If playing Then
snake_head.MovingDirection = Snake.Direction.Right
End If
Case Keys.Space
If Not (playing) Then 'If we aren't playing then start the timer
game_timer.Start()
Call place_fruit() 'To place a random fruit
End If
End Select
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Set up some form properties
With Me
.DoubleBuffered = True
.KeyPreview = True
.StartPosition = FormStartPosition.CenterScreen
.Text = "Snake"
End With
'Game_Timer's property. The ideal intervals are:
'
game_timer.Interval = 100
Call new_game()
End Sub
End Class
Code:
Option Strict On
Option Explicit On
Public Class Snake
Inherits Panel
Private head As Boolean
Public Property IsHead() As Boolean
Get
Return head
End Get
Set(ByVal value As Boolean)
head = value
End Set
End Property
Public Enum Direction
Up
Down
Left
Right
End Enum
Private direct As Direction = Direction.Left
Public Property MovingDirection() As Direction
Get
Return direct
End Get
Set(ByVal value As Direction)
direct = value
End Set
End Property
End Class