High Score table with Parse cloud

nad

Active Member
Licensed User
Longtime User
Hello,

Taking some code from here and there i got this maybe some of you find it useful. The idea is to have a unique High Score ranking for your app and all your users together.

Use Menu to add rows (user records) and view the high score table in the log. You need to add your parse appid and clientkey to make it work.

Cheers,


B4X:
Sub Process_Globals
    Dim AppId, ClientKey As String
    AppId = "YourAppId"
    ClientKey = "YoudClientKey"
    Dim Parse As Parse
   
   
   Dim NumberOfScores As Int
   NumberOfScores=10
   Dim LowestScore As Int
   
   
   Dim lstHighScore As List
   
   Dim Timer1 As Timer
   
   Dim counter As Int
End Sub
Sub Globals
End Sub
Sub Activity_Create(FirstTime As Boolean)
    If FirstTime Then
        Parse.Initialize(AppId, ClientKey)
    End If

    ResetScores
   
   
   Activity.AddMenuItem("Add 5 records", "Add5Items")
   Activity.AddMenuItem("Show High Records", "ShowHR")
End Sub

Sub Add5Items_click
   counter=0
   Timer1.Initialize("Timer1",2000)
   Timer1.Enabled=True
End Sub

Sub ShowHR_click
   LogScores
End Sub

Sub Timer1_tick
   counter=counter+1
   Timer1.Enabled=False
   AddScore(("Name"&Rnd(1,100)),Rnd(1,1000))
   
   If counter<=4 Then
      Timer1.Initialize("Timer1",2000)
      Timer1.Enabled=True
   Else
      Timer1.Enabled=False   
      Log("---------- Added 5 records ----------")
   End If
End Sub

Sub AddScore(strName As String, intScore As Int)
   
    Log("*** Adding score "&strName&" -> "&intScore &" ***")
    Dim po2 As ParseObject
    po2.Initialize("HighScores")
    po2.Put("Name", strName)   ' after we add the new value
    po2.Put("Score", IntScore)
    po2.Save("po2")
    ProgressDialogShow("Saving.")
End Sub

Sub po2_DoneSave (Success As Boolean)
    ProgressDialogHide
    If Success = False Then
        Log(LastException.Message)
    End If
End Sub

Sub LogScores
    Dim query As ParseQuery
    query.Initialize("HighScores")
    query.OrderBy("Score", False)
    query.Find("query", 1)
    ProgressDialogShow("Waiting for response.")
End Sub


Sub query_DoneFind (Success As Boolean, ListOfPO As List, TaskId As Int)
    ProgressDialogHide
    If Success = False Then
        Log("Error: " & LastException.Message)
        ToastMessageShow("Error: " & LastException.Message, True)
    Else
      Log("--------- TOP "&NumberOfScores&" HIGH SCORES ---------")
          
      Dim K As Int
      If NumberOfScores<ListOfPO.Size Then 
         K=NumberOfScores
      Else
         K=ListOfPO.Size
      End If
      
           For i = 0 To K-1
               Dim po As ParseObject
               po = ListOfPO.Get(i)
               Log(" + "& po.GetString("Name") &" + "&po.GetInt("Score"))
           Next
      Log("--------------------------------------")
    End If
End Sub

Sub ResetScores
    Dim query As ParseQuery
    query.Initialize("HighScores")
    query.Find("DeleteItems", 1)
   Log("All Rows Deleted...")
    ProgressDialogShow("Waiting for response.")    
End Sub
Sub DeleteItems_DoneFind (Success As Boolean, ListOfPO As List, TaskId As Int)
    ProgressDialogHide
    If Success = False Then
        Log("Error: " & LastException.Message)
        ToastMessageShow("Error: " & LastException.Message, True)
    Else
        
        For i = 0 To ListOfPO.Size - 1
            Dim po As ParseObject
            po = ListOfPO.Get(i)
            po.Delete("delete")
            ProgressDialogShow("Waiting for response.")
        Next
        
    End If
End Sub
Sub Delete_DoneDelete (Success As Boolean)
    ProgressDialogHide
    Dim po As ParseObject
    po = Sender
    Log(po.ObjectId & " delete, success = " & Success)
End Sub

Sub Activity_Pause(UserClosed As Boolean)
    
End Sub
Sub Activity_Resume

End Sub
 

Attachments

  • High Score table with Parse cloud.zip
    6.3 KB · Views: 309
Last edited:
Top