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