Noch ein Problem mit dem JNR Tut

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Razor1994

Betreff: Noch ein Problem mit dem JNR Tut

BeitragFr, Mai 07, 2010 22:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe diese Funktion aus dem JNR tut von der robsite aber sie funktioniert nicht. Die Monster werden zwar gelöscht aber es der Rest des Levels bleibt und die Punkte werden unendlich erhöht. Vielleicht könnt ihr mir helfen. Vielleicht bin ich jetzt auch einfach zu müde.^^
Code: [AUSKLAPPEN]
Function FreundeHolen()
   info3.freund = First freund ;ersten freund abfragen
   If info3.freund = Null Then ;sollte diese nicht vorhanden sein
      AddPoints(500)   ;Punkte um 500 erhöhen
      start = 0               ;Level neu zeichnen.
      ;Hier könnte man später auch den Level erhöhen, so das der nächste gewünschte geladen wird.
   EndIf
End Function

Und das ist die Hauptschleife
Code: [AUSKLAPPEN]
Repeat
   WaitTimer(frametimer)
   ;Die Anzahl der Leben abfragen.
If lives = -1 Then ; sollte kein Leben vorhanden sein
   Cls    ;Bildschirm löschen
   Text 100, 100, "Press F1 to Play"   
   If KeyHit (59) Then    ;Sobald die Taste F1 gedrückt wird
      lives = 3         ;Lebenszahl auf 3 erhöhen
      score = 0         ;Punkte zurücksetzen
   EndIf
   
ElseIf Lives > -1 Then   ;Sobald Punkte höher als -1 ist
   Cls
   If Start = 0 Then    ;Um die Leveldaten neu einzulesen, habe ich eine neue Function erstellt
      Start = 1         ;Diese kann man später erweitern um mehrere Level zu erstellen.
      SetupLevel()
   EndIf

   
   WeltZeichnen
   Kollision
   SpielerBewegen
   Sprung
   MonsterBewegen
   PickupsZeichnen
   SpielerZeichnen
   GegnerZeichnen
   FreundZeichnen
   FreundeHolen
   PunkteAnzeigen
EndIf
If KeyHit(57) Then
   SetupLevel
EndIf
   Flip
Until KeyHit(1)
End

Falls ihr den Rest auch noch wollt sagt es einfach.
User posted image
kommt in meinen Runescape clan
 

Lador

BeitragFr, Mai 07, 2010 22:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Die unendlich Punkte kommen, denke ich mal, daher, dass der erste Freund eben immer Null ist und deswegen die Bedingung der FreundeHolen()-Funktion immer erfüllt ist. Und für das mit den Monstern bräuchte ich mehr Code.

MFG Lador
Mein aktuelles Projekt:
2D-Rollenspiel "Iliran"
Screenshot | Worklog
Fortschritt: ca. 70%
 

Razor1994

BeitragSa, Mai 08, 2010 11:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Monster sollen ja gelöscht werden. Aber das ganze Level soll neu aufgebaut werden. Und wenn die bedingung immer erfüllt ist sollte start doch auch 0 sein oder nicht? Und das funktioniert nicht. Aber hier mal der ganze Code: [AUSKLAPPEN]
;grafik optionen
Global Screen_x = 960
Global Screen_y = 640

Graphics Screen_x, Screen_y, 0, 0
SetBuffer BackBuffer()
frametimer = CreateTimer(30)

;Bilder
Global hintergrund = LoadImage("C:\Program Files\Blitz2DDemo\help\resources\samples\Graphics\stars.bmp")
Global player = LoadAnimImage ("C:\Users\Michael\Pictures\bb bilder\dude2.bmp",32,32,0,8)
MaskImage player, 255, 0, 255

Global untergrund = LoadImage ("C:\Program Files\Blitz2DDemo\help\resources\samples\Graphics\blocks1.bmp")
MaskImage untergrund, 255, 0, 255

Global untergrund2 = LoadImage ("C:\Program Files\Blitz2DDemo\help\resources\samples\Graphics\blocks2.bmp")
MaskImage untergrund2, 255, 0, 255

Global pickups = LoadImage ("C:\Program Files\Blitz2DDemo\help\resources\samples\Graphics\pickups.bmp")
MaskImage pickups, 0, 0, 0

Global enemys1 = LoadAnimImage("C:\Users\Michael\Pictures\bb bilder\bugz.bmp", 37, 14, 0, 8)
MaskImage enemys1, 0, 0, 0

;Variablen
Global jump
Global points = 0
Global playercounter =8
Global playerframe = 0
Global hintergrundlayer = 0
Global itemlayer = 1
Global playerlayer= 2
Global score = 0
Global lives = -1


;Types

Global spieler.spielertyp
Type spielertyp
   Field x, y, speed_y#
End Type

Global info.pickup
Type pickup
   Field pickup_x
   Field pickup_y
   Field pstart_x
   Field pstart_y
   Field phoehe
   Field pbreite
End Type


;Types für die Gegner
Global info2.Monster

Type Monster
   Field monsterbildnr
   Field monster_x
   Field monster_y
   Field mstart_y
   Field mstart_y2
   Field mstart_x
   Field mstart_x2
   Field mhoehe
   Field mbreite
   Field mframe
   Field mframe2
   Field mcounter
   Field Richtung
End Type

;types für die Freunde
Global info3.freund

Type freund
   Field freund_x
   Field freund_y
End Type

spieler = New spielertyp
spieler\speed_y# = 0
spieler\x = 0
spieler\y = 580



       
      


;spieler bewegung
Const rauf = 200, runter = 208, rechts = 205, links = 203

Dim karte (30,20)



;--
;Hauptschleife
Repeat
   WaitTimer(frametimer)
   ;Die Anzahl der Leben abfragen.
If lives = -1 Then ; sollte kein Leben vorhanden sein
   Cls    ;Bildschirm löschen
   Text 100, 100, "Press F1 to Play"   
   If KeyHit (59) Then    ;Sobald die Taste F1 gedrückt wird
      lives = 3         ;Lebenszahl auf 3 erhöhen
      score = 0         ;Punkte zurücksetzen
   EndIf
   
ElseIf Lives > -1 Then   ;Sobald Punkte höher als -1 ist
   Cls
   If Start = 0 Then    ;Um die Leveldaten neu einzulesen, habe ich eine neue Function erstellt
      Start = 1         ;Diese kann man später erweitern um mehrere Level zu erstellen.
      SetupLevel()
   EndIf

   
   WeltZeichnen
   Kollision
   SpielerBewegen
   Sprung
   MonsterBewegen
   PickupsZeichnen
   SpielerZeichnen
   GegnerZeichnen
   FreundZeichnen
   FreundeHolen
   PunkteAnzeigen
EndIf
If KeyHit(57) Then
   Setuplevel
EndIf
   Flip
Until KeyHit(1)
End


;--
;Functionen
Function SpielerZeichnen()
   DrawImage player, spieler\x, spieler\y, playerframe
End Function

;Function Monster malen.
Function GegnerZeichnen()
   For info2.Monster = Each Monster      ;Alle Monster abfragen
      If info2\monsterbildnr = 1 Then   ;Wenn es der erste Monstertyp ist
         DrawImage enemys1, info2\monster_x, info2\monster_y, info2\mframe   ;Monster malen
      EndIf
   Next
End Function

Function FreundZeichnen()
   For info3.freund = Each freund
      DrawImage player, info3\freund_x, info3\freund_y
   Next      
End Function

Function MonsterBewegen()
;nach rechts
   For info2.Monster = Each Monster                              ;alle Monster abfragen
         If info2\Richtung = 1 Then                               ; Richtung abfragen
            info2\monster_x = info2\monster_x +2   ;X-Position erhöhen
            If info2\mframe >3 Then info2\mframe = 0 ;Genauso, wie wir es mit der Spielfigur gelöst haben,
            info2\mcounter = info2\mcounter -1      ;lösen wir das Problem mit der Animation auch bei den Monstern
            If info2\mcounter = 0 Then
               info2\mcounter = 8
               info2\mframe = info2\mframe +1
               If info2\mframe = 3 Then info2\mframe = 0
            EndIf
            If karte((info2\monster_x +16) /32,(info2\monster_y +32) /32)=0 Or karte((info2\monster_x + 32) /32,(info2\monster_y +16) /32)=2 Or karte((info2\monster_x +16) /32,(info2\monster_y +32) /32)=3 Then   ; sollte keine Tile mehr unter dem Monster sein
               info2\Richtung = 0                              ;umkehren
            EndIf
;nach links
         ElseIf info2\Richtung = 0 Then                            ;andere Richtung?
            info2\monster_x = info2\monster_x -2
            If info2\mframe <4 Then info2\mframe = 4
            info2\mcounter = info2\mcounter -1
            If info2\mcounter = 0 Then
               info2\mcounter = 8
               info2\mframe = info2\mframe +1
               If info2\mframe = 8 Then info2\mframe = 4
            EndIf
            If karte((info2\monster_x +16) /32,(info2\monster_y +32) /32)=0 Or karte((info2\monster_x + 16) /32,(info2\monster_y +32) /32)=2 Or karte((info2\monster_x +16) /32,(info2\monster_y +32) /32)=3 Then
               info2\Richtung = 1
            EndIf          
         EndIf
   Next
End Function

Function SpielerBewegen()
   If KeyDown(rechts) Then
   If playerframe >3 Then playerframe = 0   ; hier die ersten 4 Frames gebraucht werden.
      playercounter = playercounter -1
      If playercounter = 0 Then
         playercounter = 8
         playerframe = playerframe +1
         If playerframe = 4 Then playerframe = 0
      EndIf
      If karte((spieler\x +32) /32,(spieler\y + 16) /32)=0 Then
         spieler\x = spieler\x + 4
         If spieler\x => Screen_x -30 Then spieler\x = Screen_x -31
      EndIf
   ElseIf KeyDown(links) Then
      If playerframe <4 Then playerframe = 4
      playercounter = playercounter - 1
      If playercounter = 0 Then               ;Sobald Zähler Null erreicht hat
         playercounter = 8                  ;Zähler auf neuen Wert setzen
         playerframe = playerframe +1         ;Frame erhöhen
         If playerframe = 8 Then playerframe = 4   ;Sollte Frame größer als 8 sein, auf 4 zurücksetzen
      EndIf
      If karte(spieler\x /32,(spieler\y + 16) /32)=0 Then
         spieler\x = spieler\x - 4
         If spieler\x =< 0 Then spieler\x = 1
      EndIf
   EndIf
End Function

Function Sprung()
   If KeyDown (rauf) Then         ;Überprüft ob Taste Space gedrückt wurde
      If jump = False           ;wenn Variable jump = 0
         jump = True            ;auf True setzen
         spieler\speed_y = 7       ;Die Sprunghöhe setzen
      EndIf
   EndIf
   
   ;falls Player nach oben gegen Mauer springt, fällt er zurück
   If karte((spieler\x + 16) /32,spieler\y /32)=1 Or karte((spieler\x + 16) /32,spieler\y /32)= 2 And jump = True Then
      jump = False
      spieler\y = spieler\y +1   ;muß um eins tiefer gesetzt werden, da sonst die Figur hängen bleibt
   EndIf
   
   
   ;die eigentliche Sprungroutine
   If jump = True Then
      spieler\speed_y = spieler\speed_y -0.33    ;Die Temporäre Variable verringern
      spieler\y = spieler\y - spieler\speed_y ; Position Y durch TempY v
      If spieler\speed_y =< 0 Then
         If karte((spieler\x +16) /32,(spieler\y +32) /32)=1 Then
            jump = 0
            temp = spieler\y /32
            spieler\y = temp *32
         EndIf
      EndIf
    EndIf
   
   ;Gravity
   If jump = False  Then
      If karte((spieler\x +16) /32,(spieler\y +32) /32)=0 Then   ; Sollte kein Tile unter dem Spieler sein
         jump = True       ; Sprungfunktion weiter ausführen
         spieler\speed_y = 0   ; Temp_y = 0, weil diese einen negativen Wert berechnen soll
      EndIf
   EndIf
   
   ;sorgt dafür, das die Figur nicht aus den Himmel schießt
   If spieler\y =< 0 Then
      spieler\y = 1
      jump = True
      spieler\speed_y = 0
   EndIf
   
   If spieler\y => Screen_y -32 Then
      spieler\y = Screen_y -33
      jump = False
   EndIf      
End Function


; Die pickups malen
Function PickupsZeichnen()
   For info.pickup = Each pickup               ; Alle pickups abfragen
      DrawImageRect pickups, info\pickup_x, info\pickup_y, info\pstart_x, info\pstart_y, info\phoehe, info\pbreite   ;Pickups malen
   Next
End Function


Function WeltZeichnen()
TileBlock hintergrund, 0, 0
   For y = 0 To 19
      For x = 0 To 29
         If karte(x,y) = 1 Then
            DrawImageRect untergrund, x*32, y*32, 206, 36, 32, 32
         ElseIf karte(x,y) = 2 Then
            DrawImageRect untergrund, x*32, y*32, 138, 2, 32, 32
         ElseIf karte(x,y) = 3 Then
            DrawImageRect untergrund2, x*32, y*32, 376, 138, 32, 32
         EndIf
      Next
   Next
End Function

Function respawn()
      lives = Lives -1   ;Leben um eins veringern
      Delay 1000         ;kurze Pause
      spieler\x = 10      ;Spielerwerte zurücksetzen
      spieler\y = 580
      spieler\speed_y# = 0
      playercounter = 8
      playerframe = 0
End Function

Function Kollision()
For info.pickup = Each pickup   ;Alle Pickups abfragen
   If RectsOverlap(spieler\x, spieler\y, 32, 32, info\pickup_x, info\pickup_y, 25, 29)Then ;Sobald eine Kollision auftritt
      Delete info.pickup   ; Pickup löschen
      AddPoints(100)
   EndIf
Next

For info3.freund = Each freund
   If RectsOverlap (spieler\x, spieler\y, 32, 32, info3\freund_x, info3\freund_y, 32, 32)Then
      Delete info3.freund
      AddPoints(200)
   EndIf
Next

If karte((spieler\x   + 16)/32, (spieler\y + 32)/32) = 3 Then
   respawn
EndIf
   
For info2.Monster = Each Monster
   If RectsOverlap (spieler\x, spieler\y, 32, 32, info2\monster_x, info2\monster_y, 15, 34) Then
      respawn
   EndIf          
Next
End Function


;Function um die Punkte zu erhöhen
Function AddPoints (pnts)
   t = score / 5000      ;Die Punkte werden durch 5000 geteilt und in eine Variable geschrieben
                     ;dabei handelt es sich um eine Variable mit einer Ganzzahl. Die Kommawerte
                     ;werden deshalb einfach abgeschnitten
   score = score + pnts   ;übergebener Wert den Punkten hinzufügen
   If score / 5000 <> t Then Lives = Lives +1   ;Überprüft, ob die Punkte höher als die Vorherigen sind
                                       ;und erhöht bei bedarf die Anzahl der Leben.
End Function



Function PunkteAnzeigen()   ;Zeichnet den Punktestand und die Leben auf den Bildschirm
   Text 10 ,10, "Lives :"
   Text 80 ,10, Lives
   Text 300,10, "Score :"
   Text 380,10, score
   Text 500,10, "Reset : Space
End Function


;Diese Funktion überprüft, ob noch Freunde vorhanden sind
Function FreundeHolen()
   info3.freund = First freund ;ersten freund abfragen
   If info3.freund = Null Then ;sollte diese nicht vorhanden sein
      AddPoints(500)   ;Punkte um 500 erhöhen
      start = 0               ;Level neu zeichnen.
      ;Hier könnte man später auch den Level erhöhen, so das der nächste gewünschte geladen wird.
   EndIf
End Function


;Diese Function ist nötig geworden,um die Karte mit Ihren Gegnern und Bomben immer wieder neu aufzubauen.
Function SetupLevel()
Delete Each monster

;Kartendaten lesen
Restore Weltdaten
For y = 0 To 19
   For x = 0 To 29
      Read karte(x,y)
   Next
Next

Restore freunde_level1
Read anzahl
For i = 1 To anzahl
   info3.freund = New freund
   Read x, y
   info3\freund_x = x
   info3\freund_y = y
Next

respawn   

Restore pickups_level1
Read anzahl                     ;der erste Wert in der Dataschleife gibt die Anzahl der pickups an
For i = 1 To anzahl               ;Zählt durch die einzelnen Einträge 
   info.pickup = New pickup      ;Neues pickup erstellen
   Read x, y, s_x, s_y, h, b      ;Koordinaten lesen
   info\pickup_x = x            ;x und y Werte an dem Typ übergeben
   info\pickup_Y = y
   info\pstart_x = s_x            ;ausserdem die start parameter weil es nur ein ausschnitt ist
   info\pstart_y = s_y
   info\phoehe = h               ;sowie die höhe und die breite
   info\pbreite = b
Next

;Gegnerdaten lesen
Restore monster_level1
Read anzahl   ; der erste Wert in der Data Schleife
For i = 1 To anzahl                  ;Zählt durch die einzelnen Einträge
   info2.Monster = New Monster         ;Neue Gegner erstellen
   Read mbnr, x, y, sx, sy, sx2, sy2, h2, b2, mc, mf, mf2, richtung   ;Typen, Koordinaten und Startrichtung lesen
   info2\monsterbildnr = mbnr      ;Die gelesenen Werte übergeben
   info2\monster_x = x
   info2\monster_y = y
   info2\mstart_x = sx
   info2\mstart_y = sy
   info2\mstart_x2 = sx2
   info2\mstart_y2 = sy2
   info2\mhoehe = h2
   info2\mbreite = b2
   info2\mcounter = mc
   info2\mframe = mf
   info2\mframe2 = mf2
   info2\Richtung = richtung
Next      
End Function



.Weltdaten
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 1,0,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0
Data 2,0,1,2,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,1,0,0,0,1,1,1
Data 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,0,0,0,0,0
Data 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,1,0,0,0,0
Data 2,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,2,0,0,0,0,0,0,0,0,0,1,0,0,0
Data 2,2,2,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 2,2,2,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,1,1,1,1,1,0
Data 2,2,2,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,2,3,2,3,2,0,0,0,0,0,0
Data 2,2,2,3,3,3,3,2,0,0,0,0,0,1,0,0,1,1,1,2,2,2,2,2,0,1,1,1,1,1
Data 2,2,2,2,2,2,2,2,0,0,0,1,0,2,3,3,2,0,0,0,0,0,0,0,0,2,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0,0,0,0,0,0,0,0,2,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,2,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,1,0,0
Data 0,0,0,0,1,1,1,0,0,1,1,1,1,1,1,1,1,1,2,0,0,0,0,0,0,0,1,2,0,0
Data 0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,2,0,0
Data 0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,2,4,0,0
Data 1,1,2,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,1,1


; Hier sind die Daten abgelegt, die zur Positionierung der Pickups notwendig sind
.pickups_level1
Data 25
Data 212,37,204,20,29,25
Data 468,37,204,20,29,25
Data 660,37,204,20,29,25
Data 928,102,207,20,29,25
Data 128,133,204,20,29,25
Data 640,180,204,20,29,25
Data 704,180,204,20,29,25
Data 320,197,204,20,29,25
Data 640,212,204,20,29,25
Data 704,212,204,20,29,25
Data 448,325,204,20,29,25
Data 480,325,204,20,29,25
Data 896,325,204,20,29,25
Data 864,325,204,20,29,25
Data 832,325,204,20,29,25
Data 800,325,204,20,29,25
Data 864,421,204,20,29,25
Data 672,421,204,20,29,25
Data 864,453,204,20,29,25
Data 288,485,204,20,29,25
Data 416,485,204,20,29,25
Data 544,485,204,20,29,25
Data 160,581,204,20,29,25
Data 416,581,204,20,29,25
Data 672,581,204,20,29,25

.monster_level1
Data 6
Data 1,112,49,173,334,324,333,34,15,8,0,4,0
Data 1,244,209,173,334,324,333,34,15,8,0,4,0
Data 1,596,433,173,334,324,333,34,15,8,0,4,0
Data 1,308,497,173,334,324,333,34,15,8,0,4,0
Data 1,884,113,173,334,324,333,34,15,8,0,4,0
Data 1,176,593,173,334,324,333,34,15,8,0,4,0

.freunde_level1
Data 2
Data 0,32
Data 480,192


~EDITIERT~

Ich hab' mal die überlangen ---Kommentare gelöscht, weil sie das Board-Layout zerstören.
mfG
Holzchopf
 

Lador

BeitragSo, Mai 09, 2010 11:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Also bevor ich dir weiterhelfe:

Hast du die Tutorials durchgearbeitet oder einfach nur kopiert? Deine häufigen Anfragen bezüglich dieses Tutorials lassen mich darauf schließen, dass du noch kein Tutorial richtig angeschaut hast.

Was ist überhaupt dein Problem mit dem Programm? Du sagtest etwas von der FreundeHolen()-Funktion, aber die wird während des Programms nie aufgerufen. Beschreib dein Problem mal bitte etwas genauer.

MFG Lador
Mein aktuelles Projekt:
2D-Rollenspiel "Iliran"
Screenshot | Worklog
Fortschritt: ca. 70%
 

Razor1994

BeitragSo, Mai 09, 2010 19:46
Antworten mit Zitat
Benutzer-Profile anzeigen
ich habe schon sehr viele Tutorials durchgearbeitet und ich hatte bisher nur: eine Frage zum verstehen des Tutorials und 2 weitere weil funktionen die ich schon übernommen habe aber versuchte richtig einzubauen nicht funktionierten. Ist dir schon einmal der gedanke gekommen das ich so viel frage um das Tutorial zu verstehen?
Zu meinem Problem.
1. Sie wird aufgerufen als zweit letzte Funktion.
2. Mein Problem ist, dass wenn FreundHolen aufgerufen wird Start = 0 gesetzt und das level neu aufgebaut werden sollte, wie es die If then schleife in der Hauptschleife eigentlich vorsieht. Aber es funktioniert nicht, also frage ich euch wo der Fehler liegen könnte da ich ihn nicht finde.
User posted image
kommt in meinen Runescape clan

Midimaster

BeitragMo, Mai 10, 2010 8:07
Antworten mit Zitat
Benutzer-Profile anzeigen
es gibt ja in deinem Spiel mehrere Stellen, bei denen die Spielpunkte erhöht werden. Bist du sicher, dass es sich um die Stelle mit dem FreundeHolen() handelt?

fügt doch mal ein paar DEBUGLOG ein, damit man im Debugger sieht, was eigentlich gerade immer passiert.

BlitzBasic: [AUSKLAPPEN]
Function FreundeHolen()
info3.freund = First freund
If info3.freund = Null Then

DebugLog " es ist kein Freund vorhanden"

AddPoints(500) ;Punkte um 500 erhöhen
start = 0 ;Level neu zeichnen.
EndIf
End Function


Dann mustt du natürlich mit DEBUGLOSs checken, ob anschließend die SetupLevel() wirklich gerufen wird und dort wiederum, ob am Ende wirklich neues Freunde angelegt wurden.

Ich tippe eher darauf, dass die vielen Punkte aus der Kollision() kommen.
 

Razor1994

BeitragMo, Mai 10, 2010 13:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Punkte kommen doch aus der Funktion Freundholen. Aber die If schleife in der Hauptschleife wird garnicht aufgerufen.Code: [AUSKLAPPEN]
ElseIf Lives > -1 Then                     ;Sobald Punkte höher als -1 ist
   Cls
   If Start = 0 Then                      ;Um die Leveldaten neu einzulesen, habe ich eine neue Function erstellt
      Start = 1                        ;Diese kann man später erweitern um mehrere Level zu erstellen.
      SetupLevel()
      DebugLog "Setup wurde gestartet"
   EndIf

Hoffe habe das richtig getestet.
Ich weiss nicht mehr weiter.
User posted image
kommt in meinen Runescape clan

Midimaster

BeitragMo, Mai 10, 2010 13:59
Antworten mit Zitat
Benutzer-Profile anzeigen
du schreibst deine Ergebnisse sehr kurz. ich vermute mal, das sollte heissen, dass du die DEBUGLOG
BlitzBasic: [AUSKLAPPEN]
DebugLog " es ist kein Freund vorhanden"

ziemlich oft gesehen hast. Eine deutlichere DEBUGLOG wäre übrigens so:
BlitzBasic: [AUSKLAPPEN]
DebugLog " es ist kein Freund vorhanden Zeit: " + MilliSecs()


Jetzt würde ich an deiner Stelle testen, warum START dann in der Hauptschleife nicht mehr 0 ist, und woran das liegt:
BlitzBasic: [AUSKLAPPEN]
Repeat 
WaitTimer(frametimer)
;Die Anzahl der Leben abfragen.

DebugLog " so viele Lives gibt es noch: " + lives

If lives = -1 Then ; sollte kein Leben vorhanden sein
Cls ;Bildschirm löschen
Text 100, 100, "Press F1 to Play"



und tiefer:
BlitzBasic: [AUSKLAPPEN]
ElseIf Lives > -1 Then                     ;Sobald Punkte höher als -1 ist 
Cls

DebugLog "Lives ist größer -1, und Start ist: " + start

If Start = 0 Then ;Um die Leveldaten neu einzulesen, habe ich eine neue Function erstellt
Start = 1 ;Diese kann man später erweitern um mehrere Level zu erstellen.
SetupLevel()
DebugLog "Setup wurde gestartet"
EndIf


Um einen Fehler zu finden, musst du genau herausfinden, welche Codestellen dein Programm überhaupt abarbeitet. Oft suchen die Leute das Problem bei der Variablen, bei der ihnen der Fehler aufgefallen war und dabei liegt das Problem darin, das etwas ganz anders nicht funktioniert. Setze viel mehr DEBUGLOGs ein. Du kannst sie ruhig bis zum Projektende im Code lassen.





Vielleicht hast du ja START% nicht GLOBAL gemacht?
 

Razor1994

BeitragMo, Mai 10, 2010 16:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Peinlich, solche Umstände zu machen obwohl ich wirklich vergessen habe start global zu machen. Embarassed
Aber jetzt weiss ich wenigstens genau wie ich mit debuglog fehler finden kann. Das wusste ich vorher auch nicht.
Trotzdem danke.
User posted image
kommt in meinen Runescape clan

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group