Toon posts:

[VB6]Highscores saven

Pagina: 1
Acties:
  • 32 views sinds 30-01-2008

Verwijderd

Topicstarter
Ik heb dus een spel gemaakt en wil hierbij graag highscores saven.
Nu kan hij dat al een beetje d.m.v. de volgende code

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub Payout_Click()
If MsgBox("Are you sure you want to end the game and save your winpoints?" & vbCrLf & _
              "", vbQuestion + vbYesNo, "Payout.") = vbYes Then
fname = InputBox("Enter your name")
    Score = intWin
   Dim f As Integer, pass As String
    f = FreeFile
    Open App.Path & "\highscores.dat" For Output As f
    Write #f, fname, score
    Close #f 

End if
End sub


Ik wil graag een top 3 hebben alleen elke keer als er een nieuwe score word opgeslagen vervangt deze de eerste highscore dus blijft er altijd maar 1 staan.

Wie kan mij helpen?

X-Ray

[ Voor 23% gewijzigd door Verwijderd op 26-04-2006 11:27 . Reden: Stukje code vergeten ]


  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 20-02 03:31

Gerco

Professional Newbie

Je overschijft steeds de complete file en dus vervang je steeds de al opgeslagen score door de nieuwe. Wat je moet doen is de file aan het begin van je programma inlezen (zodat je de scores kan laten zien ofzo) en na het behalen van een nieuwe score de hele file opnieuw schrijven (alle drie de scores dus).

Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
  ' Ergens in een module ofzo
  Type Score
    naam As String
    punten As Integer
  End Type

  Global scores(1 to 3) As Score

  ' Open file
  ' Lees drie scores
  ' Close file


En voor wegschrijven:
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
  ' Bepaal locatie van nieuwe score in de lijst
  ' Schuif de andere scores naar beneden
  ' Plaats de nieuwe score

  ' Open de scoresfile
  ' Schrijf de drie scores
  For i = 1 to 3
    Write #1, scores(i).naam, scores(i).punten
  Next i
  ' Close de file


Dit is nu niet bepaald een best programming practice overigens. Die Global scores variabele is een gruwel, maar het werkt wel. Je mag er zelf over nadenken hoe het beter kan :)

Als je trouwens toch een user defined type gebruikt voor de scores, kun je de file ook in binary (Random Access) mode openen en met Get en Put de records wegschrijven. De file is dan niet meer goed leesbaar voor mensen, maar het is wel een hele makkelijke manier om op willekeurige locaties in de file te lezen en schrijven

[ Voor 83% gewijzigd door Gerco op 26-04-2006 11:18 ]

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


Verwijderd

Topicstarter
Maar in die module dat is toch alleen als je hem automatisch wil laten saven.
Ik wil het zo hebben dat de gebruiker zelf kan uitbetalen als het ware (Payout) wanneer hij/zij dat wil.
Dan is die module toch niet van toepassing?

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 20-02 03:31

Gerco

Professional Newbie

Waar je die scores in je programma opslaat is niet zo van belang. Het is het wegschrijven wat je bedoelt. Wanneer de gebruiker de scores wil opslaan (uitbetalen), doe je die wegschrijfactie. Die variabele is niet automatisch gelinkt aan je bestand ofzo.

Sterker nog, die hele globale variabele kan je weglaten als je de scores nooit wilt laten zien, maar alleen opslaan. Dan lees je gewoon de scores, voeg je de nieuwe toe en sla je weer op. Dat heeft alleen een beetje weinig zin, want ik neem aan dat je de opgeslagen scores ook wel weer een keer op het scherm wil zetten.

[ Voor 40% gewijzigd door Gerco op 26-04-2006 11:32 ]

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


Verwijderd

Topicstarter
Ja dat laten zien doe ik in een een nieuwe form, maar als ik eenmaal doorheb hoe ik 3 scores moet wegschrijven, dus ook de oude kan laten staan, dan lijkt me dat geen probleem.
Het probleem is dus nu, dat ik door moet krijgen hoe ik 3 scores krijg :)

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 20-02 03:31

Gerco

Professional Newbie

Dat probleem kun je heel eenvoudig oplossen door mijn eerste reply in dit topic door te nemen. Daar staat het namelijk al bijna helemaal voorgekauwd :)

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • whoami
  • Registratie: December 2000
  • Laatst online: 07:13
Mja, een beetje zelfwerkzaamheid en debuggen mag ook wel.
Gerco legt het eea goed uit, dus je zou daarmee toch verder moeten kunnen. Het is niet de bedoeling dat men bij het handje genomen wordt. :)

https://fgheysels.github.io/

Pagina: 1

Dit topic is gesloten.