ShiftOS/Pong.vb
ShiftOS 4caacce50c ShiftOS
ShiftOS is a game about evolving an experimental operating system called
"ShiftOS" from a completely black and white text based command line
based OS to a fully graphical operating system filled with advanced
features and beautiful colours. The level of customization will exceed
the levels of real world operating systems
2015-03-07 22:31:31 +02:00

639 lines
No EOL
29 KiB
VB.net

Public Class Pong
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 = 0
Public minimumsizeheight As Integer = 0
Dim rndInst As New Random() ' Random instance
Dim xVel As Single = 7
Dim yVel As Single = 8
Dim computerspeed = 8
Dim rand As New Random
Dim level As Integer = 1
Dim secondsleft As Integer = 60
Dim casualposition As Integer
Dim xveldec As Double = 3.0
Dim yveldec As Double = 3.0
Dim incrementx As Double = 0.4
Dim incrementy As Double = 0.2
Dim levelxspeed As Integer = 3
Dim levelyspeed As Integer = 3
Dim beatairewardtotal As Integer
Dim beataireward As Integer = 1
Dim levelrewards(50) As Integer
Dim totalreward As Integer
Dim countdown As Integer = 3
Dim paused As Boolean = False
Private Sub Template_Load(sender As Object, e As EventArgs) Handles MyBase.Load
justopened = True
setuptitlebar()
setupborders()
ShiftOSDesktop.setcolours()
Me.Left = (Screen.PrimaryScreen.Bounds.Width - Me.Width) / 2
Me.Top = (Screen.PrimaryScreen.Bounds.Height - Me.Height) / 2
setskin()
ShiftOSDesktop.pnlpanelbuttonpong.SendToBack()
ShiftOSDesktop.setuppanelbuttons()
ShiftOSDesktop.setpanelbuttonappearnce(ShiftOSDesktop.pnlpanelbuttonpong, ShiftOSDesktop.tbpongicon, ShiftOSDesktop.tbpongtext, True)
ShiftOSDesktop.programsopen = ShiftOSDesktop.programsopen + 1
setuplevelrewards()
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 = ShiftOSDesktop.skinclosebutton(1)
End Sub
Private Sub closebutton_MouseLeave(sender As Object, e As EventArgs) Handles closebutton.MouseLeave
closebutton.BackgroundImage = ShiftOSDesktop.skinclosebutton(0)
End Sub
Private Sub closebutton_MouseDown(sender As Object, e As EventArgs) Handles closebutton.MouseDown
closebutton.BackgroundImage = ShiftOSDesktop.skinclosebutton(2)
End Sub
Private Sub minimizebutton_Click(sender As Object, e As EventArgs) Handles minimizebutton.Click
ShiftOSDesktop.minimizeprogram(Me)
End Sub
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 = ShiftOSDesktop.skinrollupbutton(1)
End Sub
Private Sub rollupbutton_MouseLeave(sender As Object, e As EventArgs) Handles rollupbutton.MouseLeave
rollupbutton.BackgroundImage = ShiftOSDesktop.skinrollupbutton(0)
End Sub
Private Sub rollupbutton_MouseDown(sender As Object, e As EventArgs) Handles rollupbutton.MouseDown
rollupbutton.BackgroundImage = ShiftOSDesktop.skinrollupbutton(2)
End Sub
Public Sub setuptitlebar()
If Me.Height = Me.titlebar.Height Then pgleft.Show() : pgbottom.Show() : pgright.Show() : Me.Height = rolldownsize : needtorollback = True
pgleft.Width = ShiftOSDesktop.windowbordersize
pgright.Width = ShiftOSDesktop.windowbordersize
pgbottom.Height = ShiftOSDesktop.windowbordersize
titlebar.Height = ShiftOSDesktop.titlebarheight
If justopened = True Then
Me.Size = New Size(700, 400) 'put the default size of your window here
Me.Size = New Size(Me.Width, Me.Height + ShiftOSDesktop.titlebarheight - 30)
Me.Size = New Size(Me.Width + ShiftOSDesktop.windowbordersize + ShiftOSDesktop.windowbordersize, Me.Height + ShiftOSDesktop.windowbordersize)
oldbordersize = ShiftOSDesktop.windowbordersize
oldtitlebarheight = ShiftOSDesktop.titlebarheight
justopened = False
Else
If Me.Visible = True Then
Me.Hide()
Me.Size = New Size(Me.Width, Me.Height - oldtitlebarheight + 30)
Me.Size = New Size(Me.Width - oldbordersize - oldbordersize, Me.Height - oldbordersize)
oldbordersize = ShiftOSDesktop.windowbordersize
oldtitlebarheight = ShiftOSDesktop.titlebarheight
Me.Size = New Size(Me.Width, Me.Height + ShiftOSDesktop.titlebarheight - 30)
Me.Size = New Size(Me.Width + ShiftOSDesktop.windowbordersize + ShiftOSDesktop.windowbordersize, Me.Height + ShiftOSDesktop.windowbordersize)
rolldownsize = Me.Height
If needtorollback = True Then Me.Height = titlebar.Height : pgleft.Hide() : pgbottom.Hide() : pgright.Hide()
Me.Show()
End If
End If
If ShiftOSDesktop.showwindowcorners = True Then
pgtoplcorner.Show()
pgtoprcorner.Show()
pgtoprcorner.Width = ShiftOSDesktop.titlebarcornerwidth
pgtoplcorner.Width = ShiftOSDesktop.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(ShiftOSDesktop.titletextfont, ShiftOSDesktop.titletextsize, ShiftOSDesktop.titletextstyle)
lbtitletext.Text = ShiftOSDesktop.pongname
lbtitletext.Show()
End If
If ShiftOSDesktop.boughtclosebutton = False Then
closebutton.Hide()
Else
closebutton.BackColor = ShiftOSDesktop.closebuttoncolour
closebutton.Height = ShiftOSDesktop.closebuttonheight
closebutton.Width = ShiftOSDesktop.closebuttonwidth
closebutton.Show()
End If
If ShiftOSDesktop.boughtrollupbutton = False Then
rollupbutton.Hide()
Else
rollupbutton.BackColor = ShiftOSDesktop.rollupbuttoncolour
rollupbutton.Height = ShiftOSDesktop.rollupbuttonheight
rollupbutton.Width = ShiftOSDesktop.rollupbuttonwidth
rollupbutton.Show()
End If
If ShiftOSDesktop.boughtminimizebutton = False Then
minimizebutton.Hide()
Else
minimizebutton.BackColor = ShiftOSDesktop.minimizebuttoncolour
minimizebutton.Height = ShiftOSDesktop.minimizebuttonheight
minimizebutton.Width = ShiftOSDesktop.minimizebuttonwidth
minimizebutton.Show()
End If
If ShiftOSDesktop.boughtwindowborders = True Then
closebutton.Location = New Point(titlebar.Size.Width - ShiftOSDesktop.closebuttonside - closebutton.Size.Width, ShiftOSDesktop.closebuttontop)
rollupbutton.Location = New Point(titlebar.Size.Width - ShiftOSDesktop.rollupbuttonside - rollupbutton.Size.Width, ShiftOSDesktop.rollupbuttontop)
minimizebutton.Location = New Point(titlebar.Size.Width - ShiftOSDesktop.minimizebuttonside - minimizebutton.Size.Width, ShiftOSDesktop.minimizebuttontop)
Select Case ShiftOSDesktop.titletextposition
Case "Left"
lbtitletext.Location = New Point(ShiftOSDesktop.titletextside, ShiftOSDesktop.titletexttop)
Case "Centre"
lbtitletext.Location = New Point((titlebar.Width / 2) - lbtitletext.Width / 2, ShiftOSDesktop.titletexttop)
End Select
lbtitletext.ForeColor = ShiftOSDesktop.titletextcolour
Else
closebutton.Location = New Point(titlebar.Size.Width - ShiftOSDesktop.closebuttonside - pgtoplcorner.Width - pgtoprcorner.Width - closebutton.Size.Width, ShiftOSDesktop.closebuttontop)
rollupbutton.Location = New Point(titlebar.Size.Width - ShiftOSDesktop.rollupbuttonside - pgtoplcorner.Width - pgtoprcorner.Width - rollupbutton.Size.Width, ShiftOSDesktop.rollupbuttontop)
minimizebutton.Location = New Point(titlebar.Size.Width - ShiftOSDesktop.minimizebuttonside - pgtoplcorner.Width - pgtoprcorner.Width - minimizebutton.Size.Width, ShiftOSDesktop.minimizebuttontop)
Select Case ShiftOSDesktop.titletextposition
Case "Left"
lbtitletext.Location = New Point(ShiftOSDesktop.titletextside + pgtoplcorner.Width, ShiftOSDesktop.titletexttop)
Case "Centre"
lbtitletext.Location = New Point((titlebar.Width / 2) - lbtitletext.Width / 2, ShiftOSDesktop.titletexttop)
End Select
lbtitletext.ForeColor = ShiftOSDesktop.titletextcolour
End If
If ShiftOSDesktop.boughtpongicon = True Then
pnlicon.Visible = True
pnlicon.Location = New Point(ShiftOSDesktop.titlebariconside, ShiftOSDesktop.titlebaricontop)
pnlicon.Size = New Size(ShiftOSDesktop.titlebariconsize, ShiftOSDesktop.titlebariconsize)
pnlicon.Image = ShiftOSDesktop.pongicontitlebar '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)
If paused = True Then paused = False
gameTimer.Start()
counter.Start()
Else
Me.MinimumSize = New Size(0, 0)
pgleft.Hide()
pgbottom.Hide()
pgright.Hide()
rolldownsize = Me.Height
Me.Height = Me.titlebar.Height
If paused = False Then paused = True
gameTimer.Stop()
counter.Stop()
End If
End Sub
Public Sub setskin()
If ShiftOSDesktop.skinclosebutton(0) Is Nothing Then Else closebutton.BackgroundImage = ShiftOSDesktop.skinclosebutton(0).Clone
closebutton.BackgroundImageLayout = ShiftOSDesktop.skinclosebuttonstyle
If ShiftOSDesktop.skintitlebar(0) Is Nothing Then Else titlebar.BackgroundImage = ShiftOSDesktop.skintitlebar(0).Clone
titlebar.BackgroundImageLayout = ShiftOSDesktop.skintitlebarstyle
If ShiftOSDesktop.skinrollupbutton(0) Is Nothing Then Else rollupbutton.BackgroundImage = ShiftOSDesktop.skinrollupbutton(0).Clone
rollupbutton.BackgroundImageLayout = ShiftOSDesktop.skinrollupbuttonstyle
If ShiftOSDesktop.skintitlebarleftcorner(0) Is Nothing Then Else pgtoplcorner.BackgroundImage = ShiftOSDesktop.skintitlebarleftcorner(0).Clone
pgtoplcorner.BackgroundImageLayout = ShiftOSDesktop.skintitlebarleftcornerstyle
If ShiftOSDesktop.skintitlebarrightcorner(0) Is Nothing Then Else pgtoprcorner.BackgroundImage = ShiftOSDesktop.skintitlebarrightcorner(0).Clone
pgtoprcorner.BackgroundImageLayout = ShiftOSDesktop.skintitlebarrightcornerstyle
If ShiftOSDesktop.skinminimizebutton(0) Is Nothing Then Else minimizebutton.BackgroundImage = ShiftOSDesktop.skinminimizebutton(0).Clone
minimizebutton.BackgroundImageLayout = ShiftOSDesktop.skinminimizebuttonstyle
'remove background colour when image is present
If closebutton.BackgroundImage Is Nothing Then Else closebutton.BackColor = Color.Transparent
If titlebar.BackgroundImage Is Nothing Then Else titlebar.BackColor = Color.Transparent
If rollupbutton.BackgroundImage Is Nothing Then Else rollupbutton.BackColor = Color.Transparent
If pgtoplcorner.BackgroundImage Is Nothing Then Else pgtoplcorner.BackColor = Color.Transparent
If pgtoprcorner.BackgroundImage Is Nothing Then Else pgtoprcorner.BackColor = Color.Transparent
If minimizebutton.BackgroundImage Is Nothing Then Else minimizebutton.BackColor = Color.Transparent
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
' Move the paddle according to the mouse position.
Private Sub pongMain_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove, pgcontents.MouseMove, titlebar.MouseMove, ball.MouseMove, paddleComputer.MouseMove, paddleHuman.MouseMove, lblstatsX.MouseMove, lbllevelandtime.MouseMove, lblstatsY.MouseMove, lblstatscodepoints.MouseMove, pnlintro.MouseMove, Label6.MouseMove, Label8.MouseMove, btnstartgame.MouseMove
paddleHuman.Location = New Point(paddleHuman.Location.X, (MousePosition.Y - Me.Location.Y - ShiftOSDesktop.titlebarheight - ShiftOSDesktop.windowbordersize) - (paddleHuman.Height / 2))
End Sub
Private Sub gameTimer_Tick(sender As Object, e As EventArgs) Handles gameTimer.Tick
'Set the computer player to move according to the ball's position.
If ball.Location.X > 500 - xVel * 10 AndAlso xVel > 0 Then
If ball.Location.Y > paddleComputer.Location.Y + 50 Then
paddleComputer.Location = New Point(paddleComputer.Location.X, paddleComputer.Location.Y + computerspeed)
End If
If ball.Location.Y < paddleComputer.Location.Y + 50 Then
paddleComputer.Location = New Point(paddleComputer.Location.X, paddleComputer.Location.Y - computerspeed)
End If
casualposition = rand.Next(-150, 201)
Else
If paddleComputer.Location.Y > Me.Size.Height / 2 - paddleComputer.Height + casualposition Then 'used to be me.location.y
paddleComputer.Location = New Point(paddleComputer.Location.X, paddleComputer.Location.Y - computerspeed)
End If
If paddleComputer.Location.Y < Me.Size.Height / 2 - paddleComputer.Height + casualposition Then 'used to be me.location.y
paddleComputer.Location = New Point(paddleComputer.Location.X, paddleComputer.Location.Y + computerspeed)
End If
End If
'Set Xvel and Yvel speeds from decimal
If xVel > 0 Then xVel = Math.Round(xveldec)
If xVel < 0 Then xVel = -Math.Round(xveldec)
If yVel > 0 Then yVel = Math.Round(yveldec)
If yVel < 0 Then yVel = -Math.Round(yveldec)
' Move the game ball.
ball.Location = New Point(ball.Location.X + xVel, ball.Location.Y + yVel)
' Check for top wall.
If ball.Location.Y < 0 Then
ball.Location = New Point(ball.Location.X, 0)
yVel = -yVel
End If
' Check for bottom wall.
If ball.Location.Y > Me.Height - ball.Size.Height - titlebar.Height - pgbottom.Height Then
ball.Location = New Point(ball.Location.X, Me.Height - ball.Size.Height - titlebar.Height - pgbottom.Height)
yVel = -yVel
End If
' Check for player paddle.
If ball.Bounds.IntersectsWith(paddleHuman.Bounds) Then
ball.Location = New Point(paddleHuman.Location.X + ball.Size.Width, ball.Location.Y)
'randomly increase x or y speed of ball
Select Case rand.Next(1, 3)
Case 1
xveldec = xveldec + incrementx
Case 2
If yveldec > 0 Then yveldec = yveldec + incrementy
If yveldec < 0 Then yveldec = yveldec - incrementy
End Select
xVel = -xVel
My.Computer.Audio.Play(My.Resources.typesound, AudioPlayMode.Background)
End If
' Check for computer paddle.
If ball.Bounds.IntersectsWith(paddleComputer.Bounds) Then
ball.Location = New Point(paddleComputer.Location.X - paddleComputer.Size.Width + 1, ball.Location.Y)
xveldec = xveldec + incrementx
xVel = -xVel
My.Computer.Audio.Play(My.Resources.typesound, AudioPlayMode.Background)
End If
' Check for left wall.
If ball.Location.X < -100 Then
ball.Location = New Point(Me.Size.Width / 2 + 200, Me.Size.Height / 2)
paddleComputer.Location = New Point(paddleComputer.Location.X, ball.Location.Y)
If xVel > 0 Then xVel = -xVel
pnllose.Show()
gameTimer.Stop()
counter.Stop()
lblmissedout.Text = "You Missed Out On:" & Environment.NewLine & levelrewards(level - 1) + beatairewardtotal & " Codepoints"
End If
' Check for right wall.
If ball.Location.X > Me.Width - ball.Size.Width - paddleComputer.Width + 100 Then
ball.Location = New Point(Me.Size.Width / 2 + 200, Me.Size.Height / 2)
paddleComputer.Location = New Point(paddleComputer.Location.X, ball.Location.Y)
If xVel > 0 Then xVel = -xVel
beatairewardtotal = beatairewardtotal + beataireward
lblbeatai.Show()
lblbeatai.Text = "You got " & beataireward & " codepoints for beating the Computer!"
tmrcountdown.Start()
gameTimer.Stop()
counter.Stop()
End If
'lblstats.Text = "Xspeed: " & Math.Abs(xVel) & " Yspeed: " & Math.Abs(yVel) & " Human Location: " & paddleHuman.Location.ToString & " Computer Location: " & paddleComputer.Location.ToString & Environment.NewLine & " Ball Location: " & ball.Location.ToString & " Xdec: " & xveldec & " Ydec: " & yveldec & " Xinc: " & incrementx & " Yinc: " & incrementy
lblstatsX.Text = "Xspeed: " & xveldec
lblstatsY.Text = "Yspeed: " & yveldec
lblstatscodepoints.Text = "Codepoints earned: " & levelrewards(level - 1) + beatairewardtotal
lbllevelandtime.Text = "Level: " & level & " - " & secondsleft & " Seconds Left"
If xVel > 20 OrElse xVel < -20 Then
paddleHuman.Width = Math.Abs(xVel)
paddleComputer.Width = Math.Abs(xVel)
Else
paddleHuman.Width = 20
paddleComputer.Width = 20
End If
computerspeed = Math.Abs(yVel)
' pgcontents.Refresh()
' pgcontents.CreateGraphics.FillRectangle(Brushes.Black, ball.Location.X, ball.Location.Y, ball.Width, ball.Height)
End Sub
Private Sub counter_Tick(sender As Object, e As EventArgs) Handles counter.Tick
secondsleft = secondsleft - 1
If secondsleft = -1 Then
secondsleft = 60
level = level + 1
generatenextlevel()
pnlgamestats.Show()
counter.Stop()
gameTimer.Stop()
End If
lblstatscodepoints.Text = "Codepoints earned: " & levelrewards(level - 1) + beatairewardtotal
End Sub
Private Sub btnplayon_Click(sender As Object, e As EventArgs) Handles btnplayon.Click
xveldec = levelxspeed
yveldec = levelyspeed
tmrcountdown.Start()
lblbeatai.Text = "Get " & beataireward & " codepoints for beating the Computer!"
pnlgamestats.Hide()
lblbeatai.Show()
ball.Location = New Point(paddleHuman.Location.X + paddleHuman.Width + 50, paddleHuman.Location.Y + paddleHuman.Height / 2)
If xVel < 0 Then xVel = Math.Abs(xVel)
lbllevelandtime.Text = "Level: " & level & " - " & secondsleft & " Seconds Left"
End Sub
'Increase the ball speed stats for the next level
Private Sub generatenextlevel()
lbllevelreached.Text = "You Reached Level " & level & "!"
lblpreviousstats.Text = "Initial Ball X Speed: " & levelxspeed & Environment.NewLine & _
"Initial Ball Y Speed: " & levelyspeed & Environment.NewLine & _
"Increment X Speed: " & incrementx & Environment.NewLine & _
"Increment Y Speed: " & incrementy
Select Case rand.Next(1, 3)
Case 1
levelxspeed = levelxspeed + 1
Case 2
levelxspeed = levelxspeed + 2
End Select
Select Case rand.Next(1, 3)
Case 1
levelyspeed = levelyspeed + 1
Case 2
levelyspeed = levelyspeed + 2
End Select
Select Case rand.Next(1, 6)
Case 1
incrementx = incrementx + 0.1
Case 2
incrementx = incrementx + 0.2
Case 3
incrementy = incrementy + 0.1
Case 4
incrementy = incrementy + 0.2
Case 5
incrementy = incrementy + 0.3
End Select
lblnextstats.Text = "Initial Ball X Speed: " & levelxspeed & Environment.NewLine & _
"Initial Ball Y Speed: " & levelyspeed & Environment.NewLine & _
"Increment X Speed: " & incrementx & Environment.NewLine & _
"Increment Y Speed: " & incrementy
If level < 15 Then
beataireward = level * 2
Else
beataireward = Math.Round(levelrewards(level) / 10)
End If
totalreward = levelrewards(level - 1) + beatairewardtotal
btncashout.Text = "Cash out with " & totalreward & " codepoints!"
btnplayon.Text = "Play on for " & levelrewards(level) + beatairewardtotal & " codepoints!"
End Sub
Private Sub setuplevelrewards()
levelrewards(0) = 0
levelrewards(1) = 1
levelrewards(2) = 3
levelrewards(3) = 7
levelrewards(4) = 13
levelrewards(5) = 20
levelrewards(6) = 30
levelrewards(7) = 45
levelrewards(8) = 60
levelrewards(9) = 80
levelrewards(10) = 100
levelrewards(11) = 125
levelrewards(12) = 150
levelrewards(13) = 200
levelrewards(14) = 250
levelrewards(15) = 300
levelrewards(16) = 400
levelrewards(17) = 500
levelrewards(18) = 650
levelrewards(19) = 800
levelrewards(20) = 1000
levelrewards(21) = 1250
levelrewards(22) = 1600
levelrewards(23) = 2000
levelrewards(24) = 2500
levelrewards(25) = 3000
levelrewards(26) = 3750
levelrewards(27) = 4500
levelrewards(28) = 5500
levelrewards(29) = 7000
levelrewards(30) = 9000
levelrewards(31) = 11000
levelrewards(32) = 13500
levelrewards(33) = 16000
levelrewards(34) = 20000
levelrewards(35) = 25000
levelrewards(36) = 32000
levelrewards(37) = 40000
levelrewards(38) = 50000
levelrewards(39) = 75000
levelrewards(40) = 100000
End Sub
Private Sub countdown_Tick(sender As Object, e As EventArgs) Handles tmrcountdown.Tick
Select Case countdown
Case 0
countdown = 3
lblcountdown.Hide()
lblbeatai.Hide()
My.Computer.Audio.Play(My.Resources.writesound, AudioPlayMode.Background)
gameTimer.Start()
counter.Start()
tmrcountdown.Stop()
Case 1
lblcountdown.Text = "1"
countdown = countdown - 1
My.Computer.Audio.Play(My.Resources.writesound, AudioPlayMode.Background)
Case 2
lblcountdown.Text = "2"
countdown = countdown - 1
My.Computer.Audio.Play(My.Resources.writesound, AudioPlayMode.Background)
Case 3
lblcountdown.Text = "3"
countdown = countdown - 1
My.Computer.Audio.Play(My.Resources.writesound, AudioPlayMode.Background)
lblcountdown.Show()
End Select
End Sub
Private Sub btncashout_Click(sender As Object, e As EventArgs) Handles btncashout.Click
pnlgamestats.Hide()
pnlfinalstats.Show()
lblfinalcodepointswithtext.Text = "You cashed out with " & totalreward & " codepoints!"
lblfinallevelreached.Text = "Codepoints rewarded for reaching level " & level - 1
lblfinallevelreward.Text = levelrewards(level - 1)
lblfinalcomputerreward.Text = beatairewardtotal
lblfinalcodepoints.Text = totalreward & " CP"
ShiftOSDesktop.codepoints = ShiftOSDesktop.codepoints + totalreward
End Sub
Private Sub newgame()
pnlfinalstats.Hide()
pnllose.Hide()
pnlintro.Hide()
level = 1
totalreward = 0
beataireward = 2
beatairewardtotal = 0
secondsleft = 60
levelxspeed = 3
levelyspeed = 3
incrementx = 0.4
incrementy = 0.2
xveldec = levelxspeed
yveldec = levelyspeed
tmrcountdown.Start()
lblbeatai.Text = "Get " & beataireward & " codepoints for beating the Computer!"
pnlgamestats.Hide()
lblbeatai.Show()
ball.Location = New Point(paddleHuman.Location.X + paddleHuman.Width + 50, paddleHuman.Location.Y + paddleHuman.Height / 2)
If xVel < 0 Then xVel = Math.Abs(xVel)
lbllevelandtime.Text = "Level: " & level & " - " & secondsleft & " Seconds Left"
End Sub
Private Sub btnplayagain_Click(sender As Object, e As EventArgs) Handles btnplayagain.Click
newgame()
End Sub
Private Sub btnlosetryagain_Click(sender As Object, e As EventArgs) Handles btnlosetryagain.Click
newgame()
End Sub
Private Sub btnstartgame_Click(sender As Object, e As EventArgs) Handles btnstartgame.Click
newgame()
End Sub
Private Sub rollupbutton_Paint(sender As Object, e As PaintEventArgs) Handles rollupbutton.Paint
End Sub
End Class