This repository has been archived on 2022-08-01. You can view files and clone it, but cannot push or open issues or pull requests.
Are-You-Not-Edutained/StudentForms/RockPaperScissors/frmRPSFight.vb

305 lines
13 KiB
VB.net
Raw Permalink Normal View History

2014-01-15 16:18:42 +00:00
Imports MySql.Data.MySqlClient
Public Class frmRPSFight
'Declares the variables for the timers
Dim count As Integer = 100
Dim countdown As Integer = 3
Dim time As Integer = 0
'Declares the variables used for storing the winner
Dim WinnerName As String
Dim Winner As Integer
'Subroutine runs on form load
Private Sub frmRPSFight_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Runs the AccountSection subroutine
AccountSection()
'Runs the Weapons subroutine
Weapons()
'Enables the countdown timer
tmrCountdown.Enabled = True
End Sub
'Subroutine runs when called in form load subroutine
Sub Weapons()
'Sets the images to the players' chosen weapons
If LoggedInWeapon = 1 Then
picLoggedIn.Image = My.Resources.bigrock
ElseIf LoggedInWeapon = 2 Then
picLoggedIn.Image = My.Resources.bigpaper
ElseIf LoggedInWeapon = 3 Then
picLoggedIn.Image = My.Resources.bigscissorsloggedin
ElseIf LoggedInWeapon = 0 Then
picLoggedIn.Image = My.Resources.bigchickenloggedin
End If
If OppWeapon = 1 Then
picOpp.Image = My.Resources.bigrock
ElseIf OppWeapon = 2 Then
picOpp.Image = My.Resources.bigpaper
ElseIf OppWeapon = 3 Then
picOpp.Image = My.Resources.bigscissorsopp
ElseIf OppWeapon = 0 Then
picOpp.Image = My.Resources.bigchickenopp
End If
End Sub
'Subroutine runs when called in form load subroutine
Sub AccountSection()
'Populates the player name labels with data
lblLoggedInName.Text = LoggedInStudent.Fname & " " & LoggedInStudent.Lname
lblOppName.Text = OppStudent.Fname & " " & OppStudent.Lname
End Sub
'Subroutine runs when countdown timer ticks
Private Sub tmrCountdown_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tmrCountdown.Tick
'Decrements count by 10
count = count - 10
'If count reaches 0...
If count = 0 Then
'Changes the number of the countdown displayed
countdown = countdown - 1
If countdown > 0 Then
lblCountdown.Text = countdown
count = 100
'If the coundown reaches the end...
Else
'Disables the timer, displays the weapons
picLoggedIn.Visible = True
picOpp.Visible = True
lblCountdown.Visible = False
count = 1000
tmrCountdown.Enabled = False
tmrAnimate.Enabled = True
'Plays 3 Inches of Blood - Deady Sinners
My.Computer.Audio.Play(My.Resources.deadly, AudioPlayMode.Background)
End If
End If
End Sub
'Subroutine runs when animation timer ticks
Private Sub tmrAnimate_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tmrAnimate.Tick
'Declares the variables used for the coords of the pictures
Dim x, y, xx, yy As Integer
'Decrements count by 1000
count = count - 1000
'Runs the random number generator subroutine
Randomize()
'Gets the random coords of both pictureboxes
x = CInt(Int((140) * Rnd() - 20))
y = CInt(Int((50) * Rnd()) + 60)
xx = CInt(Int((140) * Rnd()) + 390)
yy = CInt(Int((50) * Rnd()) + 60)
'Changes the position of both pictureboxes fast enough to resemble animation
If count = 0 Then
If time <> 40 Then
count = 1000
time = time + 1
picLoggedIn.Location = New Point(x, y)
picOpp.Location = New Point(xx, yy)
'If the time has come for the animation to stop...
Else
'Stops playing the music
My.Computer.Audio.Stop()
'Runs the CheckWinner subroutine
CheckWinner()
'Disables the timer
tmrAnimate.Enabled = False
'Runs the DatabaseDetails subroutine
DatabaseDetails()
'Runs the ChangeImage subroutine
ChangeImage()
'Declares the winner
MsgBox("Winner: " & WinnerName)
'Shows the Rock, Paper, Scissors hotseat game form
frmRPSHotseat.Reset()
'Closes this form
Me.Close()
End If
End If
End Sub
'Subroutine runs when called in tmrAnimate_Tick subroutine
Sub ChangeImage()
'Changes the images of the players to reflect the result of the fight
If Winner = 1 Then
If OppWeapon <> 0 Then
If LoggedInWeapon = 1 Then
picLoggedIn.Image = My.Resources.bigrockwinner
picOpp.Image = My.Resources.bigscissorsdeadopp
ElseIf LoggedInWeapon = 2 Then
picLoggedIn.Image = My.Resources.bigpaperwinner
picOpp.Image = My.Resources.bigrockdead
ElseIf LoggedInWeapon = 3 Then
picLoggedIn.Image = My.Resources.bigscissorswinloggedin
picOpp.Image = My.Resources.bigpaperdead
End If
Else
If LoggedInWeapon = 1 Then
picLoggedIn.Image = My.Resources.bigrockwinner
picOpp.Image = My.Resources.bigchickendeadopp
ElseIf LoggedInWeapon = 2 Then
picLoggedIn.Image = My.Resources.bigpaperwinner
picOpp.Image = My.Resources.bigchickendeadopp
ElseIf LoggedInWeapon = 3 Then
picLoggedIn.Image = My.Resources.bigscissorswinloggedin
picOpp.Image = My.Resources.bigchickendeadopp
End If
End If
ElseIf Winner = 2 Then
If LoggedInWeapon <> 0 Then
If LoggedInWeapon = 1 Then
picLoggedIn.Image = My.Resources.bigrockdead
picOpp.Image = My.Resources.bigpaperwinner
ElseIf LoggedInWeapon = 2 Then
picLoggedIn.Image = My.Resources.bigpaperdead
picOpp.Image = My.Resources.bigscissorswinopp
ElseIf LoggedInWeapon = 3 Then
picLoggedIn.Image = My.Resources.bigscissorsdeadloggedin
picOpp.Image = My.Resources.bigrockwinner
End If
Else
If LoggedInWeapon = 1 Then
picLoggedIn.Image = My.Resources.bigrockwinner
picOpp.Image = My.Resources.bigchickendeadopp
ElseIf LoggedInWeapon = 2 Then
picLoggedIn.Image = My.Resources.bigpaperwinner
picOpp.Image = My.Resources.bigchickendeadopp
ElseIf LoggedInWeapon = 3 Then
picLoggedIn.Image = My.Resources.bigscissorswinloggedin
picOpp.Image = My.Resources.bigchickendeadopp
End If
End If
End If
End Sub
'Subroutine runs when called in tmrAnimate_Tick subroutine
Sub CheckWinner()
'Determines the winner of the game
If (LoggedInWeapon = 2 And OppWeapon = 1) Or (LoggedInWeapon = 3 And OppWeapon = 2) Or (LoggedInWeapon = 1 And OppWeapon = 3) Or (LoggedInWeapon <> 0 And OppWeapon = 0) Then
WinnerName = LoggedInStudent.Fname & " " & LoggedInStudent.Lname
Winner = 1
End If
If (LoggedInWeapon = 1 And OppWeapon = 2) Or (LoggedInWeapon = 2 And OppWeapon = 3) Or (LoggedInWeapon = 3 And OppWeapon = 1) Or (LoggedInWeapon = 0 And OppWeapon <> 0) Then
WinnerName = OppStudent.Fname & " " & OppStudent.Lname
Winner = 2
End If
If LoggedInWeapon = OppWeapon Then
WinnerName = "No-one, it's a draw"
Winner = 0
End If
End Sub
'Subroutine runs when called in winner detection subroutine
Sub DatabaseDetails()
'Declares the StreamWriter used to write to the game breakdown text files
Dim writer As System.IO.StreamWriter
Dim sql As String
Dim dbcomm As MySqlCommand
Dim dbread As MySqlDataReader
'If the O player is the winner...
If Winner = 1 Then
'Builds SQL query to execute
sql = "UPDATE `tblstudents` SET `Wins`=`Wins`+1 WHERE `Username`='" & LoggedInStudent.Username & "';"
dbcomm = New MySqlCommand(sql, DBConn)
dbread = dbcomm.ExecuteReader()
dbread.Close()
'Sets the path to where the log shall be generated, and the filename
writer = My.Computer.FileSystem.OpenTextFileWriter(LoggedInStudent.Username & ".txt", True)
'Writes the relevant data to the log
writer.WriteLine(LoggedInStudent.Fname & " " & LoggedInStudent.Lname & " beat " & OppStudent.Fname & " " & OppStudent.Lname & " in Rock, Paper, Scissors - " & TimeOfDay & " " & DateValue(Now))
'Saves the log file
writer.Close()
'Builds SQL query to execute
sql = "UPDATE `tblstudents` SET `Losses`=`Losses`+1 WHERE `Username`='" & OppStudent.Username & "';"
dbcomm = New MySqlCommand(sql, DBConn)
dbread = dbcomm.ExecuteReader()
dbread.Close()
'Sets the path to where the log shall be generated, and the filename
writer = My.Computer.FileSystem.OpenTextFileWriter(OppStudent.Username & ".txt", True)
'Writes the relevant data to the log
writer.WriteLine(OppStudent.Fname & " " & OppStudent.Lname & " was beaten by " & LoggedInStudent.Fname & " " & OppStudent.Lname & " in Rock, Paper, Scissors - " & TimeOfDay & " " & DateValue(Now))
'Saves the log file
writer.Close()
ElseIf Winner = 2 Then
'Builds SQL query to execute
sql = "UPDATE `tblstudents` SET `Wins`=`Wins`+1 WHERE `Username`='" & OppStudent.Username & "';"
dbcomm = New MySqlCommand(sql, DBConn)
dbread = dbcomm.ExecuteReader()
dbread.Close()
'Sets the path to where the log shall be generated, and the filename
writer = My.Computer.FileSystem.OpenTextFileWriter(OppStudent.Username & ".txt", True)
'Writes the relevant data to the log
writer.WriteLine(OppStudent.Fname & " " & OppStudent.Lname & " beat " & LoggedInStudent.Fname & " " & LoggedInStudent.Lname & " in Rock, Paper, Scissors - " & TimeOfDay & " " & DateValue(Now))
'Saves the log file
writer.Close()
'Builds SQL query to execute
sql = "UPDATE `tblstudents` SET `Losses`=`Losses`+1 WHERE `Username`='" & LoggedInStudent.Username & "';"
dbcomm = New MySqlCommand(sql, DBConn)
dbread = dbcomm.ExecuteReader()
dbread.Close()
'Sets the path to where the log shall be generated, and the filename
writer = My.Computer.FileSystem.OpenTextFileWriter(LoggedInStudent.Username & ".txt", True)
'Writes the relevant data to the log
writer.WriteLine(LoggedInStudent.Fname & " " & LoggedInStudent.Lname & " was beaten by " & OppStudent.Fname & " " & LoggedInStudent.Lname & " in Rock, Paper, Scissors - " & TimeOfDay & " " & DateValue(Now))
'Saves the log file
writer.Close()
ElseIf Winner = 0 Then
'Builds SQL query to execute
sql = "UPDATE `tblstudents` SET `Draws`=`Draws`+1 WHERE `Username`='" & LoggedInStudent.Username & "';"
dbcomm = New MySqlCommand(sql, DBConn)
dbread = dbcomm.ExecuteReader()
dbread.Close()
'Sets the path to where the log shall be generated, and the filename
writer = My.Computer.FileSystem.OpenTextFileWriter(LoggedInStudent.Username & ".txt", True)
'Writes the relevant data to the log
writer.WriteLine(LoggedInStudent.Fname & " " & LoggedInStudent.Lname & " drew with " & OppStudent.Fname & " " & OppStudent.Lname & " in Rock, Paper, Scissors - " & TimeOfDay & " " & DateValue(Now))
'Saves the log file
writer.Close()
'Builds SQL query to execute
sql = "UPDATE `tblstudents` SET `Draws`=`Draws`+1 WHERE `Username`='" & OppStudent.Username & "';"
dbcomm = New MySqlCommand(sql, DBConn)
dbread = dbcomm.ExecuteReader()
dbread.Close()
'Sets the path to where the log shall be generated, and the filename
writer = My.Computer.FileSystem.OpenTextFileWriter(OppStudent.Username & ".txt", True)
'Writes the relevant data to the log
writer.WriteLine(OppStudent.Fname & " " & OppStudent.Lname & " drew with " & LoggedInStudent.Fname & " " & OppStudent.Lname & " in Rock, Paper, Scissors - " & TimeOfDay & " " & DateValue(Now))
'Saves the log file
writer.Close()
End If
End Sub
End Class