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.
anfänger fragen
ok meine nächste frage 
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()

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 -----
124 ist 1. linie procedure collide()
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 -----

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!?

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!?
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
coole sache... sogar n auto animations ding dabei 
nur funzt das aus irgendeinem grund nich bei mir.
ich mache
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
)

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 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

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....
ausserdem hab ich den code der canadaflagge mal umgestrickt um mit dem layer zu arbeiten... da gehts ohne probleme
//////////////////////
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?!
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 -----
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?!