Gültigkeitsbereiche Fehler

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Raiden93

Betreff: Gültigkeitsbereiche Fehler

BeitragMi, Jun 01, 2011 11:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey,
ich wollte zum test mal meine Locale Variable Punkte, Punkte addieren sobald ein Wert von meiner Tilemap > 0 ist.
Doch irgendwie kriege ich keine Punkte, ich habe auch schon versucht das Punkte = Punkte +1 nur in die Punkte_Zeichnen (Punkte) Funktion zu Packen.
Doch auch da gab es keine Wert veränderung :/

Code: [AUSKLAPPEN]
; ####################
; Blopp it!
; ####################

AppTitle "Bloop it - Alpha 0.1"
Graphics 800,600,32,2
SetBuffer BackBuffer ()
Global FPS_Timer = CreateTimer (60)

; Daten Laden
Global gfx_spiel_background = LoadImage ("gfx/spiel/hintergrund/spiel_background.png")
Global gfx_spiel_ball_blau = LoadAnimImage ("gfx/spiel/bälle/spiel_bälle.png",50,50,0,5)

; Transparent
MaskImage gfx_spiel_ball_blau,255,0,255

; Schriftart Laden
Global schrift_ComicSansMS = LoadFont("Impact",40)


; TileMap initialisieren
Dim Map(4,8)
Data 0,1,0,0,0
Data 0,0,0,0,0
Data 0,0,0,0,0
Data 0,0,0,0,0
Data 0,0,0,0,0
Data 0,0,0,0,0
Data 0,0,0,0,0
Data 0,0,0,0,0
Data 0,0,0,0,0


For y=0 To 8
   For x=0 To 4
      Read Map (x,y)
   Next
Next

; Game Loop
Repeat
   Cls
   
   ; Variablen
   Local Modus = 2
   Local Punkte = 0
   Local Level = 1
   
   Select Modus
         
      ;Hauptmenü
      Case 1
         
      ;Spiel
      Case 2
         DrawImage gfx_spiel_background,0,0
         Punkte_Ausgeben (Punkte)
         Level_Ausgeben (Level)
         Kugeln_Zeichnen (Punkte)
   End Select
   
   Flip (0)
   WaitTimer (FPS_Timer)
Until KeyHit (1)

; Punkte Ausgeben
Function Punkte_Ausgeben (Punkte)
   SetFont schrift_ComicSansMS
   Color 0,0,0
   Text 540,58,Punkte
End Function

; Level Ausgeben
Function Level_Ausgeben (Level)
   SetFont schrift_ComicSansMS
   Color 0,0,0
   Text 666,148,Level
End Function

; Kugeln Zeichnen
Function Kugeln_Zeichnen (Punkte)
   For y=0 To 8
      For x=0 To 4
         If Map(x,y) > 0
            DrawImage gfx_spiel_ball_blau,((x*51)+44),((y*51)+78),Map(x,y)
            Punkte = Punkte +1 ;<--------- Help :P
         End If
      Next
   Next
   
   Return Punkte
End Function

Xeres

Moderator

BeitragMi, Jun 01, 2011 11:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Du solltest dir vielleicht angewöhnen, die Parameter nicht exakt so zu nennen wie die Variable. Kugeln_Zeichnen gibt zwar Punkte zurück, aber diesen wert speicherst du nicht.
Code: [AUSKLAPPEN]
Punkte = Kugeln_Zeichnen (Punkte)
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Raiden93

BeitragMi, Jun 01, 2011 11:56
Antworten mit Zitat
Benutzer-Profile anzeigen
ich glaube ich habe es so gemacht wie du es mir vorgeschlagen hast^^ aber irgendwie bleibt Punkte weiterhin 0.

Code: [AUSKLAPPEN]
; ####################
; Blopp it!
; ####################

AppTitle "Bloop it - Alpha 0.1"
Graphics 800,600,32,2
SetBuffer BackBuffer ()
Global FPS_Timer = CreateTimer (60)

; Daten Laden
Global gfx_spiel_background = LoadImage ("gfx/spiel/hintergrund/spiel_background.png")
Global gfx_spiel_ball_blau = LoadAnimImage ("gfx/spiel/bälle/spiel_bälle.png",50,50,0,5)

; Transparent
MaskImage gfx_spiel_ball_blau,255,0,255

; Schriftart Laden
Global schrift_ComicSansMS = LoadFont("Impact",40)


; TileMap initialisieren
Dim Map(4,8)
Data 0,1,0,0,0
Data 0,0,0,0,0
Data 0,0,0,0,0
Data 0,0,0,0,0
Data 0,0,0,0,0
Data 0,0,0,0,0
Data 0,0,0,0,0
Data 0,0,0,0,0
Data 0,0,0,0,0


For y=0 To 8
   For x=0 To 4
      Read Map (x,y)
   Next
Next

; Game Loop
Repeat
   Cls
   
   ; Variablen
   Local Modus = 2
   Local Punkte = 0
   Local Level = 1
   
   Select Modus
         
      ;Hauptmenü
      Case 1
         
      ;Spiel
      Case 2
         DrawImage gfx_spiel_background,0,0
         Punkte_Ausgeben (Punkte)
         Level_Ausgeben (Level)
         Punkte = Kugeln_Zeichnen (Punkte)
   End Select
   
   Flip (0)
   WaitTimer (FPS_Timer)
Until KeyHit (1)

; Punkte Ausgeben
Function Punkte_Ausgeben (Punkte)
   SetFont schrift_ComicSansMS
   Color 0,0,0
   Text 540,58,Punkte
End Function

; Level Ausgeben
Function Level_Ausgeben (Level)
   SetFont schrift_ComicSansMS
   Color 0,0,0
   Text 666,148,Level
End Function

; Kugeln Zeichnen
Function Kugeln_Zeichnen (f_Punkte)
   For y=0 To 8
      For x=0 To 4
         If Map(x,y) > 0
            DrawImage gfx_spiel_ball_blau,((x*51)+44),((y*51)+78),Map(x,y)
         End If
      Next
   Next
   
   f_Punkte = f_Punkte +1 ;<---- Hier sollte er eigentlich steigen.
   
   Return f_Punkte
End Function

Xeres

Moderator

BeitragMi, Jun 01, 2011 12:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich würde vorschlagen, du verschiebst die Variablen Deklaration vor die Hauptschleife.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Raiden93

BeitragMi, Jun 01, 2011 12:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Oh jetzt gehts mensch ich dachte das ist wie bei c++ alles was in der main schleife kommt sollte Local genutzt werden.Und sobald die Variable aus der Main schleife ist ist es Global.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group