CodeGuru Home VC++ / MFC / C++ .NET / C# Visual Basic VB Forums Developer.com
Results 1 to 4 of 4
  1. #1
    Join Date
    Feb 2015
    Posts
    6

    Help With High Score Leaderboard

    I am trying to take 8 players scores and sort them into highest at the top to lowest at the bottom. Any codes i have tried just is not working out at all and i have no idea what i am doing wrong. I have 8 separate Textboxes.
    First I had this:

    Code:
    Private Sub RankScoresBtn_Click(sender As Object, e As EventArgs) Handles RankScoresBtn.Click
    Dim score(7) As Integer
    score(0) = CInt(P1Score.Text)
    score(1) = CInt(P2Score.Text)
    score(2) = CInt(P3Score.Text)
    score(3) = CInt(P4Score.Text)
    score(4) = CInt(P5Score.Text)
    score(5) = CInt(P6Score.Text)
    score(6) = CInt(P7Score.Text)
    score(7) = CInt(P8Score.Text)
    Array.Sort(score)
    Array.Reverse(score)
    End Sub

    Then i tried this:
    Code:
    Private Sub RankScoresBtn_Click(sender As Object, e As EventArgs) Handles RankScoresBtn.Click
    Dim highscore(7) As Integer
    highscore(0) = P1Score.Text(1)
    highscore(1) = P2Score.Text(2)
    highscore(2) = P3Score.Text(3)
    highscore(3) = P4Score.Text(4)
    highscore(4) = P5Score.Text(5)
    highscore(5) = P6Score.Text(6)
    highscore(6) = P7Score.Text(7)
    highscore(7) = P8Score.Text(8)
    
    Array.Sort(highscore)
    Array.Reverse(highscore)
    End Sub
    but with that one, all the Pscore.text had blue lines under it

    then i tried:

    Code:
    Dim a(5) As Integer
    Dim i As Integer
    Dim j As Integer
    a(0) = P1Score.Text
    a(1) = P2Score.Text
    a(2) = P3Score.Text
    a(3) = P4Score.Text
    a(4) = P5Score.Text
    For i = 0 To 4
    For j = i + 1 To 4
    If a(i) > a(j) Then
    ' swap the number in those two locations
    ' For Eg: if x = 10 and y = 9 then
    ' x y
    ' 10 9
    ' Since 10 > 9 we swap x and y
    ' x = x + y => x = 10 + 9 = 19
    ' y = x - y => y = 19 - 9 = 10 => y = 10
    ' x = x - y => x = 19 - 10 = 9 => x = 9
    a(i) = a(i) + a(j)
    a(j) = a(i) - a(j)
    a(i) = a(i) - a(j)
    End If
    Next j
    Next i
    'Now the array would hold the values in ascending order
    'To sort in descending order just make the following change
    'If a(i) < a(j) Then
    and with this i got an error stating Conversion from string "" to type 'Integer' is not valid"

    and last but not least i tried this:

    Code:
    #Region "variables"
        'Dim score As Integer
        Dim player1score As Integer = 0
        Dim player2score As Integer = 0
        Dim player3score As Integer = 0
        Dim player4score As Integer = 0
        Dim player5score As Integer = 0
        Dim player6score As Integer = 0
        Dim player7score As Integer = 0
        Dim player8score As Integer = 0
    
        Dim p1name As String
        Dim p2name As String
        Dim p3name As String
        Dim p4name As String
        Dim p5name As String
        Dim p6name As String
        Dim p7name As String
        Dim p8name As String
    
        'Private Sub scoreboard()
        'End Sub
    #End Region
    
        Private Sub RankScoresBtn_Click(sender As Object, e As EventArgs) Handles RankScoresBtn.Click
            If player1score > player2score Then
                player8score = player7score
                player7score = player6score
                player6score = player5score
                player5score = player4score
                player4score = player3score
                player3score = player2score
                player2score = player1score
                p8name = p7name
                p7name = p6name
                p6name = p5name
                p5name = p4name
                p4name = p3name
                p3name = p2name
                p2name = p1name
                PlayerOneRank.Text = p1name
                PlayerTwoRank.Text = p2name
                PlayerThreeRank.Text = p3name
                PlayerFourRank.Text = p4name
                PlayerFiveRank.Text = p5name
                PlayerSixRank.Text = p6name
                PlayerSevenRank.Text = p7name
                PlayerEightRank.Text = p8name
                P1Score.Text = player1score
                P2Score.Text = player2score
                P3Score.Text = player3score
                P4Score.Text = player4score
                P5Score.Text = player5score
                P6Score.Text = player6score
                P7Score.Text = player7score
                P8Score.Text = player8score
                Exit Sub
            End If
            If player2score > player1score Then
                player8score = player7score
                player7score = player6score
                player6score = player5score
                player5score = player4score
                player4score = player3score
                player3score = player2score
                p8name = p7name
                p7name = p6name
                p6name = p5name
                p5name = p4name
                p4name = p3name
                p3name = p2name
                PlayerTwoRank.Text = p2name
                PlayerThreeRank.Text = p3name
                PlayerFourRank.Text = p4name
                PlayerFiveRank.Text = p5name
                PlayerSixRank.Text = p6name
                PlayerSevenRank.Text = p7name
                PlayerEightRank.Text = p8name
                P2Score.Text = player2score
                P3Score.Text = player3score
                P4Score.Text = player4score
                P5Score.Text = player5score
                P6Score.Text = player6score
                P7Score.Text = player7score
                P8Score.Text = player8score
                Exit Sub
            End If
            If player3score > player2score Then
                player8score = player7score
                player7score = player6score
                player6score = player5score
                player5score = player4score
                player4score = player3score
                p8name = p7name
                p7name = p6name
                p6name = p5name
                p5name = p4name
                p4name = p3name
                PlayerThreeRank.Text = p3name
                PlayerFourRank.Text = p4name
                PlayerFiveRank.Text = p5name
                PlayerSixRank.Text = p6name
                PlayerSevenRank.Text = p7name
                PlayerEightRank.Text = p8name
                P3Score.Text = player3score
                P4Score.Text = player4score
                P5Score.Text = player5score
                P6Score.Text = player6score
                P7Score.Text = player7score
                P8Score.Text = player8score
                Exit Sub
            End If
            If player4score > player3score Then
                player8score = player7score
                player7score = player6score
                player6score = player5score
                player5score = player4score
                p8name = p7name
                p7name = p6name
                p6name = p5name
                p5name = p4name
                PlayerFourRank.Text = p4name
                PlayerFiveRank.Text = p5name
                PlayerSixRank.Text = p6name
                PlayerSevenRank.Text = p7name
                PlayerEightRank.Text = p8name
                P4Score.Text = player4score
                P5Score.Text = player5score
                P6Score.Text = player6score
                P7Score.Text = player7score
                P8Score.Text = player8score
                Exit Sub
            End If
            If player5score > player4score Then
                player8score = player7score
                player7score = player6score
                player6score = player5score
                p8name = p7name
                p7name = p6name
                p6name = p5name
                PlayerFiveRank.Text = p5name
                PlayerSixRank.Text = p6name
                PlayerSevenRank.Text = p7name
                PlayerEightRank.Text = p8name
                P5Score.Text = player5score
                P6Score.Text = player6score
                P7Score.Text = player7score
                P8Score.Text = player8score
                Exit Sub
            End If
            If player6score > player5score Then
                player8score = player7score
                player7score = player6score
                p8name = p7name
                p7name = p6name
                PlayerSixRank.Text = p6name
                PlayerSevenRank.Text = p7name
                PlayerEightRank.Text = p8name
                P6Score.Text = player6score
                P7Score.Text = player7score
                P8Score.Text = player8score
                Exit Sub
            End If
            If player7score > player6score Then
                player8score = player7score
                p8name = p7name
                PlayerSevenRank.Text = p7name
                PlayerEightRank.Text = p8name
                P7Score.Text = player7score
                P8Score.Text = player8score
                Exit Sub
            End If
            If player8score > player7score Then
                player8score = player8score
                p8name = p8name
                PlayerEightRank.Text = p8name
                P8Score.Text = player8score
                Exit Sub
            End If
        End Sub
    Any help would be GREATLY GREATLY appreciated....i'm ripping my hair out on this!

    Thanks!

  2. #2
    Join Date
    Feb 2015
    Posts
    6

    Re: Help With High Score Leaderboard

    This is the Design view for it

    Name:  leaderboard.jpg
Views: 83
Size:  59.3 KB

  3. #3
    Join Date
    Feb 2015
    Posts
    6

    Re: Help With High Score Leaderboard

    Ok I got the scores working properly now i just need the name textboxes to follow their correct scores. Any ideas how i can do this?

    This is my code:

    Private Sub RankScoresBtn_Click(sender As Object, e As EventArgs) Handles RankScoresBtn.Click

    Dim boxes() As TextBox = {P1Score, P2Score, P3Score, P4Score, P5Score, P6Score, P7Score, P8Score}
    Dim score(boxes.Length - 1) As Integer

    For i As Integer = 0 To boxes.Length - 1
    Integer.TryParse(boxes(i).Text, score(i))
    Next

    Array.Sort(score)
    Array.Reverse(score)

    For i As Integer = 0 To boxes.Length - 1
    boxes(i).Text = score(i).ToString
    Next



    End Sub

  4. #4
    Join Date
    Jul 2008
    Location
    WV
    Posts
    5,362

    Re: Help With High Score Leaderboard

    Why not use a list or listview or grid view instead of text boxes?
    Always use [code][/code] tags when posting code.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  





Click Here to Expand Forum to Full Width

Featured