Name und Punkte an Bestenliste senden [gelöst]
Übersicht

![]() |
maboxBetreff: Name und Punkte an Bestenliste senden [gelöst] |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi ich verwende hier einen Code für eine Bestenliste (nicht von mir).
Der Code funktioniert super und ich verstehe ihn auch fast komplett aber ich bekomms nicht hin den Namen und die Punkte die mein Spiel Liefert wenn es zuende ist in die Highscoe zu integrieren. Hier ist der Code: [AUSKLAPPEN] ; Highscorelisten Creator
; Erzeugt und sortiert Highscorelisten ; Copyright (C) Jan 2004, Daniel Nobis Graphics 640,480,16,2 AppTitle "Highscore" SeedRnd MilliSecs() Dim Score(10) Dim Name$(10) lesen sortieren speichern ausgeben WaitKey() Function speichern() Datei = WriteFile("score.sav") For i = 1 To 10 WriteLine Datei, Name$(i) WriteLine Datei, Score(i) Next End Function CloseFile Datei ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Function lesen() Datei = ReadFile("score.sav") For i = 1 To 10 Name$(i) = ReadLine(Datei) Score(i) = ReadLine(Datei) Next CloseFile Datei End Function ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Function sortieren() For I = 1 To 10 For J = I To 10 If Score(I) < Score(J) Then ; "<" = größter zuerst / ">" = kleinster zuerst X = Score(I) : Score(I) = Score(J) : Score(J) = X xx$ = Name$(i) : Name$(i) = Name$(j): Name$(j) = xx$ EndIf Next Next End Function ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Function ausgeben() Print "Beschdenlischde" For i = 1 To 10 Print i + ". ist " + Name$(i) + " mit " + Score(i) + " Punkten" Next End Function Ich denke man müsste den Name und die Punkte irgendwie zwischen die Fuktion "lesen" und die Funktion "sortieren" setzten. Bis jetzt sind meine Versuche gescheitert. Kann mir jemand helfen? |
||
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:58, insgesamt 3-mal bearbeitet
HyDr0x |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
sry Hab grad net den Nerv mir das anzuguggen aber das geht auch entschieden einfacher.
Ich poste dir mal den Code den ich für die Liste in meinen (leider noch net veröffentlichten) Spaceshooter verwende. Code: [AUSKLAPPEN] Dim high(10) readhigh() highscorehinz() readhigh() Repeat Cls abspann() flip forever Function highscorehinz() hstream = OpenFile("Highscore.dat") For stt = 1 To 10 If high(stt-hn) < score And ev = 0 Then WriteInt hstream, score*55 ev = 1 hn = hn + 1 Else WriteInt hstream, high(stt-hn)*55 EndIf Next CloseFile(hstream) End Function Function readhigh() hstream2 = ReadFile("Highscore.dat") For stt = 1 To 10 high(stt) = ReadInt(hstream2)/55 Next CloseFile(hstream2) End Function Function abspann() Text 100,tx, "GESAMTLISTE:" Text 100,tx, "1. "+high(1) Text 100,tx, "2. "+high(2) Text 100,tx, "3. "+high(3) Text 100,tx, "4. "+high(4) Text 100,tx, "5. "+high(5) Text 100,tx, "6. "+high(6) Text 100,tx, "7. "+high(7) Text 100,tx, "8. "+high(8) Text 100,tx, "9. "+high(9) Text 100,tx, "10. "+high(10) tx = tx - 1 end function So ähnlich sieht das dann aus, meiner Meinung nach einfacher weil ich die sortieren Funktion irgendwie sinnlos finde ... |
||
![]() |
StepTiger |
![]() Antworten mit Zitat ![]() |
---|---|---|
Und DAS ist jetzt einfacher? oO | ||
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer: AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t Gewinner: BP Code Compo #2 Π=3.141592653589793238...<--- und das aus dem kopf ![]() Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser. |
HyDr0x |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Nunja du sparst halt das sortieren, das anfügen von Namen sollte ja kein Problem sein und Diese relativ lange ausgabe der Score im Abspann hängt damit zusammen wie ich da in meinem Spiel verwendet habe das kann man ja noch verändern/kürzen . | ||
![]() |
StepTiger |
![]() Antworten mit Zitat ![]() |
---|---|---|
@mabox:
Das, was du da hast, ist an sich schon ein vollendeter Code, mehr nicht. Was verlangst du noch? ^^ "aber ich bekomms nicht hin den Namen und die Punkte die mein Spiel Liefert wenn es zuende ist in die Highscoe zu integrieren." Ehm... Speichern? Ich muss aber sagen, dass der Code an sich nicht sehr sinnvoll ist. Er sortiert die jeweiligen zehn. Aber bei einer neuen score müsste das programm extra nochmals sortieren und die datei umschreiben. Warum nicht einfach direkt über Objekte mit Insert before machen? |
||
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer: AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t Gewinner: BP Code Compo #2 Π=3.141592653589793238...<--- und das aus dem kopf ![]() Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser. |
HyDr0x |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Mit Types arbeiten ist nicht notwendig siehe meinen Vorschlag. Der kommt mit einem Dim feld aus, dann noch eins für den Namen fertig. | ||
![]() |
ToeBBetreff: Highscore Functionen |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich hab vor langer Zeit auch mal eine Highscore gebastelt :
Drei functionen : Zitat: 1.: SortHighscore(Score,nam$)
2.: SaveHighscore(Pfad$) und 3.: ReadHighscore(Pfad$). Code: [AUSKLAPPEN] 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 Bei Sorthighscore() muss man die Score angeben und den Namen, der an die Stelle geschrieben werden soll. Bei SaveHighscore() muss man den Pfad angegeben, wo das hingeschrieben werden soll, und bei ReadHighscore() muss man auch den Pfad angeben, woraus die Highscore geladen werden soll.... Tipp : die Highscore wird zwar als "Interger" (WriteInt) angespeichert, ich rechne aber noch damit : erst mal 55 und dann 33 wieder ab. also ist eine änderung proktisch ausgeschlossen, wenn das doch jemand wagen sollte, es zu ändern, kann man mit einer Überprüfung ganz einfach gucken, ob das ergebniss "galtt" ist also ohne nachkomma stellen. Also so wie dieser (natürlich deht das nur wenn hs(10) auf Float dimmesioniert wurde)Code: [AUSKLAPPEN] For i = 1 to 10
If Floor(hs(i)) <> hs(i) then Fehler("Highscore wurde Geändert !!") Next So in etwa. Er prüft erst ob das abgerundete ungleich ist mit dem gleichen wert und dann den Fehler aufzurufen. Um das zu verseutlichen : Zitat: hs(1) = 1:hs(2) = 1.2
bei dem beispiel oben würde mit den Werten so aussehen : Code: [AUSKLAPPEN] If 1 <> 1 then Felere("balbla") Da aber nichts unterschiedlich ist, wird kein Fehler ausgegeben. Der gleiche mit hs(2) : Code: [AUSKLAPPEN] If 1 <> 1.2 then Fehler("Blabla") Jetzt ist aber 1 ungleich mit 1.2 deshalb Fehler ![]() Ich hoffe ich konnte dir helfen... 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 ![]() |
---|---|---|
Kann mir nicht einfach jemand sagen wie ich die Punkte und den Namen in die Bestenliste die ich gepostet hab reinbekommt???
Auch wenn ich zweimal sortieren muss... ~Edit: @crack93 wenn ich deine Highscore starte kommt da immer "Array index out of bounds" und diese Zeile Code: [AUSKLAPPEN] name$(i) = ReadString(dat) ist markiert.
|
||
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
dann hasst du entweder das Array falsch "gedimmt" oder die Schleifen lauf zahl vergrößßert .... ![]() 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 ![]() |
---|---|---|
@Crack93 irgendwie funktioniert das mit dem Testen ob die Datei geändert wurde bei mir nicht ganz. Hier ist mein aktueller Code: [AUSKLAPPEN] Dim hs(10)
Dim name$(10) ReadHighscore("score.sav") SortHighscore(100,"genie") SaveHighScore("score.sav") 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 For i = 1 To 10 If Floor(hs(i)) <> hs(i) Then Print ("Highscore wurde Geändert !!") 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 Sehr seltsam ist auch, dass wenn ich in der Datei etwas verändere bleibt mein PC hängen und die Datei ist nachher so um die 500MB groß Den anderen Fehler hab ich gefunden. In der Datei die ich auslesen wollte stand schon etwas drin das nicht mit writeint und writestring gespeichert wurde. Deshalb konnte es nicht gelesen werden. Aber meine eigentliche Frage wurde immernoch nicht beantwortet. |
||
![]() |
Tankbuster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: Sehr seltsam ist auch, dass wenn ich in der Datei etwas verändere bleibt mein PC hängen und die Datei ist nachher so um die 500MB groß
Dann läuft wohl die ganze Zeit ne schleife durch, die die ganze Zeit was in die Datei schreibt. Das ist kein wunder, dass dein PC abstürzt ![]() |
||
Twitter
Download Jewel Snake! Windows|Android |
![]() |
mabox |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das ist mir schon klar aber warum speichert die Schleife das so oft? | ||
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 |
![]() |
Tankbuster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich weiß nicht. Ich hab ja nicht deinen Code ![]() |
||
Twitter
Download Jewel Snake! Windows|Android |
![]() |
mabox |
![]() Antworten mit Zitat ![]() |
---|---|---|
mabox hat Folgendes geschrieben: @Crack93 irgendwie funktioniert das mit dem Testen ob die Datei geändert wurde bei mir nicht ganz. Hier ist mein aktueller Code: [AUSKLAPPEN]
Dim hs(10)
Dim name$(10) ReadHighscore("score.sav") SortHighscore(100,"genie") SaveHighScore("score.sav") 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 For i = 1 To 10 If Floor(hs(i)) <> hs(i) Then Print ("Highscore wurde Geändert !!") 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 Sehr seltsam ist auch, dass wenn ich in der Datei etwas verändere bleibt mein PC hängen und die Datei ist nachher so um die 500MB groß Den anderen Fehler hab ich gefunden. In der Datei die ich auslesen wollte stand schon etwas drin das nicht mit writeint und writestring gespeichert wurde. Deshalb konnte es nicht gelesen werden. Aber meine eigentliche Frage wurde immernoch nicht beantwortet. da steht er doch... |
||
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 |
![]() |
Tankbuster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Der Fehler steckt in "ReadHighscore(Pfad$)"
In der Zeile "name$(i) = ReadString(dat)" hängt der PC sich bei mir auf, wenn ich etwas in der Highscore verändere ![]() Aber 500MB groß kann die Datei nur werden, wenn DU was reinschreibst. Also hast du irgendwas falsch gemacht. Oder du meinst die Auslagerungs-Datei ![]() ![]() Frag mich nicht, woran das liegt. Da bin ich überfragt. Vielleicht versucht der PC einen String auszulesen, aber findet keinen. |
||
Twitter
Download Jewel Snake! Windows|Android |
![]() |
mabox |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ok das lass ich jetzt mal so sein wie es ist (bekomms nicht hin, man muss ja in der Bestenliste nichts verändern. Wers tut ist selbst schuld wenns danach nicht mehr geht.)
NEUE FRAGE: Ich hab die Bestenliste jetzt so geändert, dass der Name über der Zahl steht (vorher war es andersrum). Aber mit der Sortierfunktion klappt das nicht. Siehe Bilder. Da ich nicht verstehe was in dieser Funktion geschieht (Die Befehle kenne ich aber die Logik ist mir zu kompliziert) bitte ich euch nochmal um Hilfe! hier noch der Coder der Sortierfunktion Code: [AUSKLAPPEN] Function Highscore_sortieren(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 |
||
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 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group