Highscore richtig sortieren[gelöst]
Übersicht

![]() |
maboxBetreff: Highscore richtig sortieren[gelöst] |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi ich will mal lernen richtig eine Highscore zu sortieren. Man hat einen Namen und eine Zahl die vom Spiel geliefert werden. Diese Namen sollen dann einsortiert werden und der Name mit den wenigsten Punkten fällt raus. Ich habe schon einen Code bei welchen aber der unterste in der Liste immer rausfliegt auch wenn der Name der neu reinkommt weniger Punkte hat kommt er auf dessen Platz.
Ich hoffe ihr versteht das Problem. Hier ist der Code von der Sortierfunktion. Code: [AUSKLAPPEN] Function SortHighscore(Score,nam$)
hs(10) = Score For i = 1 To 10 For j = 1 To 10 If hs(i) > hs(j) Then temp = hs(i) hs(i) = hs(j) hs(j) = temp temp_$ = name(i) name(i) = name(j) name(j) = temp_$ EndIf Next Next For i = 1 To 10 If hs(i) = Score Then name$(i) = nam$:Exit Next If name$(10) = nam$ Then name$(10) = "" End Function Und hier der komplette Code: [AUSKLAPPEN] ReadHighscore("score.sav")
SortHighscore(500,"master") SaveHighscore("score.sav") Dim hs(10) Dim name$(10) Function SortHighscore(Score,nam$) hs(10) = Score For i = 1 To 10 For j = 1 To 10 If hs(i) > hs(j) Then temp = hs(i) hs(i) = hs(j) hs(j) = temp temp_$ = name(i) name(i) = name(j) name(j) = temp_$ EndIf Next Next For i = 1 To 10 If hs(i) = Score Then name$(i) = nam$:Exit Next If name$(10) = nam$ Then name$(10) = "" End Function Function ReadHighscore(Pfad$) dat = ReadFile(Pfad$) For i = 1 To 10 hs(i) = (ReadInt(dat)+33)/55 name$(i) = ReadString(dat) Next CloseFile dat End Function Function SaveHighScore(Pfad$) dat = WriteFile(Pfad$) For i = 1 To 10 WriteInt(dat,hs(i)*55-33) WriteString(dat,name$(i)) Next CloseFile dat End Function Kann mir bitte jemand erklären wie die Sortierfunktion funktioniert und wie man sie verbessern kann? |
||
Fujitsu-Siemens Laptop, 2Ghz Intel Core2Duo Prozessor, 2GB Ram, 120GB Festplatte, ATI Mobility Radeon X1400, Windows Vista Ultimate
www.mausoft.de.tl Dönerfresser Homepage |
- Zuletzt bearbeitet von mabox am So, Nov 18, 2007 10:56, insgesamt einmal bearbeitet
![]() |
Eingeproggt |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dein Code ist ja noch sehr grundlegend. Warum er nicht funktioniert, hab ich mir nicht überlegt, weil mir dein nicht eingerückter Stil nicht gefällt. Wenn du wissen willst, wie Sortieralgorithmen funktionieren, schau entweder hier oder auf wikipedia
mfG, Christoph. |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
![]() |
PSYBetreff: Re: Highscore richtig sortieren |
![]() Antworten mit Zitat ![]() |
---|---|---|
mabox hat Folgendes geschrieben: Ich habe schon einen Code bei welchen aber der unterste in der Liste immer rausfliegt auch wenn der Name der neu reinkommt weniger Punkte hat kommt er auf dessen Platz.
Code: [AUSKLAPPEN] hs(10) = Score ![]() |
||
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du hast keine Überprüfung ob die Code: [AUSKLAPPEN] Score => hs(10) weil dann die Highscore immer erst prüft und wenn die score => hs(10) ist dann Sortieren ... musst dass am anfang der Function "SortHighscore" schreiben... Aber ich mein, wenn man fremde Codes benutz, sollte man sie auch verstehen.... (das sind nämlich meine Functionen ![]() mfg Crack93 |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
![]() |
mabox |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das ist ja grad mein Problem dass ich den Code nicht versteh. Deshalb steht in meinem ersten Post in diesen Thread auch, dass ich lernen will eine Highscore zu programmieren. Kann jemand versuchen mir den Code zu erklären?? vielleicht Crack93 da es ja sein Code ist? das wär nett!
~Edit: Das versteh ich auch nicht ganz was du damit meinst: Crack93 hat Folgendes geschrieben: Du hast keine Überprüfung ob die Code: [AUSKLAPPEN] [EINKLAPPEN] Score => hs(10)weil dann die Highscore immer erst prüft und wenn die score => hs(10) ist dann Sortieren ... musst dass am anfang der Function "SortHighscore" schreiben...
|
||
![]() |
The_Nici |
![]() Antworten mit Zitat ![]() |
---|---|---|
"Stehle" keine Codes mehr, dann weisst du, was man tun muss. | ||
![]() |
mabox |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich würde ja keine Codes "stehlen" wenn ich eine Highscore Programmieren könnte aber da ich nicht versteh wie das geht muss ich entweder auf Codes anderer Leute zurückgreifen oder lernen Highscores zu programmieren, was mir natürlich sehr viel lieber wäre aber alleine schaff ich das nicht. | ||
Fujitsu-Siemens Laptop, 2Ghz Intel Core2Duo Prozessor, 2GB Ram, 120GB Festplatte, ATI Mobility Radeon X1400, Windows Vista Ultimate
www.mausoft.de.tl Dönerfresser Homepage |
HyDr0x |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich will ja nichts sagen aber das ist doch nicht so schwer... wenn du schon daran verzweifeltst was soll das dann später werden wenn du pathfinding oder so lernen willst?? So ne Highscore hab ich mir selbst on the fly geproggt ohne mir irgendwas anzuguggen ..., naja egal ich will mal nicht so sein ... . Hier mein code hoffe er hilft dir weiter.
Code: [AUSKLAPPEN] ;Mainloop oder sowas blablub hz = hz + 1 If hz = 1 Then readhigh();Die Highscore einlesen highscorehinz();neuen Score adden readhigh();2. einlesen des neuen Streams, da eventuell ein neuer Score hinzugefügt wurde ; jetzt hat man fein sortiert alle 10 Scores in einer Liste. wem es beliebt kann natürlich noch Namen hinzufügen. EndIf ;weiter gehts im code blablubb ;zu den Funktionen Function readhigh() hstream2 = ReadFile("Highscore.dat");highscore datei öffnen For stt = 1 To 10;alles zehn Highscores einlesen high(stt) = ReadInt(hstream2) Next CloseFile(hstream2);stream schliessen End Function Function highscorehinz();jetzt guggen ob der neue Score rein darf und wenn dann adden hstream = OpenFile("Highscore.dat");score datei öffnen For stt = 1 To 10;alle Zehn Scores durchgehen die zuvor mit readscore eingelesen wurden If high(stt-hn) < score And ev = 0 Then ;Wenn die Score kleiner ist als die neue Score dann WriteInt hstream, score;wird die neue Score an die Stelle in die Datei geschrieben ev = 1;Variable die bewirkt das die nächsten kleineren Scores in der Liste nicht auch überschrieben werden hn = hn + 1;Bewirkt das die Liste um eins weiter geht da ja ein neuer Wert eingefügt wurde Else;wenn der Score doch nicht größer war oder er schon einmal in die Datei geschrieben worden war (siehe ev) WriteInt hstream, high(stt-hn)*55; dann gehts ganz normal weiter in der Liste EndIf Next CloseFile(hstream);schliessen des streams End Function |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group