Äpfel erscheinen nicht!

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Surat

Betreff: Äpfel erscheinen nicht!

BeitragMo, März 27, 2006 14:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!
Folgender Jump-Run-code funzt net! Die Äpfel erscheinen irgendwie nicht!
Hier der Code:

Code: [AUSKLAPPEN]
Graphics 640,480

SetBuffer BackBuffer()
frametimer=CreateTimer(30)
ClsColor 0,0,255
Global tile=LoadImage("block.png")
MaskImage tile,255,255,255
Global jeff=LoadImage("jeff.png")
MaskImage jeff,255,255,255
Global appel=LoadImage("appel.png")
MaskImage appel,255,255,255
Global player_pos_x=500
Global player_pos_y=350
Global appel_x
Global appel_y
Global player_temp_y#=0
Global jump
Global jumptimer#
Const rauf=200,runter=208,rechts=205,links=203,space=57
Global anzahl=0
Global info.appel

Type appel
Field appel_x
Field appel_y
End Type




Dim map(19,14)

Data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
Data 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 1,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0
Data 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0
Data 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0
Data 1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0
Data 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1



For y=0 To 14
For x=0 To 19
Read map(x,y)
Next
Next

.appel_level1
Data 25,64
Data 32,64
Data 64,64
Data 96,64
Data 128,64
Data 160,64
Data 448,64
Data 480,64
Data 512,64
Data 544,64
Data 576,64
Data 224,192
Data 256,192
Data 288,192
Data 320,192
Data 352,192
Data 32,320
Data 64,320
Data 96,320
Data 128,320
Data 160,320
Data 448,320
Data 480,320
Data 512,320
Data 544,320
Data 576,320

For i=1 To anzahl
info.appel=New appel
Read x,y
info\appel_x=x
info\appel_y=y
Next



Repeat
Cls
WaitTimer frametimer

Drawmap()
Movejeff()
jumpi()
DrawPlayer()
DrawImage jeff,player_pos_x,player_pos_y
drawappel()



Flip
Until KeyHit(1)
End

;________________________________________________Drawmap______________________________________

Function Drawmap()
For y=0 To 14
For x=0 To 19
If map(x,y)=1 Then
DrawImage tile,x*32,y*32




EndIf
Next
Next
End Function

;___________________________________________movejeff__________________________________________

Function Movejeff()         ;Function um die Figur zu bewegen
If KeyDown(links) Then        ;Falls links gedrückt wird
If map(player_pos_x /32,(player_pos_y +16) /32)=0 Then
;wenn Spielerposition / 32, weil die Tiles 32 * 32 groß sind
;PosY +16 um die Mitte zu bestimmen
;If Bedinung wird nur ausgeführt, wenn kein Tile neben der Figur ist.
player_pos_x = player_pos_x -4      ; X-Position -4
If player_pos_x =< 0 Then player_pos_x = 1       ;Rand überprüfen
EndIf
ElseIf KeyDown(rechts) Then
If map((player_pos_x +32) /32,(player_pos_y +16) /32)=0 Then
Player_pos_x = Player_pos_x +4
If player_pos_x => 608 Then player_pos_x = 607
EndIf
EndIf
End Function
   ;ElseIf KeyDown(rauf) Then
   ;   If map((player_pos_x +16) /32,player_pos_y /32)=0 Then
   ;      Player_pos_y = Player_pos_y -4
   ;      If player_pos_y =< 0 Then player_pos_y = 1
   ;   EndIf      
   ;ElseIf KeyDown(runter) Then
   ;   If map((player_pos_x +16) /32,(player_pos_y +32) /32)=0 Then
   ;      Player_pos_y = Player_pos_y +4
   ;      If player_pos_y => 448 Then player_pos_y = 447
   ;   EndIf      
   ;EndIf

;____________________________________________jumpi____________________________________

Function jumpi()
;Überprüft ob Taste Space gedrückt wurde
   If KeyDown (space) Then
      If jump = False   ;wenn Variable jump = 0
         jump = True         ;auf True setzen
         Player_temp_y = 7    ;Die Sprunghöhe setzen
      EndIf
   EndIf
   
   ;falls Player nach oben gegen Mauer springt, fällt er zurück
   If map((Player_pos_x +16) /32,Player_pos_y /32)=1 And jump = True Then
      jump = False
      Player_pos_y = Player_pos_y +1   ;muß um eins tiefer gesetzt werden, da sonst die Figur hängen bleibt
   EndIf
   
   
   ;die eigentliche Sprungroutine
   If jump = True Then
      Player_temp_y = Player_temp_y -0.33    ;Die Temporäre Variable verringern
      Player_pos_y = Player_pos_y - Player_temp_y ; Position Y durch TempY veringern
      ; Solange Temp_y eine positive Zahl ist, bewegt sich unsere Figur hoch,
      ; andernfalls runter.
                                                                          
      If Player_temp_y =< 0 Then   ; Sobald Temp_y den Wert 0 erreicht hat
         If map((Player_pos_x +16) /32,(Player_pos_y +32) /32)=1 Then   
             ;überprüft, ob sich ein Tile unter dem Spieler befindet
            jump = 0
            temp = Player_pos_y /32   ;\
            Player_pos_y = temp *32   ;/ Setzt die genaue Y-Position, falls die Figur mitten im Tile steht
         EndIf
      EndIf
    EndIf
   
   ;Gravity
   If jump = False  Then
      If map((Player_pos_x +16) /32,(Player_pos_y +32) /32)=0 Then   ; Sollte kein Tile unter dem Spieler sein
         jump = True       ; Sprungfunktion weiter ausführen
         Player_temp_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 Player_pos_y =< 0 Then
      Player_pos_y = 1
      jump = True
      Player_Temp_y = 0
   EndIf
   
   If Player_pos_y => 448 Then
      Player_pos_y = 447
      jump = False
   EndIf
      
End Function
   


Function DrawPlayer()
   DrawImage jeff, Player_pos_x, Player_pos_y
End Function

;___________________________________________drawappel___________________________________

Function drawappel()

For info.appel=Each  appel
DrawImage appel,info\appel_x,info\appel_y
Next
End Function


Ich bin für jede Hilfe dankbar
mfg felix

~Editiert~
Code-Tags eingefügt.
"DER GRÖßTE FEIND IST IN DEN EIGENEN REIHEN" (Trygonia-Xen's Quest)

AZUON-Beyond the dark life (2%)
SOULS OF DESTINY (23%)

Ironstorm

Erstklassiger Contest-Veranstalter

BeitragMo, März 27, 2006 16:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich weis nicht obs daran liegt, aber musst du nicht für Jedes Feld (Also jeden Apfel) ein einzelnes Bild laden? Sprich so:
Code: [AUSKLAPPEN]

Type appel
Field appel_pic
Field appel_x
Field appel_y
End Type

Code: [AUSKLAPPEN]

For i=1 To anzahl
info.appel=New appel
Read x,y
info\appel_pic=Loadimage("appel.png")
info\appel_x=x
info\appel_y=y
Next


Sowie ist mir gerade aufgefallen ist die anzahl=0. Sollte die net höher als 1 sein???

MFG
Blitzmaker

BladeRunner

Moderator

BeitragMo, März 27, 2006 16:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein, ein image reicht völlig, sonst müllt er sich ja restlos den Speicher zu.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Cent

BeitragMo, März 27, 2006 16:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich fange auch erst neu an aber ich weiß das man Farbtiefe und Format eingeben muss also so:
Code: [AUSKLAPPEN]
Graphics 640,480,Farbtiefe,Format

Format=1=Vollbild 2=Fenster
User posted image

BladeRunner

Moderator

BeitragMo, März 27, 2006 16:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Nope, müssen muss man das nicht Cent. Es zeugt zwar von gutem Stil es zu tun, aber es geht auch ohne Wink
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Cent

BeitragMo, März 27, 2006 16:54
Antworten mit Zitat
Benutzer-Profile anzeigen
achso
User posted image
 

Gerhard

BeitragMo, März 27, 2006 19:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie Blitzmaker schon sagt: anzahl = 0

Smokie

BeitragMo, März 27, 2006 21:02
Antworten mit Zitat
Benutzer-Profile anzeigen
KAnn es vielleicht sein,dass die Äpfel nicht Global sind. Füge den Code von der Function doch ma in die Schleife direkt ein. K.A. ob das das Prob ist.

Gruß
Matze
M-Soft Studios Mit selbst gemachtem Forum!!!
Unbequem lebt's sich schwer.
Musik macht erst Spaß, wenn man sie mit 2,8 facher Geschwindigkeit hört
Zuletzt bearbeitet von Smokie am Fr Jan 01, 1888 51:58 PM, insgesamt 1000-mal bearbeitet

Ironstorm

Erstklassiger Contest-Veranstalter

BeitragMo, März 27, 2006 21:53
Antworten mit Zitat
Benutzer-Profile anzeigen
BladeRunner hat Folgendes geschrieben:
Nein, ein image reicht völlig, sonst müllt er sich ja restlos den Speicher zu.


*Aufn Kopf hau*

Upps Embarassed

Ich war noch bei Blitz3D bei dem man jedes Objekt neu laden muss.^^

Solche Leichtsinnsfehler passieren mir öfters. Srry für die falsche Aussage.

Blitzmaker

BladeRunner

Moderator

BeitragDi, März 28, 2006 13:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Ich war noch bei Blitz3D bei dem man jedes Objekt neu laden muss.


Nicht wirklich.
Siehe ql:copyentity und ql:copymesh .
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Ironstorm

Erstklassiger Contest-Veranstalter

BeitragDi, März 28, 2006 14:44
Antworten mit Zitat
Benutzer-Profile anzeigen
-.-

Is ok, ich habs kapiert^^
 

Gerhard

BeitragDi, März 28, 2006 19:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Liegt's jetzt an anzahl=0 oder interessiert das keinen mehr?

Surat

BeitragDi, März 28, 2006 20:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi! Smile
Danke für die Antworten.
Ich hab den Fehler jetzt gefunden.
Es liegt nicht bei anzahl=0!

Es liegt daran, dass ich die anzahl gar nicht eingelesen habe!!!
(erste zeile, datafeld)
"DER GRÖßTE FEIND IST IN DEN EIGENEN REIHEN" (Trygonia-Xen's Quest)

AZUON-Beyond the dark life (2%)
SOULS OF DESTINY (23%)

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group