Code: Alles auswählen
Procedure ScreenWidth()
!EXTRN _PB_Screen_Width
!MOV Eax,[_PB_Screen_Width]
ProcedureReturn
EndProcedure
Procedure ScreenHeight()
!EXTRN _PB_Screen_Height
!MOV Eax,[_PB_Screen_Height]
ProcedureReturn
EndProcedure
Procedure TileSprite(Sprite,X=0,Y=0)
Protected Width, Height, CX, CY, IX, IY
Width = SpriteWidth(Sprite)
Height = SpriteHeight(Sprite)
CX = ScreenWidth() / Width
CY = ScreenHeight() / Height
If ScreenWidth() % Width : CX + 1 : EndIf
If ScreenWidth() % Height : CY + 1 : EndIf
For IX = -1 To CX
For IY = -1 To CY
DisplaySprite(Sprite,(IX * Width) + (X % Width),(IY * Height) + (Y % Height))
Next
Next
EndProcedure
; -----------------------------------------------------------------------
InitSprite() : InitKeyboard()
OpenWindow(0,0,0,640,480,"TileSprite",#PB_Window_SystemMenu | #PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(0),0,0,640,480,0,0,0)
CreateSprite(0,64,64)
StartDrawing(SpriteOutput(0))
For i=0 To 31 : Box(0,i,64,1,255 - (i * 100) / 31) : Next
For i=0 To 31 : Box(0,i+32,64,1,140 - (i * 70) / 31) : Next
DrawingMode(4)
Box(0,63,64,1,$404060) : Box(63,0,1,64,$404060)
StopDrawing()
; -----------------------------------------------------------------------
Repeat
EventID = WindowEvent()
ClearScreen(0)
ExamineKeyboard()
SPRX + 1 : SPRY + 1
TileSprite(0,SPRX,SPRY)
FlipBuffers()
Until KeyboardPushed(1) Or EventID = 16