Flip Sprite Old school ;o)
Publié : sam. 12/oct./2019 23:12
pas de bla bla,
pas d'assembleur
probablement Multiplateforme
adieu TransformSprite
voici the FlipSprite Maison sorti du four
sans prise de tete et commenté ... joyeux Noel .... (quoi ??? c'est trop tot ? ) pfff m'en fou
pas d'assembleur
probablement Multiplateforme
adieu TransformSprite
voici the FlipSprite Maison sorti du four
sans prise de tete et commenté ... joyeux Noel .... (quoi ??? c'est trop tot ? ) pfff m'en fou

Code : Tout sélectionner
;***********************************************
;Titre :*test_transforme_sprite perso
;Auteur : Dobro
;Date :12/10/2019
;Heure :23:50:05
;Version Purebasic : PureBasic 5.70 LTS (Windows - x86)
;Version de l'editeur :EPB PHOENIX V2.68
; Libairies necessaire : Aucune
;***********************************************
InitSprite()
Enumeration
#win
#sprite1
#sprite2
EndEnumeration
; ********* My Super Procedures LOL ****************
Declare Scan_Sprite(Num_sprite)
Declare Flip_H_Sprite(Num_sprite)
Declare Flip_V_Sprite(Num_sprite)
Declare Flip_VH_Sprite(Num_sprite)
; ****************************************************
ExamineDesktops()
EcranX=DesktopWidth(0)/2
EcranY=DesktopHeight(0)/2
If InitSprite() = 0 Or InitKeyboard() = 0 Or InitMouse() = 0
MessageRequester("Erreur", "Impossible d'initialiser l'écran.")
End
EndIf
OpenWindow(#win,1,1,Ecranx,Ecrany,"yoo Flip", #PB_Window_SystemMenu )
OpenwindowedScreen(WindowId(#win),1,1,EcranX,Ecrany,1,0,0)
; *************** pour l'exemple on creer un sprite fait de 2 box de 2 couleurs differentes ******************
;Sprite 1
CreateSprite(#sprite1,100,100)
StartDrawing(SpriteOutput(#Sprite1))
box(1,1,64,64,rgb(255,255,0))
Box(32,32,64,64,rgb(0,255,150))
StopDrawing()
;*******************************************************************************************************
Scan_Sprite(#sprite1) ; la premiere des procedures, permet de mettre le sprite en Tableau .... pis c'est les tableaux qu'on va manipuler pour fliper notre sprite
CopySprite(#sprite1,#sprite2) ; garde une trace du sprite originale dans #sprite2
; boucle principale
Repeat
Event = WaitWindowEvent(2)
Select Event
EndSelect
ExamineKeyboard()
DisplayTransparentSprite(#sprite2, 10,100) ; le sprite des origines sans modification
Flip_H_Sprite(#sprite1) ; on fait un FLip Horizontale
DisplayTransparentSprite(#sprite1, 10,250) ; on affiche fierement le resultat
Flip_V_Sprite(#sprite1) ; on fait un Flip Vertical
DisplayTransparentSprite(#sprite1, 10,400) ; on affiche fierement le resulat
Flip_VH_Sprite(#sprite1) ; la on est fou , on fait carrement un flip Vertical ET horizontal roulement de tambour ....brbrbrbrbrbrbr tiiiich !
DisplayTransparentSprite(#sprite1, 500,100) ; on affiche le sprite qui ne c'ets pas gamélé
; ici on va afficher le text pour les neuneu qu'aurai pas compris ..... ;o)
StartDrawing(ScreenOutput())
DrawText(100,150,"<--- Sprite1 original normal ")
DrawText(100,300,"<--- Sprite2 flipé horizontalement ")
DrawText(100,400,"<--- Sprite2 flipé verticalement ")
DrawText(550,100,"<--- Sprite2 flipé verticalement et horizontalement ")
StopDrawing()
;Affichage à l'écran concretement
FlipBuffers()
Until Event = #PB_Event_CloseWindow
;- **** Zone Procedure ************
Procedure Scan_Sprite(Num_sprite)
;By Dobro
protected w
Protected h
w=SpriteWidth(Num_sprite)
h=SpriteHeight(Num_sprite)
Global Dim tab_spr(w,h)
StartDrawing(SpriteOutput(Num_sprite))
For y=0 to h-1
For x=0 to w-1
tab_spr(x,y)=point(x,y)
Next x
Next y
StopDrawing()
EndProcedure
Procedure Flip_H_Sprite(Num_sprite)
;By Dobro
w=SpriteWidth(Num_sprite)
h=SpriteHeight(Num_sprite)
StartDrawing(SpriteOutput(Num_sprite))
For y=0 to h-1
For x= 0 to w-1
Plot(x,y,tab_spr(x,h-y))
Next x
Next y
StopDrawing()
EndProcedure
Procedure Flip_V_Sprite(Num_sprite)
;By Dobro
w=SpriteWidth(Num_sprite)
h=SpriteHeight(Num_sprite)
StartDrawing(SpriteOutput(Num_sprite))
For y=0 to h-1
For x=0 to w-1
Plot(x,y,tab_spr(w-x,y))
Next x
Next y
StopDrawing()
EndProcedure
Procedure Flip_VH_Sprite(Num_sprite)
;By Dobro
w=SpriteWidth(Num_sprite)
h=SpriteHeight(Num_sprite)
StartDrawing(SpriteOutput(Num_sprite))
For y=0 to h-1
For x=0 to w-1
Plot(x,y,tab_spr(w-x,h-y))
Next x
Next y
StopDrawing()
EndProcedure