Seite 1 von 1

TileSprite

Verfasst: 24.07.2007 22:55
von Fluid Byte
Ich war gerade dabei ein altes BlitzBasic Spiel nach PB zu portieren und das ist mir der Befehl TileBlock / TileImage aufgefallen. Ich finde diesen Befehl sehr nützlich deshalb hier mal eine PB Version.

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

Verfasst: 24.07.2007 23:01
von Kaeru Gaman
ja schick, und muss ich jetzt erst Blitz kaufen, um eine Beschreibung des befehls zu erhalten?

ein bißchen doku darf ruhig sein...

Verfasst: 24.07.2007 23:17
von Fluid Byte
Hehe, maul nicht! Ich bin schreibfaul, das weisst du. Aber kann ja wenigstens den Text der BlitzDoku posten... :freak:
Use this to tile an entire or portion of the screen with a single repetative image.

Verfasst: 25.07.2007 17:27
von legion
Super Sache ! :D
Beim Thema Grafik sind von dir immer gute Postings zu erwarten !

Lg. Legion