Seite 2 von 3

Verfasst: 18.04.2005 16:01
von diGGa
ok bin durcheinander gekommen o_O meinte das hier
Und so viele PureBasic engines kenn ich jetzt nun nicht. (Um genau zu sein nur die Lethal Engine 2.0 die jetzt auch dieses PureBreakers nutzt). Ansonsten sind es bisher nur ein paar kleinere 2D Tile-Engines gewesen, würd ich mal sagen.

Verfasst: 18.04.2005 20:03
von diGGa
ok meine nächste frage ;)

Code: Alles auswählen

; ###########################
;
; Projekt Titel: CITY GAME
; Autor: Jaap 'diGGa' Groeneveld
;
; ###########################

Window = OpenWindow(#PB_Any, 10, 10, 320, 240, #PB_Window_SystemMenu, "CITY GAME")
OpenWindowedScreen(WindowID(),0,0,320,240, 1,0,0)

;{/ ----- Initialisieren -----
InitSprite()
InitKeyboard()
;} ----- Initialisieren -----

;{/ ----- Variablen -----
; ----- Variablen Deklarieren -----
Global MapX.w, MapY.w
Global PlayerMapX.w, PlayerMapY.w
Global ColUp.w, ColDown.w, ColLeft.w, ColRight.w

; ----- Variablen Laden -----
MapX = 10
MapY = 8
Dim layer1.w(MapX,MapY)
Dim layer2.w(MapX,MapY)
Dim colmap.w(MapX, MapY)
;} ----- Variablen Ende -----

;{/ ----- Strukturen -----
Structure TPlayer
	x.f
    y.f
    HP.b
	Speed.f
    SSpeed.f
	State.s
EndStructure

Global Player.TPlayer
Player\x = 2*32
Player\y = 5*32
Player\HP = 100
Player\SSpeed = 1
Player\Speed = Player\SSpeed
Player\State = "up"
;} ----- Strukturen Ende -----

;{/ ----- Prozeduren -----
Procedure LoadGameVars()
	Restore data_layer1
	For y = 0 To MapY - 1
		For x = 0 To MapX - 1
			Read layer1(x,y)
		Next
	Next
	
	Restore data_layer2
	For y = 0 To MapY - 1
		For x = 0 To MapX - 1
			Read layer2(x,y)
		Next
	Next

	Restore data_colmap
	For y = 0 To MapY - 1
		For x = 0 To MapX - 1
			Read colmap(x,y)
		Next
	Next

	ColUp = 0
	ColDown = 0
	ColLeft = 0
	ColRight = 0
EndProcedure
Procedure DrawLayer1()
	For y = 0 To MapY - 1
		For x = 0 To MapX - 1
			If layer1(x,y) <> 9
				DisplayTransparentSprite(0, x*32, y*32)
			EndIf
		Next
	Next
EndProcedure
Procedure DrawLayer2()
	For y = 0 To MapY - 1
		For x = 0 To MapX - 1
			If layer2(x,y) <> 99
				DisplayTransparentSprite(1, x*32, y*32)
			EndIf
		Next
	Next
EndProcedure
Procedure DrawPlayer()
	If KeyboardPushed(200) And ColUp = 0	;up
		Player\y = Player\y - Player\Speed
		Player\State = "up"
	ElseIf KeyboardPushed(208) And ColDown = 0	;down
		Player\y = Player\y + Player\Speed
		Player\State = "down"
	ElseIf KeyboardPushed(203) And ColLeft = 0	;left
		Player\x = Player\x - Player\Speed
		Player\State = "left"
	ElseIf KeyboardPushed(205) And ColRight = 0 	;right
		Player\x = Player\x + Player\Speed
		Player\State = "right"
	EndIf

	If Player\State = "up" 
        DisplayTransparentSprite(2,Player\x, Player\y)
    EndIf
	If Player\State = "down" 
        DisplayTransparentSprite(3,Player\x, Player\y)
    EndIf
	If Player\State = "left" 
        DisplayTransparentSprite(4,Player\x, Player\y)
    EndIf        
	If Player\State = "right" 
        DisplayTransparentSprite(5,Player\x, Player\y)
    EndIf        
EndProcedure
Procedure collide()
ColUp=colmap((Player\x+12)/32,(Player\y-2)/32)  ; Oben
ColDown=colmap((Player\x+12)/32,(Player\y+16)/32) ; Unten

ColLeft=colmap((Player\x-12)/32,(Player\y+14)/32)      ; Links 
ColRight=colmap((Player\x+12)/32,(Player\y+14)/32) ; Rechts 

ColMiddle=colmap((Player\x+16)/32,(Player\y+16)/32) ; Mitte
EndProcedure
;} ----- Prozeduren Ende -----

;{/ ----- Start Prozeduren -----
LoadGameVars()
;} ----- Start Prozeduren Ende -----


;{/ ----- Mediendaten Laden -----
UsePNGImageDecoder() 
LoadSprite(0,"graphics/layer1.png")
LoadSprite(1,"graphics/machine.png") : TransparentSpriteColor(1,255,0,255)
LoadSprite(2,"graphics/charUP.png") : TransparentSpriteColor(2,255,0,255)
LoadSprite(3,"graphics/charDOWN.png") : TransparentSpriteColor(3,255,0,255)
LoadSprite(4,"graphics/charLEFT.png") : TransparentSpriteColor(4,255,0,255)
LoadSprite(5,"graphics/charRIGHT.png") : TransparentSpriteColor(5,255,0,255)
;} ----- Mediendaten Laden Ende -----

;{/ ----- Hauptschleife -----
Repeat
    StartDrawing(WindowOutput())
	ClearScreen(0,0,0) 
	StopDrawing()
    ExamineKeyboard()
	DrawLayer1()
	DrawLayer2()
	DrawPlayer()

	collide()

	FlipBuffers()
Until KeyboardReleased(1)
;} ----- Hauptschleife Ende -----
End


;{/ ----- Datenfelder -----
DataSection
data_layer1:
Data.w 000,001,001,001,000,000,000,000,000,000
Data.w 000,001,001,001,000,000,000,000,000,000
Data.w 000,001,001,001,000,000,000,000,000,000
Data.w 000,000,000,000,000,000,000,000,000,000
Data.w 000,000,000,000,000,000,000,000,000,000
Data.w 000,000,000,000,000,000,000,000,000,000
Data.w 000,000,000,000,000,000,000,000,000,000
Data.w 000,000,000,000,000,000,000,000,000,000

data_layer2:
Data.w 099,099,099,099,099,099,099,099,099,099
Data.w 099,099,000,001,002,003,004,005,099,099
Data.w 099,099,006,007,008,009,010,011,099,099
Data.w 099,099,012,013,014,015,016,017,099,099
Data.w 099,099,018,019,020,021,022,023,099,099
Data.w 099,099,099,099,099,099,099,099,099,099
Data.w 099,099,099,099,099,099,099,099,099,099
Data.w 099,099,099,099,099,099,099,099,099,099

data_colmap:
Data.w 000,000,000,000,000,000,000,000,000,000
Data.w 000,000,000,000,000,000,000,000,000,000
Data.w 000,000,001,001,001,001,001,001,000,000
Data.w 000,000,001,001,001,001,001,001,000,000
Data.w 000,000,001,001,001,001,001,001,000,000
Data.w 000,000,000,000,000,000,000,000,000,000
Data.w 000,000,000,000,000,000,000,000,000,000
Data.w 000,000,000,000,000,000,000,000,000,000
EndDataSection
;} ----- Datenfelder -----
der großteil is nich wichtig. ich hab in bb angefangen gehabt ne art rpg zu schreiben. natürlich nur zr übung fertig wirds eh nie^^ naja wie dem auch sei: ich hab versucht den bisherigen code in pb zu konvertieren aber ich scheiter bei den datenfeldern. in line 124 sagt er mir das er einen integer erwartet und float/string nicht erlaubt ist. aber ansich soll das ganze nur 0/1 wiedergeben jeh nach dem was im datenfeld an der stelle steht. wodran kann das liegen?(wahrscheinlich n simpler umdenk fehler)

124 ist 1. linie procedure collide()

Verfasst: 19.04.2005 14:49
von 125

Code: Alles auswählen

; ########################### 
; 
; Projekt Titel: CITY GAME 
; Autor: Jaap 'diGGa' Groeneveld 
; 
; ########################### 

Window = OpenWindow(#PB_Any, 10, 10, 320, 240, #PB_Window_SystemMenu, "CITY GAME") 

;{/ ----- Initialisieren ----- 
InitSprite() 
InitKeyboard() 
;} ----- Initialisieren ----- 
OpenWindowedScreen(WindowID(),0,0,320,240, 1,0,0) 
;{/ ----- Variablen ----- 
; ----- Variablen Deklarieren ----- 
Global MapX.w, MapY.w 
Global PlayerMapX.w, PlayerMapY.w 
Global ColUp.w, ColDown.w, ColLeft.w, ColRight.w 

; ----- Variablen Laden ----- 
MapX = 10 
MapY = 8 
Dim layer1.w(MapX,MapY) 
Dim layer2.w(MapX,MapY) 
Dim colmap.w(MapX, MapY) 
;} ----- Variablen Ende ----- 

;{/ ----- Strukturen ----- 
Structure TPlayer 
   x.f 
    y.f 
    HP.b 
   Speed.f 
    SSpeed.f 
   State.s 
EndStructure 

Global Player.TPlayer 
Player\x = 2*32 
Player\y = 5*32 
Player\HP = 100 
Player\SSpeed = 1 
Player\Speed = Player\SSpeed 
Player\State = "up" 
;} ----- Strukturen Ende ----- 

;{/ ----- Prozeduren ----- 
Procedure LoadGameVars() 
   Restore data_layer1 
   For y = 0 To MapY - 1 
      For x = 0 To MapX - 1 
         Read layer1(x,y) 
      Next 
   Next 
    
   Restore data_layer2 
   For y = 0 To MapY - 1 
      For x = 0 To MapX - 1 
         Read layer2(x,y) 
      Next 
   Next 

   Restore data_colmap 
   For y = 0 To MapY - 1 
      For x = 0 To MapX - 1 
         Read colmap(x,y) 
      Next 
   Next 

   ColUp = 0 
   ColDown = 0 
   ColLeft = 0 
   ColRight = 0 
EndProcedure 
Procedure DrawLayer1() 
   For y = 0 To MapY - 1 
      For x = 0 To MapX - 1 
         If layer1(x,y) <> 9 
            DisplayTransparentSprite(0, x*32, y*32) 
         EndIf 
      Next 
   Next 
EndProcedure 
Procedure DrawLayer2() 
   For y = 0 To MapY - 1 
      For x = 0 To MapX - 1 
         If layer2(x,y) <> 99 
            DisplayTransparentSprite(1, x*32, y*32) 
         EndIf 
      Next 
   Next 
EndProcedure 
Procedure DrawPlayer() 
   If KeyboardPushed(200) And ColUp = 0   ;up 
      Player\y = Player\y - Player\Speed 
      Player\State = "up" 
   ElseIf KeyboardPushed(208) And ColDown = 0   ;down 
      Player\y = Player\y + Player\Speed 
      Player\State = "down" 
   ElseIf KeyboardPushed(203) And ColLeft = 0   ;left 
      Player\x = Player\x - Player\Speed 
      Player\State = "left" 
   ElseIf KeyboardPushed(205) And ColRight = 0    ;right 
      Player\x = Player\x + Player\Speed 
      Player\State = "right" 
   EndIf 

   If Player\State = "up" 
        DisplayTransparentSprite(2,Player\x, Player\y) 
    EndIf 
   If Player\State = "down" 
        DisplayTransparentSprite(3,Player\x, Player\y) 
    EndIf 
   If Player\State = "left" 
        DisplayTransparentSprite(4,Player\x, Player\y) 
    EndIf        
   If Player\State = "right" 
        DisplayTransparentSprite(5,Player\x, Player\y) 
    EndIf        
EndProcedure 
Procedure collide() 
Param1.l=(Player\x+12)/32
Param2.l=(Player\y-2)/32
ColUp=colmap(Param1,Param2)  ; Oben 
Param1.l=(Player\x+12)/32
Param2.l=(Player\y+16)/32
ColDown=colmap(Param1,Param2) ; Unten 
Param1.l=(Player\x-12)/32
Param2.l=(Player\y+14)/32
ColLeft=colmap(Param1,Param2)      ; Links 
Param1.l=(Player\x+12)/32
Param2.l=(Player\y+14)/32
ColRight=colmap(Param1,Param2) ; Rechts 
Param1.l=(Player\x+16)/32
Param2.l=(Player\y+16)/32
ColMiddle=colmap(Param1,Param2) ; Mitte 
EndProcedure 
;} ----- Prozeduren Ende ----- 

;{/ ----- Start Prozeduren ----- 
LoadGameVars() 
;} ----- Start Prozeduren Ende ----- 


;{/ ----- Mediendaten Laden ----- 
UsePNGImageDecoder() 
LoadSprite(0,"graphics/layer1.png") 
LoadSprite(1,"graphics/machine.png") : TransparentSpriteColor(1,255,0,255) 
LoadSprite(2,"graphics/charUP.png") : TransparentSpriteColor(2,255,0,255) 
LoadSprite(3,"graphics/charDOWN.png") : TransparentSpriteColor(3,255,0,255) 
LoadSprite(4,"graphics/charLEFT.png") : TransparentSpriteColor(4,255,0,255) 
LoadSprite(5,"graphics/charRIGHT.png") : TransparentSpriteColor(5,255,0,255) 
;} ----- Mediendaten Laden Ende ----- 

;{/ ----- Hauptschleife ----- 
Repeat 
    StartDrawing(WindowOutput()) 
   ClearScreen(0,0,0) 
   StopDrawing() 
    ExamineKeyboard() 
   DrawLayer1() 
   DrawLayer2() 
   DrawPlayer() 

   collide() 

   FlipBuffers() 
Until KeyboardReleased(1) 
;} ----- Hauptschleife Ende ----- 
End 


;{/ ----- Datenfelder ----- 
DataSection 
data_layer1: 
Data.w 000,001,001,001,000,000,000,000,000,000 
Data.w 000,001,001,001,000,000,000,000,000,000 
Data.w 000,001,001,001,000,000,000,000,000,000 
Data.w 000,000,000,000,000,000,000,000,000,000 
Data.w 000,000,000,000,000,000,000,000,000,000 
Data.w 000,000,000,000,000,000,000,000,000,000 
Data.w 000,000,000,000,000,000,000,000,000,000 
Data.w 000,000,000,000,000,000,000,000,000,000 

data_layer2: 
Data.w 099,099,099,099,099,099,099,099,099,099 
Data.w 099,099,000,001,002,003,004,005,099,099 
Data.w 099,099,006,007,008,009,010,011,099,099 
Data.w 099,099,012,013,014,015,016,017,099,099 
Data.w 099,099,018,019,020,021,022,023,099,099 
Data.w 099,099,099,099,099,099,099,099,099,099 
Data.w 099,099,099,099,099,099,099,099,099,099 
Data.w 099,099,099,099,099,099,099,099,099,099 

data_colmap: 
Data.w 000,000,000,000,000,000,000,000,000,000 
Data.w 000,000,000,000,000,000,000,000,000,000 
Data.w 000,000,001,001,001,001,001,001,000,000 
Data.w 000,000,001,001,001,001,001,001,000,000 
Data.w 000,000,001,001,001,001,001,001,000,000 
Data.w 000,000,000,000,000,000,000,000,000,000 
Data.w 000,000,000,000,000,000,000,000,000,000 
Data.w 000,000,000,000,000,000,000,000,000,000 
EndDataSection 
;} ----- Datenfelder -----
So müsstes gehn PB Dachte wegen dem "/" das eine Float rauskommen könnte :)

Verfasst: 19.04.2005 15:22
von diGGa
juhu geht auf :) danke

noch ne frage hinterher: soweit läuft es nun. nur hab ich jetz das problem das ich das ganze als frame/tileset gespeiochert habe. bei bb habe ich das ganze als animation geladen und konnte bequem per frame nummer drauf zu greifen. ging auch flott. bei pb muss ich das ja vorher mit clipsprite auswählen. ist das eine langsame routine? weil wenns schnell ist pack ichs direkt in die mal routine ansonsten schneid ichs am anfang mit clipsprite aus und erstell n extra sprite mit createsprite... is aber auch doof^^

die frage ist: is clipsprite langsam!?

Verfasst: 19.04.2005 17:19
von 125
Guck dir Mal bei den PureTools(userlib): http://www.purearea.net/pb/download/use ... _I_021.zip den Befehl AnimSprite an:) ambesten: Examples/PuretoolsI/AnimSprite/Kanada

Verfasst: 19.04.2005 18:01
von diGGa
coole sache... sogar n auto animations ding dabei ;)
nur funzt das aus irgendeinem grund nich bei mir.

ich mache

Code: Alles auswählen

LoadSprite(0,"graphics/layer1.png",0) : CreateAnimSprite(AnimSprite_0.AnimSprite,0,32,32)
[code]
und
For y = 0 To MapY - 1
For x = 0 To MapX - 1
DisplayAnimSprite(AnimSprite_0,x*32,y*32)
Next
Next
[/code]

das fenster geht nur auf und sofort wieder zu. wenn ich die befehle ausklammer dann belibt das fenster offen und alles bleibt (abgesehen davon das ich keine tiles hab ;))

Verfasst: 19.04.2005 18:14
von 125
hast du vorm Loadsprite ein:
UsePNGImageDecoder()
stehen?

Verfasst: 19.04.2005 18:16
von diGGa
ja, sonst würde er die anderen sprites ja auch nich laden können. eigentlich wollte ich das nich machen, is so unübersichtlich, aber hier nochmal der ganze code....

Code: Alles auswählen

; ###########################
;
; Projekt Titel: CITY GAME
; Autor: Jaap 'diGGa' Groeneveld
;
; ###########################
;{/ ----- Initialisieren -----
InitSprite()
InitKeyboard()

OpenWindow(#PB_Any, 10, 10, 320, 240, #PB_Window_ScreenCentered|#PB_Window_SizeGadget|#PB_Window_SystemMenu|#PB_Window_MaximizeGadget|#PB_Window_MinimizeGadget, "CITY GAME")
OpenWindowedScreen(WindowID(),0,0,320,240, 1,0,0)
;} ----- Initialisieren -----


;{/ ----- Variablen -----
; ----- Variablen Deklarieren -----
Global MapX.w, MapY.w
Global PlayerMapX.w, PlayerMapY.w
Global ColUp.w, ColDown.w, ColLeft.w, ColRight.w

; ----- Variablen Laden -----
MapX = 10
MapY = 8
Dim GroundLayer.w(MapX,MapY)
Dim ObjectsLayer.w(MapX,MapY)
Dim CollisionsLayer.w(MapX, MapY)
;} ----- Variablen Ende -----

;{/ ----- Strukturen -----
Structure TPlayer
	x.f
    y.f
    HP.b
	Speed.f
    SSpeed.f
	State.s
EndStructure

Global Player.TPlayer
Player\x = 2*32
Player\y = 5*32
Player\HP = 100
Player\SSpeed = 1
Player\Speed = Player\SSpeed
Player\State = "up"
;} ----- Strukturen Ende -----

;{/ ----- Prozeduren -----
Procedure LoadGameVars()
	Restore data_layer1
	For y = 0 To MapY - 1
		For x = 0 To MapX - 1
			Read GroundLayer(x,y)
		Next
	Next
	
	Restore data_layer2
	For y = 0 To MapY - 1
		For x = 0 To MapX - 1
			Read ObjectsLayer(x,y)
		Next
	Next

	Restore data_colmap
	For y = 0 To MapY - 1
		For x = 0 To MapX - 1
			Read CollisionsLayer(x,y)
		Next
	Next

	ColUp = 0
	ColDown = 0
	ColLeft = 0
	ColRight = 0
EndProcedure
Procedure DrawGround()
	For y = 0 To MapY - 1
		For x = 0 To MapX - 1
				DisplayAnimSprite(AnimSprite_0,x*32,y*32)
		Next
	Next
EndProcedure
Procedure DrawObjects()
	For y = 0 To MapY - 1
		For x = 0 To MapX - 1
			If ObjectsLayer(x,y) = 0
				ClipSprite(1, ObjectsLayer(x,y)*32, (ObjectsLayer(x,y)*32)/6, 32, 32)             
                DisplayTransparentSprite(1, x*32, y*32)
			EndIf
		Next
	Next
EndProcedure
Procedure DrawPlayer()
	If KeyboardPushed(200) And ColUp = 0	;up
		Player\y - Player\Speed
		Player\State = "up"
	ElseIf KeyboardPushed(208) And ColDown = 0	;down
		Player\y + Player\Speed
		Player\State = "down"
	ElseIf KeyboardPushed(203) And ColLeft = 0	;left
		Player\x - Player\Speed
		Player\State = "left"
	ElseIf KeyboardPushed(205) And ColRight = 0 	;right
		Player\x + Player\Speed
		Player\State = "right"
	EndIf

	If Player\State = "up" 
        DisplayTransparentSprite(2,Player\x, Player\y)
    EndIf
	If Player\State = "down" 
        DisplayTransparentSprite(3,Player\x, Player\y)
    EndIf
	If Player\State = "left" 
        DisplayTransparentSprite(4,Player\x, Player\y)
    EndIf        
	If Player\State = "right" 
        DisplayTransparentSprite(5,Player\x, Player\y)
    EndIf        
EndProcedure
Procedure DoCollisions()
Param1.l = (Player\x+12)/32 
Param2.l = (Player\y-2)/32 
ColUp = CollisionsLayer(Param1,Param2)  ; Oben 

Param1.l = (Player\x+12)/32 
Param2.l = (Player\y+16)/32 
ColDown = CollisionsLayer(Param1,Param2) ; Unten 

Param1.l = (Player\x-12)/32 
Param2.l = (Player\y+14)/32 
ColLeft = CollisionsLayer(Param1,Param2)      ; Links 

Param1.l = (Player\x+12)/32 
Param2.l = (Player\y+14)/32 
ColRight = CollisionsLayer(Param1,Param2) ; Rechts 

Param1.l = (Player\x+16)/32 
Param2.l = (Player\y+16)/32 
ColMiddle = CollisionsLayer(Param1,Param2) ; Mitte
EndProcedure
;} ----- Prozeduren Ende -----

;{/ ----- Start Prozeduren -----
LoadGameVars()
;} ----- Start Prozeduren Ende -----


;{/ ----- Mediendaten Laden -----
UsePNGImageDecoder() 
LoadSprite(0,"graphics/layer1.png",0) : CreateAnimSprite(AnimSprite_0.AnimSprite,0,32,32)
LoadSprite(1,"graphics/machine.png",0) : TransparentSpriteColor(1,255,0,255)
LoadSprite(2,"graphics/charUP.png",0) : TransparentSpriteColor(2,255,0,255)
LoadSprite(3,"graphics/charDOWN.png",0) : TransparentSpriteColor(3,255,0,255)
LoadSprite(4,"graphics/charLEFT.png",0) : TransparentSpriteColor(4,255,0,255)
LoadSprite(5,"graphics/charRIGHT.png",0) : TransparentSpriteColor(5,255,0,255)
;} ----- Mediendaten Laden Ende -----

;{/ ----- Hauptschleife -----
Repeat 
  Select WindowEvent() 
    Case #PB_Event_CloseWindow 
      Break 
    Case 0 
  EndSelect 
    ExamineKeyboard() 
   
   
	DrawGround()
	DrawObjects()
	DrawPlayer()

	DoCollisions()
    FlipBuffers()
Until KeyboardPushed(1)
;} ----- Hauptschleife Ende -----


;{/ ----- Datenfelder -----
DataSection
data_layer1:
Data.w 000,000,000,000,000,000,000,000,000,000
Data.w 000,000,000,000,000,000,000,000,000,000
Data.w 000,000,000,000,000,000,000,000,000,000
Data.w 000,000,000,000,000,000,000,000,000,000
Data.w 000,000,000,000,000,000,000,000,000,000
Data.w 000,000,000,000,000,000,000,000,000,000
Data.w 000,000,000,000,000,000,000,000,000,000
Data.w 000,000,000,000,000,000,000,000,000,000

data_layer2:
Data.w 099,099,099,099,099,099,099,099,099,099
Data.w 099,099,000,001,002,003,004,005,099,099
Data.w 099,099,006,007,008,009,010,011,099,099
Data.w 099,099,012,013,014,015,016,017,099,099
Data.w 099,099,018,019,020,021,022,023,099,099
Data.w 099,099,099,099,099,099,099,099,099,099
Data.w 099,099,099,099,099,099,099,099,099,099
Data.w 099,099,099,099,099,099,099,099,099,099

data_colmap:
Data.w 000,000,000,000,000,000,000,000,000,000
Data.w 000,000,000,000,000,000,000,000,000,000
Data.w 000,000,001,001,001,001,001,001,000,000
Data.w 000,000,001,001,001,001,001,001,000,000
Data.w 000,000,001,001,001,001,001,001,000,000
Data.w 000,000,000,000,000,000,000,000,000,000
Data.w 000,000,000,000,000,000,000,000,000,000
Data.w 000,000,000,000,000,000,000,000,000,000
EndDataSection
;} ----- Datenfelder -----
ausserdem hab ich den code der canadaflagge mal umgestrickt um mit dem layer zu arbeiten... da gehts ohne probleme

Code: Alles auswählen

InitSprite()
InitKeyboard()

If OpenWindow(#PB_Any, 10, 10, 800, 600, #PB_Window_ScreenCentered|#PB_Window_SizeGadget|#PB_Window_SystemMenu|#PB_Window_MaximizeGadget|#PB_Window_MinimizeGadget, "CITY GAME")
OpenWindowedScreen(WindowID(),0,0,800,600, 1,0,0)
;SetFrameRate(15)

UsePNGImageDecoder()
   LoadSprite(0,"layer1.png",0)
   CreateAnimSprite(Flag.AnimSprite,0,32,32,1000)
    SetAnimDirection(Flag,3)
   Repeat
     FlipBuffers()
       ClearScreen(0,0,0)
       DisplayAnimSprite(Flag,200,200)
     ExamineKeyboard()
   Until KeyboardPushed(#PB_Key_Escape)
EndIf

//////////////////////
edit

ok hab den fehler... man kann die dinger nicht in procedures nutzen... ne idee wie ich die als global machen könnte? snd ja types.... oder ich nehm gosubs?!

Verfasst: 19.04.2005 18:33
von 125
mach mal an den Anfang des Codes:
Global AnimSprite_0.AnimSprite
und bei CreateAnimSprite mach das .AnimSprite weg.
Er stürzt ab weil in der Prozedur Drawground Animsprite keine Structur hat und 0 ist deswegen musst du die Variable Globalisiern -> Auch in Prozeduren lesbar.

Verfasst: 19.04.2005 18:40
von diGGa
ajo ;) hätt ich auch selber drauf kommen können... hatte aber nur "global animsprite_0" versucht ;) dankeschön