Habe einen Highscore erstellt, aber wie weiter?
Übersicht

Blitzkrieg Bop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
So!
Travis, ich habe den code überarbeitet, einiges gelöscht und eine Speicherung hinzugefügt, so das die Liste am Ende gespeichert wird. Guck dir das bitte an, sag ob dir das Gefällt oder ob da Fhler drin sind. Bei meinem Spiel ist dsa im Prinzip genauso, bloß man gibt vorher den Namen ein, also muss ich eigentlich nix mehr verändern oder?(außer vielleicht variabel-bezeichnungen) und wie ist das, wenn zu der Liste zum Beispiel noch die Level anzeige kommt, muss ich dafür auch nen neues DIM Feld machen? Danke im VOraus: Code: [AUSKLAPPEN] Graphics 1024,768,16,2 Dim Name$(11) Dim Score(11) ; --- Liste laden Datei = ReadFile("Highscore.dat") If Datei <> 0 Then ; Nur laden, wenn Liste auch vorhanden ist! For i = 1 To 10 Name$(i) = ReadLine(Datei) Score(i) = ReadLine(Datei) Next CloseFile Datei EndIf Text (1024/2),15,"Das ist die Liste aus dem Speicher:",True ;damit jeder bescheid weiß ; --- Liste anzeigen For i = 1 To 10 Text (1024/2), i*20+50, i + "." + Name$(i) + " " + Score(i) Next ; Ein neuer Eintrag wird geschrieben: Locate 100,200 Print "Neuer Eintrag!" Locate 100,250 Name$(11) = Input("Name: ") Locate 100,300 Score(11) = Input("Punke: ") ; --- Liste sortieren For I = 1 To 11 For J = I To 11 If Score(I) < Score(J) Then ; "<" = größter zuerst / ">" = kleinster zuerst MerkerA = Score(I) : Score(I) = Score(J) : Score(J) = MerkerA MerkerB$ = Name$(I) : Name$(I) = Name$(J): Name$(J) = MerkerB$ EndIf Next Next ; --- Liste erneut anzeigen For i = 1 To 10 ;Print i + "." + Name$(i) + " " + Score(i) Text x+(1024/2), i*20+380, i + "." + Name$(i) + " " + Score(i) Text (1024/2),310,"Das ist die Liste, mit dem neuen Namen und sortiert:",True Next WaitKey ; was passiert, nachdem die liste sortiert wurde: ;--- Liste speichern Datei = WriteFile("Highscore.dat") For i = 1 To 10 WriteLine Datei, Name$(i) WriteLine Datei, Score(i) Next CloseFile Datei WaitKey End |
||
~ Hey Ho Let's Go ~ |
![]() |
Travis |
![]() Antworten mit Zitat ![]() |
---|---|---|
Jo, scheint ja zu laufen. Wenn du jetzt noch das erreichte Level speichern willst musst du natürlich noch eine Liste machen
Code: [AUSKLAPPEN] Dim Level(11) und diese dann überall berücksichtigen. Beim sortieren z.B. Code: [AUSKLAPPEN] For I = 1 To 11 For J = I To 11 If Score(I) < Score(J) Then ; "<" = größter zuerst / ">" = kleinster zuerst MerkerA = Score(I) : Score(I) = Score(J) : Score(J) = MerkerA MerkerB$ = Name$(I) : Name$(I) = Name$(J): Name$(J) = MerkerB$ MerkerC$ = Level(I): Level(I) = Level(J): Level(J) = MerkerC$ EndIf Next Next Damit wäre die Funktion schon mal gegeben und man müsste es nur noch an das Spiel anpassen. |
||
www.funforge.org
Ich hasse WASD-Steuerung. Man kann alles sagen, man muss es nur vernünftig begründen können. |
Blitzkrieg Bop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke! ich werde es einbinden! nun aber noch ne frage und zwar hab ich festgestellt, das die datei "Highscore.dat" nicht gerade gesichert ist ;D
ich hätte hier nen code, der eine datei verschlüsselt, was ich dann mit der highscore.dat machen würde, und am anfang des progs würde ich die entshclüsseln, in den speicher laden und wieder verschlüsseln. soll ich das machen,m oder gibt es ne variante, die datei verschlüsselt zu schreieben, ohne viel vom jetzigen coder zu ändern? (meine variante siehe : [url] https://www.blitzforum.de/viewtopic.php?t=2115 [/url] ) |
||
~ Hey Ho Let's Go ~ |
- Zuletzt bearbeitet von Blitzkrieg Bop am So, März 28, 2004 16:38, insgesamt einmal bearbeitet
![]() |
Travis |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das habe ich so in der Form noch nie versucht. Es wäre natürlich sinnvoll um Manipulationen an der Liste zu verhindern.
Man könnte die ganzen Namen vielleicht in einzelne Buchstaben aufteilen und dann ihre ASCII-Werte als Short-Variablen speichern. Das wäre allerdings etwas komplizierter. |
||
www.funforge.org
Ich hasse WASD-Steuerung. Man kann alles sagen, man muss es nur vernünftig begründen können. |
Blitzkrieg Bop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
les dir das durch:
https://www.blitzforum.de/viewtopic.php?t=2115 ![]() |
||
~ Hey Ho Let's Go ~ |
![]() |
Travis |
![]() Antworten mit Zitat ![]() |
---|---|---|
Da hast du's doch. Funktioniert prima. ![]() |
||
www.funforge.org
Ich hasse WASD-Steuerung. Man kann alles sagen, man muss es nur vernünftig begründen können. |
Blitzkrieg Bop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
DAnke !
So, nunbereite ich gerade einen kleinen Test vor und du musst mir noch ne Frage beantworten! Wie kann ich dafür sorgen, das zum Beispiel: Name$(11) = Input(">>") Dieses 'Name$(11)' soll gloabl sein! wie kann ich das erreichen? Folgendes geht nicht: Code: [AUSKLAPPEN] global Name$(11) und erst recht nicht: Code: [AUSKLAPPEN] global Name$ |
||
~ Hey Ho Let's Go ~ |
![]() |
Travis |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du solltest dir wirklich mal ein paar Tutorials oder Hilfen durchlesen. ![]() |
||
www.funforge.org
Ich hasse WASD-Steuerung. Man kann alles sagen, man muss es nur vernünftig begründen können. |
Blitzkrieg Bop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
das hab ich mir auch gedacht! aber das geht irgendwie net!
also, ich poste dir jetzt hier als erstes die datei, in der das spiel ist und als nächstes die datei in der die highscore funktion steht! Beide DAten in ein Verzeichnis und von dieser aus starten: Code: [AUSKLAPPEN] Graphics 1024,768,16,2 SetBuffer BackBuffer() Include "highscore_1.bb" Locate (1024/2),(768/2)+100 Name$(11) = Input(">>:") Global Name$ Repeat ClsColor 129,129,129 Cls timer = timer + 1 Text 100,100,"Deine Punkte:"+Punkte Text 100,150,"Der Timer:"+timer If KeyHit(28) Punkte = Punkte + 1 EndIf If timer > 200 highscore() EndIf Flip Forever und hier die include datei: Code: [AUSKLAPPEN] Dim Name$(11) Dim Score(11) Function highscore() Repeat Cls ; --- Liste laden Datei = ReadFile("Highscore.dat") If Datei <> 0 Then ; Nur laden, wenn Liste auch vorhanden ist! For i = 1 To 10 Name$(i) = ReadLine(Datei) Score(i) = ReadLine(Datei) Next CloseFile Datei EndIf Text (1024/2),15,"Das ist die Liste aus dem Speicher:",True ;damit jeder bescheid weiß ; --- Liste anzeigen For i = 1 To 10 Text (1024/2), i*20+50, i + "." + Name$(i) + " " + Score(i) Next ; Ein neuer Eintrag wird geschrieben: ;Locate 100,200 ;Print "Neuer Eintrag!" ;Locate 100,250 ;Name$(11) = Input("Name: ") ;Locate 100,300 ;Score(11) = Input("Punke: ") WaitKey ; --- Liste sortieren For I = 1 To 11 For J = I To 11 If Score(I) < Score(J) Then ; "<" = größter zuerst / ">" = kleinster zuerst MerkerA = Score(I) : Score(I) = Score(J) : Score(J) = MerkerA MerkerB$ = Name$(I) : Name$(I) = Name$(J): Name$(J) = MerkerB$ EndIf Next Next ; --- Liste erneut anzeigen For i = 1 To 10 ;Print i + "." + Name$(i) + " " + Score(i) Text x+(1024/2), i*20+380, i + "." + Name$(i) + " " + Score(i) Text (1024/2),310,"Das ist die Liste, mit dem neuen Namen und sortiert:",True Next WaitKey ; was passiert, nachdem die liste sortiert wurde: ;--- Liste speichern Datei = WriteFile("Highscore.dat") For i = 1 To 10 WriteLine Datei, Name$(i) WriteLine Datei, Score(i) Next CloseFile Datei WaitKey ;End Flip Forever End Function So, warum zeigt der am Ende meinen Namen nicht an, wenn ich gespielt habe? Achja, eine Highscore.dat musst du halt eben machen, mit Punkten bis maximal 10, weil man nicht viel mehr bekommt! |
||
~ Hey Ho Let's Go ~ |
dubitat |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Code: [AUSKLAPPEN] Dim Name$(11)
bedeutet das nicht das der die Felder Name von 0-10 erstellt? |
||
Erare humanum est - Irren ist Menschlich |
Blitzkrieg Bop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
HILFE TRAVIS ![]() |
||
~ Hey Ho Let's Go ~ |
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
@dubitat: Das erstellt die Felder von 0 - 11, also 12 Felder ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
![]() |
Travis |
![]() Antworten mit Zitat ![]() |
---|---|---|
Habe ich das jetzt übersehen oder hast du deinen Punktestand vor dem Sortieren gar nicht an die Variable Score(11) übergeben. Dann kann der Eintrag auch nicht einsortiert werden, weil der Wert dann null ist und somit nicht in die Liste aufgenommen wird weil er ja niedriger ist als der kleinste vorhandene Wert der Liste.
Außerdem würde ich dir dringend raten deinen Codestil zu überarbeiten. Du solltest für das Laden, Seichern, Anzeigen und Sortieren lieber einzelne Funktionen einrichten, dann kannst du viel flexibler arbeiten und einzelne Vorgänge auch mehrmals aufrufen ohne MB weise Quellcode haben zu müssen. |
||
www.funforge.org
Ich hasse WASD-Steuerung. Man kann alles sagen, man muss es nur vernünftig begründen können. |
Blitzkrieg Bop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ich glaub du hast recht travis nur, wie wird eigentlich der score erhöhT?
ich habe es so, und es geht nicht: Code: [AUSKLAPPEN] If KeyHit(28) Score(i) = Score(i) + 1 EndIf so geht das nicht! Also, welche Variable ist eigentlich für den Score tzuständig, wie z.B für den Namen : 'Name$' Achja, wenn man schriebt: Code: [AUSKLAPPEN] If KeyHit(28) Score = Score + 1 EndIf Dann sagt BB ds man das nicht 'Score' nennen soll. (weil es später ja schon in gebrauch ist!) |
||
~ Hey Ho Let's Go ~ |
Blitzkrieg Bop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hilfe ![]() ![]() |
||
~ Hey Ho Let's Go ~ |
![]() |
Travis |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das sollte doch jetzt eigentlich klar sein. Deinen Punktestand musst du in Score(11) und den Namen in Name$(11) speichern. Genau diese beiden Werte werden dann in die Liste einsortiert. Du kannst natürlich auch jeden anderen Namen verwenden.
Ich Persönlich nehme immer den Variablenname 'Punkte' und übergebe ihn dan vor dem sortieren an Score(11). In deinem Beispiel könntest du z.B. direkt Score(11) verwenden. Code: [AUSKLAPPEN] If KeyHit(28) Score(11) = Score(11) + 1 EndIf Ich möchte dir ja nicht zu nahe treten, aber langsam frage ich mich doch wofür du eigentlich eine Highscoreliste brauchst, wenn du mit solchen einfachen Dingen noch solche Probleme hast. |
||
www.funforge.org
Ich hasse WASD-Steuerung. Man kann alles sagen, man muss es nur vernünftig begründen können. |
Blitzkrieg Bop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
lol, ich bina uch verwirrrt!
Für name schriebe ich name$(11) und dann komm ich nicht darauf was ich für score nehmen muss ![]() ![]() ![]() aber danke für die ganzen tipps travis! ich werd vielleicht noch 1 , 2 fragen haben, aber wenn mein kleines game fertig ist, kommst du als erstes in die credits! (das wird ein moorhuhn clon) also, schau mal ab und zu noch hier vorbei |
||
~ Hey Ho Let's Go ~ |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group