Speichern von Highjscore

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

nebelhorn

Betreff: Speichern von Highjscore

BeitragDo, Mai 10, 2007 16:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich bin 12 Jahre alt und habe dieses Quiz alleine programmiert. Ich kriege es aber nicht hin, dass der Highsore in einer Textdatei ordentlich gespeichert wird und dann abrufbar ist.


Code: [AUSKLAPPEN]

Graphics 640,480
SetBuffer BackBuffer()
SeedRnd MilliSecs()
Dim bild(12)
Dim bildI(21)
AppTitle"QuizEuropa"
bild(0) = LoadImage("flagge II.bmp")
ResizeImage bild(0),640, 480
DrawImage bild(0), 0, 0
font = LoadFont("Times New Roman",17,1,0,0)
SetFont font
DrawImage bild(0), 0, 0
Text 100,200, "Loading..."
Flip
bildI(1) = LoadImage("Maus.bmp")
bildI(2) = LoadImage("Ende.bmp")
bildI(3) = LoadImage("EndeII.bmp")
bildI(4) = LoadImage("Start.bmp")
bildI(5) = LoadImage("StartI.bmp")
bildI(6) = LoadImage("Einstellungen.bmp")
bildI(7) = LoadImage("EinstellungenI.bmp")
bildI(8) = LoadImage("Balken.bmp")
bildI(9) = LoadImage("Stern.bmp")
bildI(10) = LoadImage("Leicht.bmp")
bildI(11) = LoadImage("LeichtI.bmp")
bildI(12) = LoadImage("Mittel.bmp")
bildI(13) = LoadImage("MittelI.bmp")
bildI(14) = LoadImage("Schwer.bmp")
bildI(15) = LoadImage("SchwerI.bmp")
bildI(16) = LoadImage("Zurueck.bmp")
bildI(17) = LoadImage("ZurueckI.bmp")
bildI(18) = LoadImage("Tipp.bmp")
bildI(19) = LoadImage("TippI.bmp")
bildI(20) = LoadImage("Zeit.bmp")
bildI(21) = LoadImage("ZeitI.bmp")
ton = LoadSound("jubel.wav")
tonI = LoadSound("Buh!.wav")
tonII = LoadSound("Great.wav")
tonIII = LoadSound("So ist das Leben.wav")
tonIV = LoadSound("Highscore.wav")
tonV = LoadSound("Tip.wav")
bild(1) = LoadImage("Europaflagge1.bmp")
bild(2) = LoadImage("Europaflagge2.bmp")
bild(3) = LoadImage("Europaflagge3.bmp")
bild(4) = LoadImage("Europaflagge4.bmp")
bild(5) = LoadImage("Europaflagge5.bmp")
bild(6) = LoadImage("Europaflagge6.bmp")
bild(7) = LoadImage("Europaflagge7.bmp")
bild(8) = LoadImage("Europaflagge8.bmp")
bild(9) = LoadImage("Europaflagge9.bmp")
bild(10) = LoadImage("Europaflagge10.bmp")
bild(11) = LoadImage("Europaflagge11.bmp")
bild(12) = LoadImage("Europaflagge12.bmp")
Musik = LoadSound("Musik.wav")
LoopSound Musik
PlaySound Musik

Dim Highscore$(10)

Datei = OpenFile("Highscore.txt")
If Datei = 0 Then RuntimeError "Highscore fehlt"
For i = 1 To 10
 Highscore$(i) = ReadString(Datei)
Next


;For i = 1 To 12
; ResizeImage bild(i),640, 480
;Next
Dim Laender(3)
Laender(1) = 14
Laender(2) = 9
Laender(3) = 11
Dim Loesung$(3,15,7)

Loesung(1,1,1) = "Deutschland"
Loesung(1,1,2) = "Berlin"
Loesung(1,1,3) = "Das weißt du nicht ? Denk doch an die Bären oder Knut?!"
Loesung(1,1,5) = "Ja"


Loesung(1,2,1) = "Grossbritannien" 
Loesung(1,2,2) = "London"
Loesung(1,2,3) = "Wo steht denn Big Ben ?"
Loesung(1,2,5) = "Ja"


Loesung(1,3,1) = "den Niederlanden"
Loesung(1,3,2) = "Amsterdam"
Loesung(1,3,3) = "der Damm der Amme"
Loesung(1,3,5) = "Ja"
Loesung(1,3,7) = "(Artikel: `den'!!!)"


Loesung(2,5,1) = "Dänemark"
Loesung(2,5,2) = "Kopenhagen"
Loesung(2,5,3) = "Nicht mit Kopeken bezahlen  "
Loesung(2,5,5) = "Ja"


Loesung(1,5,1) = "Österreich"
Loesung(1,5,2) = "Wien"
Loesung(1,5,3) = "Wein"
Loesung(1,5,5) = "Ja"


Loesung(1,6,1) = "Russland"
Loesung(1,6,2) = "Moskau"
Loesung(1,6,3) = "Liegt an der Moskwa."
Loesung(1,6,5) = "Nein"


Loesung(2,1,1) = "Belgien"
Loesung(2,1,2) = "Brüssel"
Loesung(2,1,3) = "Rüssel"
Loesung(2,1,5) = "Ja"


Loesung(1,7,1) = "Luxemburg"
Loesung(1,7,2) = "Luxemburg"
Loesung(1,7,3) = "Land = Hauptstadt"
Loesung(1,7,5) = "Ja"


Loesung(1,8,1) = "Spanien"
Loesung(1,8,2) = "Madrid"
Loesung(1,8,3) = "Marit"
Loesung(1,8,5) = "Ja"


Loesung(1,9,1) = "Polen"
Loesung(1,9,2) = "Warschau"
Loesung(1,9,3) = "Die Schau ist wahr"
Loesung(1,9,5) = "Ja"


Loesung(2,2,1) = "der Ukraine"
Loesung(2,2,2) = "Kiew"
Loesung(2,2,3) = "Kiwi"
Loesung(2,2,5) = "Nein"


Loesung(1,10,1) = "Finnland"
Loesung(1,10,2) = "Helsinki"
Loesung(1,10,3) = "Da ist es HELL im Sommer"
Loesung(1,10,5) = "Ja"


Loesung(1,11,1) = "Griechenland"
Loesung(1,11,2) = "Athen"
Loesung(1,11,3) = "benannt nach Palas Athene"
Loesung(1,11,5) = "Ja"


Loesung(1,12,1) = "Frankreich"
Loesung(1,12,2) = "Paris"
Loesung(1,12,3) = "Dort steht der Eiffelturm."
Loesung(1,12,5) = "Ja"


Loesung(1,13,1) = "Schweden"
Loesung(1,13,2) = "Stockholm"
Loesung(1,13,3) = "Stöcke gibt's auch in Schweden!"
Loesung(1,13,5) = "Ja"


Loesung(1,14,1) = "der Türkei"
Loesung(1,14,2) = "Ankara"
Loesung(1,14,3) = "Klingt wie Anker."
Loesung(2,14,5) = "Nein"


Loesung(2,3,1) = "Portugal"
Loesung(2,3,2) = "Lissabon"
Loesung(2,3,3) = "So ähnlich wie 'hören' auf englisch."
Loesung(2,9,5) = "Ja"


Loesung(1,4,1) = "Italien"
Loesung(1,4,2) = "Rom"
Loesung(1,4,3) = "Alle Wege führen nach ..."
Loesung(2,4,5) = "Ja"


Loesung(3,1,1) = "Rumänien"
Loesung(3,1,2) = "Bukarest"
Loesung(3,1,3) = "Da liegen viele Reste"
Loesung(3,1,5) = "Ja"


Loesung(3,2,1) = "Bulgarien"
Loesung(3,2,2) = "Sofia"
Loesung(3,2,3) = "Sofie"
Loesung(3,2,5) = "Nein"


Loesung(3,3,1) = "Ungarn"
Loesung(3,3,2) = "Budapest"
Loesung(3,3,3) = "Dort ist die Pest"
Loesung(3,3,5) = "Ja"


Loesung(3,4,1) = "Albania"
Loesung(3,4,2) = "Tirana"
Loesung(3,4,3) = "Dort gibt es viele Tiere"
Loesung(3,4,5) = "Nein"


Loesung(3,5,1) = "Serbien und Montenegro"
Loesung(3,5,2) = "Belgrad"
Loesung(3,5,3) = "Dort balgt man sich bei 10 Grad"
Loesung(3,5,5) = "Nein"


Loesung(3,6,1) = "Bosnien und Herzegowia"
Loesung(3,6,2) = "Sarajewo"
Loesung(3,6,3) = "Sara"
Loesung(3,6,5) = "nein"


Loesung(3,7,1) = "Kroatien"
Loesung(3,7,2) = "Zagreb"
Loesung(3,7,3) = "Za...-äh, dort ist es still wie im Grab"
Loesung(3,7,5) = "Nein"


Loesung(3,8,1) = "Slowenien"
Loesung(3,8,2) = "Laibach"
Loesung(3,8,3) = "Liegt am Bach"
Loesung(3,8,5) = "Ja"


Loesung(3,9,1) = "Slowakei"
Loesung(3,9,2) = "Pressburg"
Loesung(3,9,3) = "Eine gepresste Burg"
Loesung(3,9,5) = "Ja"


Loesung(2,4,1) = "Tschechische Republik"
Loesung(2,4,2) = "Prag"
Loesung(2,4,3) = "Dort prankt ein Schild"
Loesung(2,4,5) = "Ja"


Loesung(3,10,1) = "Estland"
Loesung(3,10,2) = "Reval"
Loesung(3,10,3) = "Man hat einen Rivalen"
Loesung(3,10,5) = "Ja"
Loesung(3,10,6) = "(Tallin wird nicht aktzeptiert)"

Loesung(2,6,1) = "Lettland"
Loesung(2,6,2) = "Riga"
Loesung(2,6,3) = "Liga"
Loesung(2,6,5) = "Ja"


Loesung(3,11,1) = "Litauen"
Loesung(3,11,2) = "Wilna"
Loesung(3,11,3) = "Ich will dass Du das weißt"
Loesung(3,11,5) = "Ja"


Loesung(2,7,1) = "Weissrussland"
Loesung(2,7,2) = "Minsk"
Loesung(2,7,3) = "Minze"
Loesung(2,9,5) = "nein"

Loesung(2,8,1) = "Zypern"
Loesung(2,8,2) = "Nikosia"
Loesung(2,8,3) = "Nikotin lässt Ihre Haut um Jahre altern ..."
Loesung(2,8,5) = "Ja"

Loesung(2,9,1) = "Malta"
Loesung(2,9,2) = "La Valetta"
Loesung(2,9,3) = "La valse war es nicht, aber so ähnlich."
Loesung(2,9,5) = "Ja"




SgI = 1
ZeitI=400


;------------------------------------------Menü--------------------------------------------



.Menue
FlushKeys
FlushMouse
Fokus = 0
Repeat
 Cls
 DrawImage bild(0), 0,0
 MX = MouseX()
 MY =MouseY()
 DrawImage bildI(1), MX, MY
 DrawImage BildI(4), 200,60
 DrawImage BildI(6), 200,200
 DrawImage BildI(2), 200,345
 If KeyHit(208) Then
  Select Fokus
    Case 0 Fokus = 2
    Case 1 Fokus = 2
    Case 2 Fokus = 3
    Case 3 Fokus = 1
  End Select
 EndIf
 If KeyHit(200) Then
  Select Fokus
    Case 0 Fokus = 1
    Case 1 Fokus = 3
    Case 2 Fokus = 1
    Case 3 Fokus = 2
  End Select
 EndIf

 If ImagesCollide(bildI(1),MX,MY,0,bildI(2),200,345,0) = 1 Or Fokus = 1 Then
    DrawImage bildI(3), 200,345,0
    If MouseHit(1) Or KeyHit(28) Then End
 EndIf
 If ImagesCollide(bildI(1),MX,MY,0,bildI(4),200,60,0) = 1 Or Fokus = 2 Then
    DrawImage bildI(5), 200,60,0
    If MouseHit(1) Or KeyHit(28) Then Goto Anfang
 EndIf
 If ImagesCollide(bildI(1),MX,MY,0,bildI(6),200,200,0) = 1 Or Fokus = 3 Then
    DrawImage bildI(7), 200,200,0
    If MouseHit(1) Or KeyHit(28) Then Exit
 EndIf
 DrawImage bildI(1), MX, MY
 Flip
Forever



;--------------------------------------------OMenü----------------------------------------------


Fokus = 0
Repeat
 If KeyHit(208) Then
  Select Fokus
    Case 0 Fokus = 2
    Case 1 Fokus = 2
    Case 2 Fokus = 3
    Case 3 Fokus = 1
  End Select
 EndIf
 If KeyHit(200) Then
  Select Fokus
    Case 0 Fokus = 1
    Case 1 Fokus = 3
    Case 2 Fokus = 1
    Case 3 Fokus = 2
  End Select
 EndIf

 Cls
 DrawImage bild(0),0,0
 DrawImage bildI(16), 50,300
 Text 100,50, "Zeit:"
 DrawImage bildI(8), 10,100
 If ZeitI <> 0 Then
  DrawImage bildI(9),ZeitI,90
 EndIf
 DrawImage bildI(20),200,25
 Text 100,200, "Schwierigkeitsgrad:"
 If SgI = 1 Then
   DrawImage bildI(11), 50,215
 Else
   DrawImage bildI(10), 50,215
 EndIf
 If SgI = 2 Then
   DrawImage bildI(13), 175,215
 Else
   DrawImage bildI(12), 175,215
 EndIf
 If SgI = 3 Then
   DrawImage bildI(15), 300,215
 Else
   DrawImage bildI(14), 300,215
 EndIf
 If ImagesCollide(bildI(1),MX,MY,0,bildI(16),50,300,0) = 1 Then
   DrawImage bildI(17), 50,300
 Else
   DrawImage bildI(16), 50,300
 EndIf
 If ImagesCollide(bildI(1),MX,MY,0,bildI(20),200,25,0) = 1 Then
   DrawImage bildI(21), 200,25
   If MouseHit(1) Then
     Select ZeitI
       Case 0 ZeitI = 400
       Default ZeitI = 0
     End Select
   EndIf
 Else
   DrawImage bildI(20), 200,25
 EndIf
 MX = MouseX()
 MY =MouseY()
 DrawImage bildI(1), MX, MY
 If ImagesCollide(bildI(1),MX,MY,0,bildI(9),ZeitI,90,0) = 1 And MouseDown(1) Then
  Repeat

    Cls
    DrawImage bild(0),0,0
    Text 100,50, "Zeit:"
    DrawImage bildI(8), 10,100
    DrawImage bildI(9), (10+ZeitI),90
    DrawImage bildI(20),200,25
    Text 100,200, "Schwierigkeitsgrad:"

    If SgI = 1 Then
     DrawImage bildI(11), 50,215
    Else
     DrawImage bildI(10), 50,215
    EndIf
    If SgI = 2 Then
     DrawImage bildI(13), 175,215
    Else
     DrawImage bildI(12), 175,215
    EndIf
    If SgI = 3 Then
     DrawImage bildI(15), 300,215
    Else
     DrawImage bildI(14), 300,215
    EndIf
    DrawImage bildI(16), 50,300
    MX = MouseX()
    MY =MouseY()
    DrawImage bildI(1), MX, MY
    If MX < 520 Then ZeitI = MX - 20
    Flip
   Until Not MouseDown(1)
 EndIf
 If (ImagesCollide(bildI(1),MX,MY,0,bildI(10),50,200,0 = 1) ) And (MouseDown(1) Or KeyDown(28)) Or (Fokus = 2 And SgI = 3 And KeyHit(205)) Or (Fokus = 2 And SgI = 2 And KeyHit(203)) Then SgI = 1
 If (ImagesCollide(bildI(1),MX,MY,0,bildI(12),175,200,0 = 1)) And (MouseDown(1) Or KeyDown(28)) Or (Fokus = 2 And SgI = 1 And KeyHit(205)) Or (Fokus = 2 And SgI = 3 And KeyHit(203)) Then SgI = 2
 If (ImagesCollide(bildI(1),MX,MY,0,bildI(14),300,200,0 = 1)) And (MouseDown(1) Or KeyDown(28)) Or (Fokus = 2 And SgI = 2 And KeyHit(205)) Or (Fokus = 2 And SgI = 1 And KeyHit(203)) Then SgI = 3
 If (ImagesCollide(bildI(1),MX,MY,0,bildI(17),50,300,0 = 1) Or Fokus = 3) And (MouseDown(1) Or KeyDown(28)) Then Goto Menue
 Flip
Forever
Goto Menue







.Anfang
;i = 1


Level = 1


Falsch = 0
tip = 0




Punkte = 0
.Start
For ie = 1 To 3
  For i=1 To 15
   Loesung(ie,i,4) = "j"
  Next
Next



;ii = i



i=0








;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
;-------------------------------------Hauptschleife---------------------------------------------------
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>












For ii = 1 To 12
i = i + 1
Alles()

;Einstellung der Nummern

  Sg = Rand(1,SgI)
  a = Rand(Laender(Sg))
  For ie = 1 To Laender(Sg)
    If Loesung(Sg,a,4) <> "j" Then
      a=a+1
    If a > Laender(Sg) Then a = 1
  EndIf
  Next
  If Loesung(Sg,a,4) <> "j" Then a = Rand(Laender(Sg))

If Level = 1 Then Frage$ = "Die Hauptstadt von " + Loesung(Sg,a,1) + "  heißt:"+Loesung(Sg,a,6):RAntwort$ = Loesung(Sg,a,2)
If Level = 2 Then Frage$ = "Das Land dessen Hauptstadt " + Loesung(Sg,a,2) + " heißt, heißt:"+Loesung(Sg,a,7):RAntwort$ = Loesung(Sg,a,1)
If Level = 3 Then Frage$ = "Gehört das Land " + Loesung(Sg,a,1) + " zur EU ?":RAntwort$ = Loesung(Sg,a,5)


Loesung(Sg,a,4) = "n"
.Marke

Zeit = ZeitI


Flip
FlushKeys



;Eingabe
antwort$ = ""
Repeat
   Cls
   If ZeitI <> 0 Then
     a255# = ZeitI/255: Zeita255 = Zeit / a255
   EndIf
   DrawImage bild(0), 0,0
   Alles()
   DrawImage bildI(16), 400, 25
   Select Level
   Case 1   DrawImage bildI(18), 400, 175
   End Select
   MX = MouseX()
   MY =MouseY()
   DrawImage bildI(1), MX, MY

   Select Level
   Case 1 If ImagesCollide(bildI(1),MX,MY,0,bildI(18),400,175,0) = 1 Then
      DrawImage bildI(19), 400,175,0
      If MouseDown(1) Then Gosub Tipp
    EndIf
   End Select
   If ImagesCollide(bildI(1),MX,MY,0,bildI(16),400,25,0) = 1 Then
    DrawImage bildI(17), 400,25,0
    If MouseDown(1) Then Goto Menue
   EndIf


   If ZeitI <> 0 Then
     haelfte = 127
     If Zeita255 > haelfte Then
       Color (510 / (Zeita255 - haelfte))/2, (Zeita255 - haelfte) * 2, 0
     ElseIf Zeita255<haelfte Then
       Color 255,255/Zeita255+2,0
     EndIf
     Rect 100,300, (100+(Zeit/2)),325
   EndIf   
   Color 255,255,0
   Text 100,100, i + ". Frage:
   Text 100,150, Frage
   T = GetKey()
   DrawImage bildI(1), MX, MY


   If T > 31 Then antwort$ = antwort$ + Chr$(T)
   If (T = 8) And Len(antwort$) > 0 Then antwort = Left(antwort, Len(antwort) - 1)
   Text 100,200, antwort + "_"
   Zeit = Zeit - 1
   If Zeit = 0 Then
    Goto Spaet
   EndIf
   Delay 50
   Flip
Until KeyHit(28)









FlushKeys
Zeit = 250

;Wertung


  For f = 0 To 150
   Cls
   Alles()
   DrawImage bild(0), 0, 0 
   Text 100,250, "AHA"
   Flip
   Delay 10
  Next



If Lower$(antwort) = Lower$(RAntwort) Then
 Alles()
 DrawImage bild(ii), 0,0
 PlaySound ton

 Text 200,250, "Das ist goldrichtig!"


 Punkte = Punkte + (SgI*Level)
 Flip
 Delay 3500
Else

 Flip
 PlaySound tonI
 For f = 0 To 150
   Cls
   Alles()
   DrawImage bild(0), 0, 0
   If Zeit > 0 Then
    Text 100,250, "Das war aber falsch !"
   Else
    Text 100,250, "Zu langsam, leider ..."
   EndIf
   .Spaet
   Text 100,300, "Richtig gewesen wäre: " + RAntwort + "."
   Flip
   Delay 10
   Next
 Goto Ende
 
EndIf
Flip
Next
Select Level
 Case 1 Level = 2
 Case 2 Level = 3
 Case 3 Level = 1
End Select
Goto Start
;Ende
.Ende
Cls
DrawImage bild(0), 0, 0
  For f = 0 To 150
   Cls
   Alles()
   DrawImage bild(0), 0, 0
   Text 100,100, "Du hast " + Punkte +  " Punkte erreicht!"
   Text 100,130, "Weiter mit beliebiger Taste."
   Flip
   Delay 10
  Next

Flip

WaitKey
Cls
DrawImage bild(0), 0, 0

If Punkte < 12 Then
  Text 100,200, "Das war aber nix!"
  If antwort <> "End" Then
   Text 100,200, "Also: Nochmal!" 
   Delay 500
   Goto menue
  EndIf
  Falsch = Falsch + 1
Else   
   If Punkte > Int(Right(Highscore(10),Instr(Highscore(10),".")))    Then
     PlaySound tonIV
     Text 150,200, "Toll !"
     Text 150,250, "Highscore!"
     Flip
     Delay 1000
     Name$ = Input(100,100,"Name:",100,150)
     If Punkte > Int(Right(Highscore$(9),Instr(Highscore(9),"."))) Then
       If Punkte > Int(Right(Highscore$(8),Instr(Highscore(8),"."))) Then
         If Punkte > Int(Right(Highscore$(7),Instr(Highscore(7),"."))) Then
           If Punkte > Int(Right(Highscore$(6),Instr(Highscore(6),"."))) Then
             If Punkte > Int(Right(Highscore$(5),Instr(Highscore(5),"."))) Then
               If Punkte > Int(Right(Highscore$(4),Instr(Highscore(4),"."))) Then
                 If Punkte > Int(Right(Highscore$(3),Instr(Highscore(3),"."))) Then
                   If Punkte > Int(Right(Highscore$(2),Instr(Highscore(2),"."))) Then
                     If Punkte > Int(Right(Highscore$(1),Instr(Highscore(1),"."))) Then
                       For i = 9 To 1
                        Highscore(i+1)=Highscore(i)
                       Next
                       Highscore(1) = Name + "." + Str$(Punkte)
                     Else
                      For i=9 To 2
                       Highscore(i+1)=Highscore(i)
                      Next
                       Highscore(2) = Name+"."+Str$(Punkte)

                    EndIf
                  Else
                    For i=9 To 3
                     Highscore(i+1)=Highscore(i)
                    Next
                    Highscore(3) = Name+"."+Str$(Punkte)

                  EndIf
                 Else
                   For i=9 To 4
                    Highscore(i+1)=Highscore(i)
                   Next
                   Highscore(4) = Name+"."+Str$(Punkte)

                 EndIf
               Else
               For i=9 To 5
                Highscore(i+1)=Highscore(i)
               Next
                Highscore(5) = Name+"."+Str$(Punkte)

               EndIf
             Else
               For i=9 To 6
                Highscore(i+1)=Highscore(i)
               Next
               Highscore(6) = Name+"."+Str$(Punkte)

             EndIf
           Else
             For i=9 To 7
              Highscore(i+1)=Highscore(i)
             Next
             Highscore(7) = Name+"."+Str$(Punkte)

           EndIf
         Else
           For i=9 To 8
            Highscore(i+1)=Highscore(i)
           Next
           Highscore(8) = Name+"."+Str$(Punkte)

         EndIf
       Else
         For i=9 To 9
          Highscore(i+1)=Highscore(i)
         Next
         Highscore(9) = Name+"."+Str$(Punkte)

      EndIf
     Else Highscore(10) = Name + "." + Str$(Punkte)

     EndIf     
     Alles()
     For i = 1 To 10
      Text 200,(i*25), Highscore(i)
     Next
     Flip
     WaitKey
     For i=1 To 10
       WriteString Datei,Highscore(i)
     Next

       
   Else
     PlaySound tonII
     Text 150,200, "Gut !!"
   EndIf
   Flip
EndIf
FlushKeys
Flip
WaitKey
Goto Menue
.Tipp
If tip = 0 Then
 PlaySound tonV
 Flip
 For f = 0 To 350
  Cls
  Alles()
  DrawImage bild(0), 0, 0
  Text 100,250, Loesung(Sg,a,3) 

  Flip
  Delay 10
 Next
  tip = 1
Else
  PlaySound tonIII
  For f = 0 To 350
   Cls
   DrawImage bild(0), 0, 0
   Alles()
   Text 100,250, "Du hattest doch schon einen Tipp !" 
  Delay 10
  Next
EndIf
Return

Function Alles()
Cls
DrawImage bild(0), 0,0
End Function

Function Input$(ax=0,ay=0,az$="", bx,by,b$="")
  Cls
 ; A$ = b
  Repeat
    Alles()
    Text ax,ay,az
    A = GetKey()
    If A > 31 Then Name$ = Name$ + Chr$(A)
    If (A=8) And Len(Name$)>0 Then Name$ = Left$(Name$,Len(Name$)-1)
    Text 150,100,Name$ + "_"
    Flip
  Until(Len(Name$)>0) And KeyHit(28)
 Return Name$
End Function


Was habe ich falsch gemacht?[/code]

Smily

BeitragDo, Mai 10, 2007 17:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Das erste, was mir bei der Laden-schleife auffällt, ist, dass du die Punkte gar nicht mit einliest.

Übrigens noch ein kleiner tip:
Fragen&Antworten solltest du in einem Type verwalten und extern laden.

Gruß, Smily0412
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets

"Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!"
stummi.org
 

nebelhorn

BeitragSa, Mai 12, 2007 21:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Immerhin ist es mir gelungen einen Fehler zu finden und einen Fehler einzugrenzen.Deshalb nur die entscheidende Stelle meines Codes:

Ich speichere in einer .txt-Datei Highscore eine Bestenliste ab mit 10 Einträgen in der Form

Looser.100
Verlierer.99
Michael.98
usw.

Das Programm sortiert die Einträge aber falsch und macht leider keinen Highscore.



Code: [AUSKLAPPEN]
Graphics 640,480
SetBuffer BackBuffer()

Dim Highscore$(10)

Datei = ReadFile("Highscore.txt")
If Datei = 0 Then RuntimeError "Highscore fehlt"
For i = 1 To 10
 Highscore$(i) = ReadString(Datei)
Next
CloseFile datei

Punkte =12 ; Ergebnis simulieren

If Punkte > Int(Right(Highscore(10),Instr(Highscore(10),".")))    Then
   
     Text 150,200, "Toll !"
     Text 150,250, "Highscore!"
     Flip
     Delay 1000
     Name$ = Input(100,100,"Name:",100,150)
     If Punkte > Int(Right(Highscore$(9),Instr(Highscore(9),"."))) Then
       If Punkte > Int(Right(Highscore$(8),Instr(Highscore(8),"."))) Then
         If Punkte > Int(Right(Highscore$(7),Instr(Highscore(7),"."))) Then
           If Punkte > Int(Right(Highscore$(6),Instr(Highscore(6),"."))) Then
             If Punkte > Int(Right(Highscore$(5),Instr(Highscore(5),"."))) Then
               If Punkte > Int(Right(Highscore$(4),Instr(Highscore(4),"."))) Then
                 If Punkte > Int(Right(Highscore$(3),Instr(Highscore(3),"."))) Then
                   If Punkte > Int(Right(Highscore$(2),Instr(Highscore(2),"."))) Then
                     If Punkte > Int(Right(Highscore$(1),Instr(Highscore(1),"."))) Then
                       For i = 1 To 9
                        Highscore(i+1)=Highscore(i)
                       Next
                       Highscore(1) = Name + "." + Str$(Punkte)
                     Else
                      For i=2 To 9
                       Highscore(i+1)=Highscore(i)
                      Next
                       Highscore(2) = Name+"."+Str$(Punkte)

                    EndIf
                  Else
                    For i=3 To 9
                     Highscore(i+1)=Highscore(i)
                    Next
                    Highscore(3) = Name+"."+Str$(Punkte)

                  EndIf
                 Else
                   For i=  4 To 9
                    Highscore(i+1)=Highscore(i)
                   Next
                   Highscore(4) = Name+"."+Str$(Punkte)

                 EndIf
               Else
               For i=5 To 9
                Highscore(i+1)=Highscore(i)
               Next
                Highscore(5) = Name+"."+Str$(Punkte)

               EndIf
             Else
               For i= 6 To 9
                Highscore(i+1)=Highscore(i)
               Next
               Highscore(6) = Name+"."+Str$(Punkte)

             EndIf
           Else
             For i= 7 To 9
              Highscore(i+1)=Highscore(i)
             Next
             Highscore(7) = Name+"."+Str$(Punkte)

           EndIf
         Else
           For i= 8 To 9
            Highscore(i+1)=Highscore(i)
           Next
           Highscore(8) = Name+"."+Str$(Punkte)

         EndIf
       Else
         For i=9 To 9
          Highscore(i+1)=Highscore(i)
         Next
         Highscore(9) = Name+"."+Str$(Punkte)

      EndIf
     Else Highscore(10) = Name + "." + Str$(Punkte)

     EndIf     
     Alles()
     For i = 1 To 10
      Text 200,(i*25), Highscore(i)
     Next
     Flip
     WaitKey
     datei = WriteFile ("Highscore.txt")
     For i=1 To 10
       WriteString datei,Highscore(i)
     Next
     CloseFile datei

       
   Else
     PlaySound tonII
     Text 150,200, "Gut !!"
   EndIf
   Flip

FlushKeys
Flip

Function Alles()
Cls

End Function

Function Input$(ax=0,ay=0,az$="", bx,by,b$="")
  Cls
 ; A$ = b
  Repeat
    Alles()
    Text ax,ay,az
    A = GetKey()
    If A > 31 Then Name$ = Name$ + Chr$(A)
    If (A=8) And Len(Name$)>0 Then Name$ = Left$(Name$,Len(Name$)-1)
    Text 150,100,Name$ + "_"
    Flip
  Until(Len(Name$)>0) And KeyHit(28)
 Return Name$
End Function

Smily

BeitragSa, Mai 12, 2007 22:06
Antworten mit Zitat
Benutzer-Profile anzeigen
1.)Um den Text mit readstring auslesen zu können, muss der Text in einer Bestimmten form in der Datei gespeichert sein. Ein untereinander Auflisten geht hier nicht.
2.)Ausserdem solltest du dir das mit der verschachtelten if-Abfrage nochmal überlegen, sowas kann man mit ein paar kniffen auch günstiger lesen.
3.) Right(Highscore$(9),Instr(Highscore(9),".")
right zählt die Zeichen von rechts ab. Instr gibt die Position aber von links wieder.
4.)mache statt ein Dim lieber zwei Arrays: Highscorename$[9] und Highscorepoints[9] Das macht die Abfrage auch einfacher.
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets

"Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!"
stummi.org
 

nebelhorn

BeitragMo, Mai 14, 2007 13:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Es klappt jetzt! Laughing Vielen Dank für deine Hilfe, Smily0412!

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group