Dim NoOfPlayers As Integer
Dim StrokesPerHole As Integer
Dim ValidCoursePar As Boolean= False
Dim StrokesPerHole2 As Integer
Dim ValidStokes As Boolean= False
Dim AverageRoundScore As Double
Dim AverageHoleScore As Double
Dim GrantTotalScore As Integer
Dim LowestPar As Integer= 100
Console.WriteLine("Enter Number of players (2, 3 or 4)")
NoOfPlayers = Console.ReadLine()
Loop Until NoOfPlayers >= 2 And NoOfPlayers <= 4
Console.WriteLine("Enter Number of Holes (2,3)")
NoOfHoles=Console.ReadLine()
Loop Until NoOfHoles = 2 Or NoOfHoles = 3
Console.WriteLine("Enter Course par (>=30 and less than = 100)")
CoursePar = Console.ReadLine()
If CoursePar >= 30 And CoursePar <= 50 Then
Console.WriteLine("Enter a valid course par between 30 and 50")
If CoursePar >= 30 And CoursePar <= 100 Then
Else Console.WriteLine("Enter a valid course par between 30 and 100")
Loop Until ValidCoursePar = True
Dim Names(NoOfPlayers -1) As String
Dim scores(NoOfHoles -1, NoOfPlayers -1) As Integer
Dim TotalScores(NoOfPlayers -1) As Integer
For r = 0 To NoOfHoles -1
For c = 0 To NoOfPlayers -1
For i = 0 To NoOfPlayers -1
Console.WriteLine("Enter Player "& i + 1 & " Name ")
Names(i) = Console.ReadLine()
Console.WriteLine("Number of players taking part : "& NoOfPlayers)
Console.WriteLine("The players are ")
For i = 0 To NoOfPlayers -1
Console.WriteLine(i + 1 & "".PadLeft(5) & Names(i))
Console.WriteLine("Number of holes to be played : "& NoOfHoles)
Console.WriteLine("The par for the course : "& CoursePar)
Console.WriteLine("Entering stokes for each hole : ")
For c = 0 To NoOfPlayers -1
Console.WriteLine("Entering Strokes for "& Names(c))
For r = 0 To NoOfHoles -1
Console.WriteLine("Enter strokes for hole "& r + 1)
StrokesPerHole = Console.ReadLine()
Console.WriteLine("Re-enter strokes for hole "& r + 1)
StrokesPerHole2 = Console.ReadLine()
If StrokesPerHole = StrokesPerHole2 Then
scores(r, c) = StrokesPerHole
TotalScores(c) = TotalScores(c) + StrokesPerHole
Console.WriteLine("Strokes for hole "& r + 1 & "Do not match, Please re-enter")
Loop Until ValidStokes = True
Console.WriteLine("Do you want to view current scores (Yes/No)")
ViewScores = Console.ReadLine()
If ViewScores = "Yes" Or ViewScores = "yes" Then
Console.WriteLine("Name of player "& Names(c))
Console.WriteLine("Holes played so far "& r + 1)
Console.WriteLine("Current score "& TotalScores(c))
For x = 0 To NoOfPlayers -1
Console.Write(Names(x) & "".PadLeft(8))
For r = 0 To NoOfHoles -1
For c = 0 To NoOfPlayers -1
Console.Write(scores(r, c) & " ".PadLeft(8))
Console.WriteLine("Total Scores")
For x = 0 To NoOfPlayers -1
Console.Write(TotalScores(x) & "".PadLeft(8))
If TotalScores(x)<LowestPar Then
LowestPar = TotalScores(x)
Console.WriteLine("The winner is "& Names(Winner))
LowestPar = LowestPar -CoursePar
Console.WriteLine("Total score is "& LowestPar & " Overpar")
Else Console.WriteLine("Total score is "& LowestPar * -1 & " Underpar")
For t = 0 To NoOfPlayers -1
Total = GrantTotalScore + Total
AverageRoundScore = GrantTotalScore / NoOfPlayers
Console.WriteLine("The average score for the round is "& AverageRoundScore)
For r = 0 To (NoOfHoles -1)
For c = 0 To NoOfPlayers -1
HoleTotal = HoleTotal + scores(r, c)
AverageHoleScore = HoleTotal / NoOfPlayers
Console.WriteLine("Hole number "& r + 1 & " Average Score "& AverageHoleScore)
Console.WriteLine("List of players with a hole in 0ne")
For c = 0 To NoOfPlayers -1
For r = 0 To NoOfHoles -1
Console.WriteLine("Player Name ".PadLeft(4) & Names(c) & " Hole Number "& r + 1)