diff options
Diffstat (limited to 'source/WindowsFormsApplication1/Snakey.vb')
| -rw-r--r-- | source/WindowsFormsApplication1/Snakey.vb | 707 |
1 files changed, 0 insertions, 707 deletions
diff --git a/source/WindowsFormsApplication1/Snakey.vb b/source/WindowsFormsApplication1/Snakey.vb deleted file mode 100644 index 1e80c46..0000000 --- a/source/WindowsFormsApplication1/Snakey.vb +++ /dev/null @@ -1,707 +0,0 @@ -Imports System.Drawing.Drawing2D - -Public Class Snakey - - Public rolldownsize As Integer - Public oldbordersize As Integer - Public oldtitlebarheight As Integer - Public justopened As Boolean = False - Public needtorollback As Boolean = False - Public minimumsizewidth As Integer = 673 'replace with minimum size - Public minimumsizeheight As Integer = 507 'replace with minimum size - -#Region "Template Code" - - Private Sub Template_Load(sender As Object, e As EventArgs) Handles MyBase.Load - justopened = True - Me.Left = (Screen.PrimaryScreen.Bounds.Width - Me.Width) / 2 - Me.Top = (Screen.PrimaryScreen.Bounds.Height - Me.Height) / 2 - setupall() - - ShiftOSDesktop.pnlpanelbuttondodge.SendToBack() 'CHANGE NAME - ShiftOSDesktop.setuppanelbuttons() - ShiftOSDesktop.setpanelbuttonappearnce(ShiftOSDesktop.pnlpanelbuttondodge, ShiftOSDesktop.tbdodgeicon, ShiftOSDesktop.tbdodgetext, True) 'modify to proper name - ShiftOSDesktop.programsopen = ShiftOSDesktop.programsopen + 1 - End Sub - - Public Sub setupall() - setuptitlebar() - setupborders() - setskin() - End Sub - - Private Sub ShiftOSDesktop_keydown(sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown - 'Make terminal appear - If e.KeyCode = Keys.T AndAlso e.Control Then - Terminal.Show() - Terminal.Visible = True - Terminal.BringToFront() - End If - - 'Movable Windows - If ShiftOSDesktop.boughtmovablewindows = True Then - If e.KeyCode = Keys.A AndAlso e.Control Then - e.Handled = True - Me.Location = New Point(Me.Location.X - ShiftOSDesktop.movablewindownumber, Me.Location.Y) - End If - If e.KeyCode = Keys.D AndAlso e.Control Then - e.Handled = True - Me.Location = New Point(Me.Location.X + ShiftOSDesktop.movablewindownumber, Me.Location.Y) - End If - If e.KeyCode = Keys.W AndAlso e.Control Then - e.Handled = True - Me.Location = New Point(Me.Location.X, Me.Location.Y - ShiftOSDesktop.movablewindownumber) - End If - If e.KeyCode = Keys.S AndAlso e.Control Then - e.Handled = True - Me.Location = New Point(Me.Location.X, Me.Location.Y + ShiftOSDesktop.movablewindownumber) - End If - ShiftOSDesktop.log = ShiftOSDesktop.log & My.Computer.Clock.LocalTime & " User moved " & Me.Name & " to " & Me.Location.ToString & " with " & e.KeyCode.ToString & Environment.NewLine - End If - End Sub - - Private Sub titlebar_MouseDown(sender As Object, e As MouseEventArgs) Handles titlebar.MouseDown, lbtitletext.MouseDown, pnlicon.MouseDown, pgtoplcorner.MouseDown, pgtoprcorner.MouseDown - ' Handle Draggable Windows - If ShiftOSDesktop.boughtdraggablewindows = True Then - If e.Button = MouseButtons.Left Then - titlebar.Capture = False - lbtitletext.Capture = False - pnlicon.Capture = False - pgtoplcorner.Capture = False - pgtoprcorner.Capture = False - Const WM_NCLBUTTONDOWN As Integer = &HA1S - Const HTCAPTION As Integer = 2 - Dim msg As Message = _ - Message.Create(Me.Handle, WM_NCLBUTTONDOWN, _ - New IntPtr(HTCAPTION), IntPtr.Zero) - Me.DefWndProc(msg) - End If - ShiftOSDesktop.log = ShiftOSDesktop.log & My.Computer.Clock.LocalTime & " User dragged " & Me.Name & " to " & Me.Location.ToString & Environment.NewLine - End If - End Sub - - Public Sub setupborders() - If ShiftOSDesktop.boughtwindowborders = False Then - pgleft.Hide() - pgbottom.Hide() - pgright.Hide() - Me.Size = New Size(Me.Width - pgleft.Width - pgright.Width, Me.Height - pgbottom.Height) - End If - End Sub - - Private Sub closebutton_Click(sender As Object, e As EventArgs) Handles closebutton.Click - Me.Close() - End Sub - - Private Sub closebutton_MouseEnter(sender As Object, e As EventArgs) Handles closebutton.MouseEnter, closebutton.MouseUp - closebutton.BackgroundImage = Skins.closebtnhover - End Sub - - Private Sub closebutton_MouseLeave(sender As Object, e As EventArgs) Handles closebutton.MouseLeave - closebutton.BackgroundImage = Skins.closebtn - End Sub - - Private Sub closebutton_MouseDown(sender As Object, e As EventArgs) Handles closebutton.MouseDown - closebutton.BackgroundImage = Skins.closebtnclick - End Sub - - Private Sub minimizebutton_Click(sender As Object, e As EventArgs) Handles minimizebutton.Click - ShiftOSDesktop.minimizeprogram(Me, False) - End Sub - - 'Old skinning system - No idea what this does - ''Private Sub titlebar_MouseEnter(sender As Object, e As EventArgs) Handles titlebar.MouseEnter, titlebar.MouseUp, lbtitletext.MouseEnter, pnlicon.MouseEnter, closebutton.MouseEnter, rollupbutton.MouseEnter - '' If ShiftOSDesktop.skinimages(3) = ShiftOSDesktop.skinimages(4) Then Else titlebar.BackgroundImage = ShiftOSDesktop.skintitlebar(1) - ''End Sub - - 'Private Sub titlebar_MouseLeave(sender As Object, e As EventArgs) Handles titlebar.MouseLeave, lbtitletext.MouseLeave, pnlicon.MouseLeave, closebutton.MouseLeave, rollupbutton.MouseLeave - ' If ShiftOSDesktop.skinimages(3) = ShiftOSDesktop.skinimages(4) Then Else titlebar.BackgroundImage = ShiftOSDesktop.skintitlebar(0) - 'End Sub - - Private Sub rollupbutton_Click(sender As Object, e As EventArgs) Handles rollupbutton.Click - rollupanddown() - End Sub - - Private Sub rollupbutton_MouseEnter(sender As Object, e As EventArgs) Handles rollupbutton.MouseEnter, rollupbutton.MouseUp - rollupbutton.BackgroundImage = Skins.rollbtnhover - End Sub - - Private Sub rollupbutton_MouseLeave(sender As Object, e As EventArgs) Handles rollupbutton.MouseLeave - rollupbutton.BackgroundImage = Skins.rollbtn - End Sub - - Private Sub rollupbutton_MouseDown(sender As Object, e As EventArgs) Handles rollupbutton.MouseDown - rollupbutton.BackgroundImage = Skins.rollbtnclick - End Sub - - Public Sub setuptitlebar() - - setupborders() - - If Me.Height = Me.titlebar.Height Then pgleft.Show() : pgbottom.Show() : pgright.Show() : Me.Height = rolldownsize : needtorollback = True - pgleft.Width = Skins.borderwidth - pgright.Width = Skins.borderwidth - pgbottom.Height = Skins.borderwidth - titlebar.Height = Skins.titlebarheight - - ' fixes growing issue - If justopened = False Then - Me.Size = New Size(Me.Width, Me.Height - (Skins.titlebarheight / 2)) - End If - - If justopened = True Then - Me.Size = New Size(673, 507) 'put the default size of your window here - Me.Size = New Size(Me.Width, Me.Height + Skins.titlebarheight - 30) - Me.Size = New Size(Me.Width + Skins.borderwidth + Skins.borderwidth, Me.Height + Skins.borderwidth) - oldbordersize = Skins.borderwidth - oldtitlebarheight = Skins.titlebarheight - justopened = False - Else - If Me.Visible = True Then - 'Me.Hide() - Me.Size = New Size(Me.Width - (2 * oldbordersize) + (2 * Skins.borderwidth), (Me.Height - oldtitlebarheight - oldbordersize) + Skins.titlebarheight + Skins.borderwidth) - 'Me.Size = New Size(Me.Width - oldbordersize - oldbordersize, Me.Height - oldbordersize) 'Just put a little algebra in the first size setting and comment out the mess - oldbordersize = Skins.borderwidth - oldtitlebarheight = Skins.titlebarheight - 'Me.Size = New Size(Me.Width, Me.Height + Skins.titlebarheight - 30) - 'Me.Size = New Size(Me.Width + Skins. borderwidth + Skins. borderwidth, Me.Height + Skins. borderwidth) - 'rolldownsize = Me.Height - If needtorollback = True Then Me.Height = titlebar.Height : pgleft.Hide() : pgbottom.Hide() : pgright.Hide() - 'Me.Show() - End If - End If - - If Skins.enablecorners = True Then - pgtoplcorner.Show() - pgtoprcorner.Show() - pgtoprcorner.Width = Skins.titlebarcornerwidth - pgtoplcorner.Width = Skins.titlebarcornerwidth - Else - pgtoplcorner.Hide() - pgtoprcorner.Hide() - End If - - If ShiftOSDesktop.boughttitlebar = False Then - titlebar.Hide() - Me.Size = New Size(Me.Width, Me.Size.Height - titlebar.Height) - End If - - If ShiftOSDesktop.boughttitletext = False Then - lbtitletext.Hide() - Else - lbtitletext.Font = New Font(Skins.titletextfontfamily, Skins.titletextfontsize, Skins.titletextfontstyle, GraphicsUnit.Point) - lbtitletext.Text = ShiftOSDesktop.snakeyname 'Remember to change to name of program!!!! - lbtitletext.Show() - End If - - If ShiftOSDesktop.boughtclosebutton = False Then - closebutton.Hide() - Else - closebutton.BackColor = Skins.closebtncolour - closebutton.Size = Skins.closebtnsize - closebutton.Show() - End If - - If ShiftOSDesktop.boughtrollupbutton = False Then - rollupbutton.Hide() - Else - rollupbutton.BackColor = Skins.rollbtncolour - rollupbutton.Size = Skins.rollbtnsize - rollupbutton.Show() - End If - - If ShiftOSDesktop.boughtminimizebutton = False Then - minimizebutton.Hide() - Else - minimizebutton.BackColor = Skins.minbtncolour - minimizebutton.Size = Skins.minbtnsize - minimizebutton.Show() - End If - - If ShiftOSDesktop.boughtwindowborders = True Then - closebutton.Location = New Point(titlebar.Size.Width - Skins.closebtnfromside - closebutton.Size.Width, Skins.closebtnfromtop) - rollupbutton.Location = New Point(titlebar.Size.Width - Skins.rollbtnfromside - rollupbutton.Size.Width, Skins.rollbtnfromtop) - minimizebutton.Location = New Point(titlebar.Size.Width - Skins.minbtnfromside - minimizebutton.Size.Width, Skins.minbtnfromtop) - Select Case Skins.titletextpos - Case "Left" - lbtitletext.Location = New Point(Skins.titletextfromside, Skins.titletextfromtop) - Case "Centre" - lbtitletext.Location = New Point((titlebar.Width / 2) - lbtitletext.Width / 2, Skins.titletextfromtop) - End Select - lbtitletext.ForeColor = Skins.titletextcolour - Else - closebutton.Location = New Point(titlebar.Size.Width - Skins.closebtnfromside - pgtoplcorner.Width - pgtoprcorner.Width - closebutton.Size.Width, Skins.closebtnfromtop) - rollupbutton.Location = New Point(titlebar.Size.Width - Skins.rollbtnfromside - pgtoplcorner.Width - pgtoprcorner.Width - rollupbutton.Size.Width, Skins.rollbtnfromtop) - minimizebutton.Location = New Point(titlebar.Size.Width - Skins.minbtnfromside - pgtoplcorner.Width - pgtoprcorner.Width - minimizebutton.Size.Width, Skins.minbtnfromtop) - Select Case Skins.titletextpos - Case "Left" - lbtitletext.Location = New Point(Skins.titletextfromside + pgtoplcorner.Width, Skins.titletextfromtop) - Case "Centre" - lbtitletext.Location = New Point((titlebar.Width / 2) - lbtitletext.Width / 2, Skins.titletextfromtop) - End Select - lbtitletext.ForeColor = Skins.titletextcolour - End If - - 'Change when Icon skinning complete - If ShiftOSDesktop.boughtknowledgeinputicon = True Then ' Change to program's icon - pnlicon.Visible = True - pnlicon.Location = New Point(Skins.titleiconfromside, Skins.titleiconfromtop) - pnlicon.Size = New Size(ShiftOSDesktop.titlebariconsize, ShiftOSDesktop.titlebariconsize) - pnlicon.Image = ShiftOSDesktop.snakeyicontitlebar 'Replace with the correct icon for the program. - End If - - End Sub - - Public Sub rollupanddown() - If Me.Height = Me.titlebar.Height Then - pgleft.Show() - pgbottom.Show() - pgright.Show() - Me.Height = rolldownsize - Me.MinimumSize = New Size(minimumsizewidth, minimumsizeheight) - Else - Me.MinimumSize = New Size(0, 0) - pgleft.Hide() - pgbottom.Hide() - pgright.Hide() - rolldownsize = Me.Height - Me.Height = Me.titlebar.Height - End If - End Sub - - Public Sub resettitlebar() - If ShiftOSDesktop.boughtwindowborders = True Then - closebutton.Location = New Point(titlebar.Size.Width - Skins.closebtnfromside - closebutton.Size.Width, Skins.closebtnfromtop) - rollupbutton.Location = New Point(titlebar.Size.Width - Skins.rollbtnfromside - rollupbutton.Size.Width, Skins.rollbtnfromtop) - minimizebutton.Location = New Point(titlebar.Size.Width - Skins.minbtnfromside - minimizebutton.Size.Width, Skins.minbtnfromtop) - Select Case Skins.titletextpos - Case "Left" - lbtitletext.Location = New Point(Skins.titletextfromside, Skins.titletextfromtop) - Case "Centre" - lbtitletext.Location = New Point((titlebar.Width / 2) - lbtitletext.Width / 2, Skins.titletextfromtop) - End Select - lbtitletext.ForeColor = Skins.titletextcolour - Else - closebutton.Location = New Point(titlebar.Size.Width - Skins.closebtnfromside - pgtoplcorner.Width - pgtoprcorner.Width - closebutton.Size.Width, Skins.closebtnfromtop) - rollupbutton.Location = New Point(titlebar.Size.Width - Skins.rollbtnfromside - pgtoplcorner.Width - pgtoprcorner.Width - rollupbutton.Size.Width, Skins.rollbtnfromtop) - minimizebutton.Location = New Point(titlebar.Size.Width - Skins.minbtnfromside - pgtoplcorner.Width - pgtoprcorner.Width - minimizebutton.Size.Width, Skins.minbtnfromtop) - Select Case Skins.titletextpos - Case "Left" - lbtitletext.Location = New Point(Skins.titletextfromside + pgtoplcorner.Width, Skins.titletextfromtop) - Case "Centre" - lbtitletext.Location = New Point((titlebar.Width / 2) - lbtitletext.Width / 2, Skins.titletextfromtop) - End Select - lbtitletext.ForeColor = Skins.titletextcolour - End If - End Sub - - Private Sub pullside_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles pullside.Tick - Me.Width = Cursor.Position.X - Me.Location.X - resettitlebar() - End Sub - - Private Sub pullbottom_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles pullbottom.Tick - Me.Height = Cursor.Position.Y - Me.Location.Y - resettitlebar() - End Sub - - Private Sub pullbs_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles pullbs.Tick - Me.Width = Cursor.Position.X - Me.Location.X - Me.Height = Cursor.Position.Y - Me.Location.Y - resettitlebar() - End Sub - - 'delete this for non-resizable windows - Private Sub Rightpull_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles pgright.MouseDown - If ShiftOSDesktop.boughtresizablewindows = True Then - pullside.Start() - End If - End Sub - - Private Sub RightCursorOn_MouseDown(ByVal sender As Object, ByVal e As System.EventArgs) Handles pgright.MouseEnter - If ShiftOSDesktop.boughtresizablewindows = True Then - Cursor = Cursors.SizeWE - End If - End Sub - - Private Sub bottomCursorOn_MouseDown(ByVal sender As Object, ByVal e As System.EventArgs) Handles pgbottom.MouseEnter - If ShiftOSDesktop.boughtresizablewindows = True Then - Cursor = Cursors.SizeNS - End If - End Sub - - Private Sub CornerCursorOn_MouseDown(ByVal sender As Object, ByVal e As System.EventArgs) Handles pgbottomrcorner.MouseEnter - If ShiftOSDesktop.boughtresizablewindows = True Then - Cursor = Cursors.SizeNWSE - End If - End Sub - - Private Sub SizeCursoroff_MouseDown(ByVal sender As Object, ByVal e As System.EventArgs) Handles pgright.MouseLeave, pgbottom.MouseLeave, pgbottomrcorner.MouseLeave - If ShiftOSDesktop.boughtresizablewindows = True Then - Cursor = Cursors.Default - End If - End Sub - - Private Sub rightpull_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles pgright.MouseUp - If ShiftOSDesktop.boughtresizablewindows = True Then - pullside.Stop() - End If - End Sub - - Private Sub bottompull_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles pgbottom.MouseDown - If ShiftOSDesktop.boughtresizablewindows = True Then - pullbottom.Start() - End If - End Sub - - Private Sub buttompull_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles pgbottom.MouseUp - If ShiftOSDesktop.boughtresizablewindows = True Then - pullbottom.Stop() - End If - End Sub - - Private Sub bspull_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles pgbottomrcorner.MouseDown - If ShiftOSDesktop.boughtresizablewindows = True Then - pullbs.Start() - End If - End Sub - - Private Sub bspull_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles pgbottomrcorner.MouseUp - If ShiftOSDesktop.boughtresizablewindows = True Then - pullbs.Stop() - End If - End Sub - - Public Sub setskin() - 'disposals - closebutton.BackgroundImage = Nothing - titlebar.BackgroundImage = Nothing - rollupbutton.BackgroundImage = Nothing - pgtoplcorner.BackgroundImage = Nothing - pgtoprcorner.BackgroundImage = Nothing - minimizebutton.BackgroundImage = Nothing - 'apply new skin - If Skins.closebtn Is Nothing Then closebutton.BackColor = Skins.closebtncolour Else closebutton.BackgroundImage = Skins.closebtn - closebutton.BackgroundImageLayout = Skins.closebtnlayout - If Skins.titlebar Is Nothing Then titlebar.BackColor = Skins.titlebarcolour Else titlebar.BackgroundImage = Skins.titlebar - titlebar.BackgroundImageLayout = Skins.titlebarlayout - If Skins.rollbtn Is Nothing Then rollupbutton.BackColor = Skins.rollbtncolour Else rollupbutton.BackgroundImage = Skins.rollbtn - rollupbutton.BackgroundImageLayout = Skins.rollbtnlayout - If Skins.leftcorner Is Nothing Then pgtoplcorner.BackColor = Skins.leftcornercolour Else pgtoplcorner.BackgroundImage = Skins.leftcorner - pgtoplcorner.BackgroundImageLayout = Skins.leftcornerlayout - If Skins.rightcorner Is Nothing Then pgtoprcorner.BackColor = Skins.rightcornercolour Else pgtoprcorner.BackgroundImage = Skins.rightcorner - pgtoprcorner.BackgroundImageLayout = Skins.rightcornerlayout - If Skins.minbtn Is Nothing Then minimizebutton.BackColor = Skins.minbtncolour Else minimizebutton.BackgroundImage = Skins.minbtn - minimizebutton.BackgroundImageLayout = Skins.minbtnlayout - If Skins.borderleft Is Nothing Then pgleft.BackColor = Skins.borderleftcolour Else pgleft.BackgroundImage = Skins.borderleft - pgleft.BackgroundImageLayout = Skins.borderleftlayout - If Skins.borderright Is Nothing Then pgright.BackColor = Skins.borderrightcolour Else pgright.BackgroundImage = Skins.borderright - pgleft.BackgroundImageLayout = Skins.borderrightlayout - If Skins.borderbottom Is Nothing Then pgbottom.BackColor = Skins.borderbottomcolour Else pgbottom.BackgroundImage = Skins.borderbottom - pgbottom.BackgroundImageLayout = Skins.borderbottomlayout - If Skins.bottomleftcorner Is Nothing Then pgbottomlcorner.BackColor = Skins.bottomleftcornercolour Else pgbottomlcorner.BackgroundImage = Skins.bottomleftcorner - pgbottomlcorner.BackgroundImageLayout = Skins.bottomleftcornerlayout - If Skins.bottomrightcorner Is Nothing Then pgbottomrcorner.BackColor = Skins.bottomrightcornercolour Else pgbottomrcorner.BackgroundImage = Skins.bottomrightcorner - pgbottomrcorner.BackgroundImageLayout = Skins.bottomrightcornerlayout - - Me.TransparencyKey = ShiftOSDesktop.globaltransparencycolour - End Sub - - Private Sub Clock_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing - ShiftOSDesktop.programsopen = ShiftOSDesktop.programsopen - 1 - Me.Hide() - ShiftOSDesktop.setuppanelbuttons() - End Sub - - 'end of general setup -#End Region - - Private Structure structSnake - Dim rect As Rectangle - Dim x As Integer - Dim y As Integer - - End Structure - - Private Enum Direction - Rightward - Downward - Leftward - Upward - End Enum - - Private Const INITIAL_SNAKE_RECT_COUNT As Integer = 5 - Private Const COLUMN_COUNT As Integer = 65 - Private Const ROW_COUNT As Integer = 47 - - Private curRecCount As Integer - Private rects(,) As Rectangle - Private isSnakePart(,) As Boolean - Private snake As Collection - Private snakeBrush As Brush = New SolidBrush(Color.FromArgb(255, 255, 255)) - Private backBrush As Brush = New SolidBrush(Color.FromArgb(1, 1, 1)) - Private tokenBrush As Brush = New SolidBrush(Color.FromArgb(255, 255, 255)) - Private curDirection As Direction - Private buffer As Bitmap - Private columnCount As Integer - Private rowCount As Integer - Private snakePoints As Integer - Private snakeSpeed As Double - Private snakeLength As Integer - Private token As Rectangle - - Private Function xyToRectIndex(ByVal X As Integer, ByVal Y As Integer) As Integer - Return (Y * (columnCount)) + X - End Function - - Private Sub rectIndexToXY(ByVal Index As Integer, ByRef X As Integer, ByRef Y As Integer) - X = Index Mod (columnCount) - Y = Index \ (columnCount) - End Sub - - Private Sub initSnake() - - Dim x As Integer - Dim y As Integer - Dim i As Integer - Dim index As Integer - Dim sSnake As structSnake - snake = New Collection - - x = ((columnCount) - 10) \ 2 - y = ((rowCount) - 6) \ 2 - - Dim snakePosition As Point = New Point(x, y) - index = xyToRectIndex(x, y) - - For i = 1 To INITIAL_SNAKE_RECT_COUNT - rectIndexToXY(index + (i - 1), x, y) - sSnake.rect = rects(x, y) - sSnake.x = x - sSnake.y = y - snake.Add(sSnake) - Next - - snakeLength = INITIAL_SNAKE_RECT_COUNT - snakeSpeed = 1 - length.Text = "Length: " & CStr(snakeLength) - speed.Text = "Speed: " & CStr(snakeSpeed) - - End Sub - - Private Sub selectRectangles() - - Dim g As Graphics = Graphics.FromImage(My.Resources.snakeyback) - Dim i As Integer - Dim sSnake As structSnake - - For i = 1 To INITIAL_SNAKE_RECT_COUNT - sSnake = snake(i) - g.FillRectangle(snakeBrush, sSnake.rect) - isSnakePart(sSnake.x, sSnake.y) = True - Next - - buffer = New Bitmap(My.Resources.snakeyback) - - g.Dispose() - Refresh() - - End Sub - - Private Sub initRectangles() - - Dim i As Integer - Dim j As Integer - - columnCount = COLUMN_COUNT - rowCount = ROW_COUNT - - ReDim rects(columnCount, rowCount) - ReDim isSnakePart(columnCount, rowCount) - - For j = 0 To rowCount - For i = 0 To columnCount - rects(i, j) = New Rectangle((i * 10) + 1, (j * 10) + 1, 9, 9) - isSnakePart(i, j) = False - Next - Next - - - End Sub - - Private Sub initialize() - - curRecCount = INITIAL_SNAKE_RECT_COUNT - curDirection = Direction.Leftward - snakePoints = 0 - initRectangles() - initSnake() - selectRectangles() - setToken() - setPoints() - tmr.Interval = 50 - tmr.Enabled = True - - End Sub - - Private Sub setPoints() - score.Text = "Total Points: " & CStr(snakePoints) - End Sub - - Private Sub setToken() - - Randomize() - Dim x As Integer - Dim y As Integer - Dim g As Graphics = Graphics.FromImage(buffer) - - x = CInt(Rnd() * columnCount) - Do While x > columnCount Or isSnakePart(x, y) = True - x = CInt(Rnd() * columnCount) - Loop - - y = CInt(Rnd() * rowCount) - Do While y > rowCount Or isSnakePart(x, y) = True - y = CInt(Rnd() * rowCount) - Loop - - token = rects(x, y) - - g.FillEllipse(tokenBrush, token) - Refresh() - g.Dispose() - - End Sub - - Private Sub main_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load - initialize() - End Sub - - Private Sub main_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown - - Select Case e.KeyCode - Case Keys.Down - If Not (curDirection = Direction.Downward Or curDirection = Direction.Upward) Then - curDirection = Direction.Downward - End If - Case Keys.Left - If Not (curDirection = Direction.Leftward Or curDirection = Direction.Rightward) Then - curDirection = Direction.Leftward - End If - Case Keys.Right - If Not (curDirection = Direction.Rightward Or curDirection = Direction.Leftward) Then - curDirection = Direction.Rightward - End If - Case Keys.Up - If Not (curDirection = Direction.Upward Or curDirection = Direction.Downward) Then - curDirection = Direction.Upward - End If - End Select - - End Sub - - Private Sub moveSnake() - - Dim sSnake As structSnake - Dim x As Integer - Dim y As Integer - Dim rect As Rectangle = New Rectangle() - Dim g As Graphics = Graphics.FromImage(buffer) - - tmr.Enabled = False - sSnake = snake(snake.Count) - g.FillRectangle(backBrush, sSnake.rect) - snake.Remove(snake.Count) - isSnakePart(sSnake.x, sSnake.y) = False - sSnake = snake.Item(1) - - x = sSnake.x - y = sSnake.y - - Select Case curDirection - Case Direction.Downward - y = y + 1 - If y > rowCount Then y = 0 - Case Direction.Leftward - x = x - 1 - If x < 0 Then x = columnCount - Case Direction.Rightward - x = x + 1 - If x > columnCount Then x = 0 - Case Direction.Upward - y = y - 1 - If y < 0 Then y = rowCount - End Select - - If isSnakePart(x, y) = True Then - tmr.Enabled = False - - If MessageBox.Show("You lost! You got a total of " & snakePoints & " codepoints. ", "Snake", MessageBoxButtons.OK, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) = Windows.Forms.DialogResult.Yes Then - initialize() - Exit Sub - Else - End - End If - - End If - - - rect = rects(x, y) - - sSnake.x = x - sSnake.y = y - sSnake.rect = rect - isSnakePart(x, y) = True - - g.FillRectangle(snakeBrush, sSnake.rect) - Me.BackgroundImage = buffer - snake.Add(sSnake, , 1) - - If rects(x, y).Equals(CObj(token)) Then - - snakePoints += 1 - setPoints() - - If snakePoints Mod 5 = 0 Then - sSnake = snake.Item(snake.Count) - Select Case curDirection - Case Direction.Downward - sSnake.y -= 1 - Case (Direction.Leftward) - sSnake.x += 1 - Case Direction.Rightward - sSnake.x -= 1 - Case Direction.Upward - sSnake.y += 1 - End Select - - sSnake.rect = rects(sSnake.x, sSnake.y) - g.FillRectangle(snakeBrush, sSnake.rect) - Me.BackgroundImage = buffer - snake.Add(sSnake, , , snake.Count) - snakeLength = snake.Count - - tmr.Interval -= 1 - If tmr.Interval < 0 Then tmr.Interval = 1 - - snakeSpeed = 1 + (50 - tmr.Interval) - length.Text = "Length: " & CStr(snakeLength) - speed.Text = "Speed: " & CStr(snakeSpeed) - - End If - - setToken() - - End If - - Refresh() - - tmr.Enabled = True - - End Sub - - Private Sub tmr_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) - moveSnake() - Application.DoEvents() - End Sub -End Class
\ No newline at end of file |
