mirror of
https://github.com/TheUltimateHacker/ShiftOS.git
synced 2025-01-22 16:12:14 +00:00
4caacce50c
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
639 lines
No EOL
29 KiB
VB.net
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 |