Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Wieso speichert es IMMER?

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Grassstunger



Anmeldungsdatum: 27.12.2009
Beiträge: 11

BeitragVerfasst am: 28.12.2009, 16:06    Titel: Wieso speichert es IMMER? Antworten mit Zitat

http://ul.to/ybfe63
Also ich hab da jetzt das Problem, wenn man mehr als 0 Punkte erzielt, wird es schon in der Txt datei hinein geschrieben und wenn man dann das spiel erneut startet kommt Name(z.B. pronkler), Punkte ( z.B. 500) und dann eine 0, wieso????
Code:
randomize timer
Screenres 1024, 768 ,32 , 1,&H01
setmouse 0,0,0

Dim enemy As Any Ptr = ImageCreate( 80, 80 )
Dim jude As Any Ptr = ImageCreate( 80, 80 )
BLoad "Grafix\Player.bmp", jude
Bload "Grafix\enemy.bmp", enemy
Dim Laser As Any Ptr = ImageCreate( 80, 80 )
BLoad "Grafix\Laser.bmp", Laser
Dim Leben As Any Ptr = ImageCreate( 13, 13 )
BLoad "Grafix\Leben.bmp", Leben
Dim Punkte as Single
Punkte = 0
dim b as single
b =50
dim Fertig as single
Fertig = 1
dim c as single
c = 50
dim Speed as single
Speed = 80
Dim name_player as string

DIM AS STRING Rang = "Rla2.txt"
DIM AS INTEGER fg = FREEFILE
Dim as single punkt=freefile
DIM AS string Namen = "Rla2.txt"
OPEN rang FOR INPUT AS #fg
INPUT #fg ,Namen,Punkt

color rgb (0,255,0)


do
Locate 1,1
input "What is your name? ", name_player
loop until name_player <>""
locate 50,30
PRINT "Rekord: ",Namen,Punkt
CLOSE #fg
sLEEP
'Mp3
#INCLUDE "fmod.bi"
' 48kHz sample rate, 8 channels.
FSOUND_Init(48000, 8, 0)
DIM mp3Sound(1 to 100) AS INTEGER PTR
Locate 2,1
Print "Loading Soundtracks..."
DIM Background_Music AS STRING="Sounz\Background.mp3"
DIM Crash_Sound AS STRING="Sounz\Crash1.mp3"
DIM Laser_Sound AS STRING="Sounz\Laser1.mp3"
DIM Laser_Crash AS STRING="Sounz\Crash2.mp3"

mp3Sound(1) = FSOUND_Sample_Load(FSOUND_FREE, Background_Music, 0, 0, 0)
mp3Sound(2) = FSOUND_Sample_Load(FSOUND_FREE,Crash_Sound, 0, 0, 0)
mp3Sound(3) = FSOUND_Sample_Load(FSOUND_FREE,Laser_Sound, 0, 0, 0)
mp3Sound(4) = FSOUND_Sample_Load(FSOUND_FREE,Laser_Crash, 0, 0, 0)




'Musik Starten und endlos wiederholen
FSOUND_Sample_SetMode(mp3Sound(1), FSOUND_LOOP_NORMAL)
FSOUND_PlaySound(FSOUND_FREE, mp3Sound(1))

dim d as single
dim q as integer
for q = -20 to 20
next

dim zeit as double


Dim Jesus(1 to 200,1 to 4,1 to 2) as integer
dim zahl as integer
for zahl = 1 to 200
    Jesus(zahl,1,1) = rnd*1024
    Jesus(zahl,1,2) = rnd*768
   
    Jesus(zahl,2,1) = rnd*1024
    Jesus(zahl,2,2) = rnd*768
   
    Jesus(zahl,3,1) = rnd*1024
    Jesus(zahl,3,2) = rnd*768
   
    Jesus(zahl,4,1) = rnd*1024
    Jesus(zahl,4,2) = rnd*768
next
Dim Moses(1 to 5,1 to 2) as integer
dim zahly as integer
for zahly = 1 to 5
    Moses(zahly,1) = rnd*1024+900
    Moses(zahly,2) = rnd*688   
next
Dim Live as single
Live = 3
dim LZ as integer
for LZ = 1 to Live
next

Dim Laser_Shot(1 to 15,1 to 2) as integer

dim shoot_counter as integer

do 
    screenlock
    cls
    zeit = timer
   
    'Lebens anzeige
   
    'Steuerung des eigenen Raumschiffes
    if multikey(&h48) then c=c-10 end if
    if multikey(&h50) then c=c+10 end if
    if multikey(&h10) then
        end
    end if
    if c <0 then
        c=0
    end if
    if c > 688 then
        c=688
    end if
    'Laser
    If multikey(&h1C) and shoot_counter = 0 then
        'Leere Variabel suchen
        For Zahl = 1 to 15
            if laser_shot(zahl,1) = 0 then
                exit for
            end if
        next
        FSOUND_Sample_SetMode(mp3Sound(3), FSOUND_NORMAL)
        FSOUND_PlaySound(FSOUND_FREE, mp3Sound(3))
        laser_shot(zahl,1) = 80
        laser_shot(zahl,2) = c
        shoot_counter = 10
    end if
   

   
   
   
   
    'Sterne
    for zahl = 1 to 200
        Jesus(zahl,1,1) = Jesus(zahl,1,1) - 1
        Jesus(zahl,2,1) = Jesus(zahl,2,1) - 2
        Jesus(zahl,3,1) = Jesus(zahl,3,1) - 3
        Jesus(zahl,4,1) = Jesus(zahl,4,1) - 10
       
        pset (Jesus(zahl,1,1),Jesus(zahl,1,2)),rgb(255,255,255)
        pset (Jesus(zahl,2,1),Jesus(zahl,2,2)),rgb(255,255,255)
        pset (Jesus(zahl,3,1),Jesus(zahl,3,2)),rgb(255,255,255)
        pset (Jesus(zahl,4,1),Jesus(zahl,4,2)),rgb(255,255,255)
       
        if Jesus(zahl,1,1)<0 then Jesus(zahl,1,1)=1024 end if
        if Jesus(zahl,2,1)<0 then Jesus(zahl,2,1)=1024 end if
        if Jesus(zahl,3,1)<0 then Jesus(zahl,3,1)=1024 end if
        if Jesus(zahl,4,1)<0 then Jesus(zahl,4,1)=1024 end if
    next
    'Feinde
    for zahly = 1 to 5
        Moses(zahly,1) = Moses(zahly,1) - 6
        for zahl = 1 to 15
            for q = -40 to 40
                'Elimination durch Laser
                if Moses(zahly,1)=laser_shot(zahl,1)+q+20 and Moses(zahly,2)>laser_shot(zahl,2)+q and Moses(zahly,2)<laser_shot(zahl,2)-q and moses(zahly,1)<1000 and moses(zahly,1)>130 then
                    moses(zahly,1)=1024+rnd*55
                    moses(zahly,2)=rnd*688
                    FSOUND_Sample_SetMode(mp3Sound(4), FSOUND_NORMAL)
                    FSOUND_PlaySound(FSOUND_FREE, mp3Sound(4))
                    Punkte=Punkte+100
                    Speed=Speed+1
                end if
           
           
               
               
               
               
                'Ins Raumschiff reinfahren
                if Moses(zahly,1)<b+80 and Moses(zahly,2)=c+q and moses(zahly,1) > 15 then
                    FSOUND_Sample_SetMode(mp3Sound(2), FSOUND_NORMAL)
                    FSOUND_PlaySound(FSOUND_FREE, mp3Sound(2))
                    Live=Live-1
                    moses(zahly,1)=1024+rnd*55
                    moses(zahly,2)=rnd*688
                end if
            next

        next
   
       
           
        if Moses(zahly,1)<-80 then
            moses(zahly,1)=1024+rnd*55
            moses(zahly,2)=rnd*688
           
        end if
        put (moses(zahly,1),Moses(zahly,2)), enemy , trans
    next


           
   
   
   
    'Läbu
    if live > 0 Then
        Put  (490,10), leben , trans
        if live > 1 then
            Put  (505,10), leben , trans
            if live > 2 then
                Put  (520,10), leben , trans
            end if
        end if
    end if
    if live <= 0 then
        screenunlock
        cls
     
        Locate 20,30
        Print "Player: ";Name_Player
        Locate 20,70
        Print"Punkte: ";Punkte
        Locate 35,30
        Print "Nochmal Spielen? ";"Drücke J fuer Ja, N fuer Nein"
        if Punkte>punkt then
          OPEN rang FOR OUTPUT AS #fg
           
           
            OPEN rang FOR OUTPUT AS #fg
            PRINT #fg ,name_player,punkte
            CLOSE #fg
           
        end if
       
       
       


        do
           
            if multikey(&h24) then
                Live= 3
                Punkte=0
                Speed = 80
                c=50
               
               
               
                for zahly = 1 to 5
                    moses(zahly,1)=rnd*1024+1000
                    moses(zahly,2)=rnd*688
                next
               
            end if
           
       
            if multikey(&h31) then
                end
            end if
        loop until Live=3
    end if
        For Zahl = 1 to 15
        if laser_shot(zahl,1) <> 0 then
            laser_shot(zahl,1)=laser_shot(zahl,1)+25
                if live>0 then
                    put (laser_shot(zahl,1),laser_shot(zahl,2)),laser, trans
           
                    if laser_shot(zahl,1)>1024 then
                        laser_shot(zahl,1)=0
                    end if
                end if
           
           
           
        end if
    next
   
       
    Put  (b,c), jude , trans
   
    if shoot_counter > 0 then shoot_counter = shoot_counter - 1 end if
    Locate 2,1
    print  "Punkte: " ; Punkte
    do
    loop until zeit + (1/Speed) < timer
    pcopy 0,1
    screenunlock
loop    until Fertig<>1
sleep

Wenns was hilft...
PS: ich bin Blutiger anfänger mit dem Kopf durch die Mauer wollen
und sorry für die dumme namens gebung...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
St_W



Anmeldungsdatum: 22.07.2007
Beiträge: 956
Wohnort: Austria

BeitragVerfasst am: 28.12.2009, 17:32    Titel: Antworten mit Zitat

Der Fehler ist eigentlich ganz simpel:
Du musst "Write #" statt "Print #" verwenden, damit du mit "Input #" die Daten wieder lesen kannst.

Abgeänderte Datei (hab auch noch die Variablenbezeichnungen zum Speichern/Öffnen geändert, da diese recht verwirrend sind):
Code:
Randomize Timer
ScreenRes 1024, 768 ,32 , 1,&H01
SetMouse 0,0,0

Dim enemy As Any Ptr = ImageCreate( 80, 80 )
Dim jude As Any Ptr = ImageCreate( 80, 80 )
BLoad "Grafix\Player.bmp", jude
BLoad "Grafix\enemy.bmp", enemy
Dim Laser As Any Ptr = ImageCreate( 80, 80 )
BLoad "Grafix\Laser.bmp", Laser
Dim Leben As Any Ptr = ImageCreate( 13, 13 )
BLoad "Grafix\Leben.bmp", Leben
Dim Punkte As Single
Punkte = 0
Dim b As Single
b =50
Dim Fertig As Single
Fertig = 1
Dim c As Single
c = 50
Dim Speed As Single
Speed = 80
Dim name_player As String

Dim As String RangDatei = "Rla2.txt"
Dim As Integer FF = FreeFile
Dim As String RekordName = ""
Dim As Integer RekordPunkte = 0

Open RangDatei For Input As #FF
Input #FF, RekordName, RekordPunkte
Close #FF

Color RGB (0,255,0)

Do
   Locate 1,1
   Input "What is your name? ", name_player
Loop Until name_player <>""
Locate 50,30
Print "Rekord: ",RekordName,RekordPunkte
Sleep
'Mp3
#Include "fmod.bi"
' 48kHz sample rate, 8 channels.
FSOUND_Init(48000, 8, 0)
Dim mp3Sound(1 To 100) As Integer Ptr
Locate 2,1
Print "Loading Soundtracks..."
Dim Background_Music As String="Sounz\Background.mp3"
Dim Crash_Sound As String="Sounz\Crash1.mp3"
Dim Laser_Sound As String="Sounz\Laser1.mp3"
Dim Laser_Crash As String="Sounz\Crash2.mp3"

mp3Sound(1) = FSOUND_Sample_Load(FSOUND_FREE, Background_Music, 0, 0, 0)
mp3Sound(2) = FSOUND_Sample_Load(FSOUND_FREE,Crash_Sound, 0, 0, 0)
mp3Sound(3) = FSOUND_Sample_Load(FSOUND_FREE,Laser_Sound, 0, 0, 0)
mp3Sound(4) = FSOUND_Sample_Load(FSOUND_FREE,Laser_Crash, 0, 0, 0)

'Musik Starten und endlos wiederholen
FSOUND_Sample_SetMode(mp3Sound(1), FSOUND_LOOP_NORMAL)
FSOUND_PlaySound(FSOUND_FREE, mp3Sound(1))

Dim d As Single
Dim q As Integer
For q = -20 To 20
Next

Dim zeit As Double

Dim Jesus(1 To 200,1 To 4,1 To 2) As Integer
Dim zahl As Integer
For zahl = 1 To 200
   Jesus(zahl,1,1) = Rnd*1024
   Jesus(zahl,1,2) = Rnd*768

   Jesus(zahl,2,1) = Rnd*1024
   Jesus(zahl,2,2) = Rnd*768

   Jesus(zahl,3,1) = Rnd*1024
   Jesus(zahl,3,2) = Rnd*768

   Jesus(zahl,4,1) = Rnd*1024
   Jesus(zahl,4,2) = Rnd*768
Next
Dim Moses(1 To 5,1 To 2) As Integer
Dim zahly As Integer
For zahly = 1 To 5
   Moses(zahly,1) = Rnd*1024+900
   Moses(zahly,2) = Rnd*688
Next
Dim Live As Single
Live = 3
Dim LZ As Integer
For LZ = 1 To Live
Next

Dim Laser_Shot(1 To 15,1 To 2) As Integer

Dim shoot_counter As Integer

Do
   ScreenLock
   Cls
   zeit = Timer

   'Lebens anzeige

   'Steuerung des eigenen Raumschiffes
   If MultiKey(&h48) Then c=c-10 End If
   If MultiKey(&h50) Then c=c+10 End If
   If MultiKey(&h10) Then
      End
   End If
   If c <0 Then
      c=0
   End If
   If c > 688 Then
      c=688
   End If
   'Laser
   If MultiKey(&h1C) And shoot_counter = 0 Then
      'Leere Variabel suchen
      For Zahl = 1 To 15
         If laser_shot(zahl,1) = 0 Then
            Exit For
         End If
      Next
      FSOUND_Sample_SetMode(mp3Sound(3), FSOUND_NORMAL)
      FSOUND_PlaySound(FSOUND_FREE, mp3Sound(3))
      laser_shot(zahl,1) = 80
      laser_shot(zahl,2) = c
      shoot_counter = 10
   End If

   'Sterne
   For zahl = 1 To 200
      Jesus(zahl,1,1) = Jesus(zahl,1,1) - 1
      Jesus(zahl,2,1) = Jesus(zahl,2,1) - 2
      Jesus(zahl,3,1) = Jesus(zahl,3,1) - 3
      Jesus(zahl,4,1) = Jesus(zahl,4,1) - 10

      PSet (Jesus(zahl,1,1),Jesus(zahl,1,2)),RGB(255,255,255)
      PSet (Jesus(zahl,2,1),Jesus(zahl,2,2)),RGB(255,255,255)
      PSet (Jesus(zahl,3,1),Jesus(zahl,3,2)),RGB(255,255,255)
      PSet (Jesus(zahl,4,1),Jesus(zahl,4,2)),RGB(255,255,255)

      If Jesus(zahl,1,1)<0 Then Jesus(zahl,1,1)=1024 End If
      If Jesus(zahl,2,1)<0 Then Jesus(zahl,2,1)=1024 End If
      If Jesus(zahl,3,1)<0 Then Jesus(zahl,3,1)=1024 End If
      If Jesus(zahl,4,1)<0 Then Jesus(zahl,4,1)=1024 End If
   Next
   'Feinde
   For zahly = 1 To 5
      Moses(zahly,1) = Moses(zahly,1) - 6
      For zahl = 1 To 15
         For q = -40 To 40
            'Elimination durch Laser
            If Moses(zahly,1)=laser_shot(zahl,1)+q+20 And Moses(zahly,2)>laser_shot(zahl,2)+q And Moses(zahly,2)<laser_shot(zahl,2)-q And moses(zahly,1)<1000 And moses(zahly,1)>130 Then
               moses(zahly,1)=1024+Rnd*55
               moses(zahly,2)=Rnd*688
               FSOUND_Sample_SetMode(mp3Sound(4), FSOUND_NORMAL)
               FSOUND_PlaySound(FSOUND_FREE, mp3Sound(4))
               Punkte=Punkte+100
               Speed=Speed+1
            End If
            
            'Ins Raumschiff reinfahren
            If Moses(zahly,1)<b+80 And Moses(zahly,2)=c+q And moses(zahly,1) > 15 Then
               FSOUND_Sample_SetMode(mp3Sound(2), FSOUND_NORMAL)
               FSOUND_PlaySound(FSOUND_FREE, mp3Sound(2))
               Live=Live-1
               moses(zahly,1)=1024+Rnd*55
               moses(zahly,2)=Rnd*688
            End If
         Next

      Next
      
      If Moses(zahly,1)<-80 Then
         moses(zahly,1)=1024+Rnd*55
         moses(zahly,2)=Rnd*688

      End If
      Put (moses(zahly,1),Moses(zahly,2)), enemy , Trans
   Next
   
   'Läbu
   If live > 0 Then
      Put  (490,10), leben , Trans
      If live > 1 Then
         Put  (505,10), leben , Trans
         If live > 2 Then
            Put  (520,10), leben , Trans
         End If
      End If
   End If
   If live <= 0 Then
      ScreenUnlock
      Cls
      Locate 20,30
      Print "Player: ";Name_Player
      Locate 20,70
      Print"Punkte: ";Punkte
      Locate 35,30
      Print "Nochmal Spielen? ";"Drücke J fuer Ja, N fuer Nein"

      If Punkte>RekordPunkte Then
         Open RangDatei For Output As #FF
         write #FF, name_player, punkte
         Close #FF
         RekordPunkte = punkte         'Neuen Rekord gleich übernehmen
         RekordName = name_player
      End If
      Do
         If MultiKey(&h24) Then
            Live= 3
            Punkte=0
            Speed = 80
            c=50
            For zahly = 1 To 5
               moses(zahly,1)=Rnd*1024+1000
               moses(zahly,2)=Rnd*688
            Next
         End If
         If MultiKey(&h31) Then
            End
         End If
      Loop Until Live=3
   End If
   For Zahl = 1 To 15
      If laser_shot(zahl,1) <> 0 Then
         laser_shot(zahl,1)=laser_shot(zahl,1)+25
         If live>0 Then
            Put (laser_shot(zahl,1),laser_shot(zahl,2)),laser, Trans

            If laser_shot(zahl,1)>1024 Then
               laser_shot(zahl,1)=0
            End If
         End If
      End If
   Next
   Put  (b,c), jude , Trans
   If shoot_counter > 0 Then shoot_counter = shoot_counter - 1 End If
   Locate 2,1
   Print  "Punkte: " ; Punkte
   Do
   Loop Until zeit + (1/Speed) < Timer
   PCopy 0,1
   ScreenUnlock
Loop    Until Fertig<>1
Sleep

_________________
Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken)


Zuletzt bearbeitet von St_W am 28.12.2009, 17:37, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4704
Wohnort: ~/

BeitragVerfasst am: 28.12.2009, 17:35    Titel: Antworten mit Zitat

Ich komme noch nicht genau dahinter, wann da ein Fehler auftritt. Ich habe den Quellcode neu compiliert, und das Spiel speichert mir am Ende meinen Spielstand, wenn er größer ist als der schon gespeicherte. Auch die 0, die du erwähnst, finde ich nicht. Oder kommt die von FMOD? Ich habe die gesamte Sound-Ausgabe auskommentiert, weil bei mir nicht installiert.

Tritt das Problem bei dir immer auf oder nur unter bestimmten Umständen?


edit: komisch, bei mir funktioniert PRINT # sehr gut. neutral
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Grassstunger



Anmeldungsdatum: 27.12.2009
Beiträge: 11

BeitragVerfasst am: 28.12.2009, 18:50    Titel: Antworten mit Zitat

danke st w, das funzt prima, wie findet ihr das spiel bis jetzt(ist natürlich noch nicht fertig)?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz