Dans cette démo, elle s'oriente automatiquement en fonction du coin vers lequel elle se dirige.
Touche Echappe Quitter.
Touches Pad 0 -> 3 Change le Pointeur.
Touche + Pointeur + 1.
Touches fléchées Déplace.
Souris Déplace.
Note : à partir de la version 6.21 de PB, CreateSprite a besoin d'un paramètres pour pouvoir utiliser le mode transparent avec la commande DisplayTransparentSprite
MouseSpr = CreateSprite( #PB_Any , Souris_Large * 2 , Souris_Haut * 2 , #PB_Sprite_AlphaBlending )
Code de la démo :
Code : Tout sélectionner
Global WinMaxX .u = 320
Global WinMaxY .u = 200
Global MaxMouse .u = 4
Global PlayerDep .u = 2
Global playerX .u = 0
Global playerY .u = 0
Global MouseSpr .i
Global MouseTyp .a
Global Souris_Large .u
Global Souris_Haut .u
Global Souris_xMax .u
Global Souris_yMax .u
Global ZoneX .a
Global ZoneY .a
Global OffsetX .b
Global OffsetY .b
; Palette de couleur
Global Dim Pen.l( 5 )
Pen( 0 ) = RGB( 000 , 000 , 000 )
Pen( 1 ) = RGB( 024 , 024 , 024 )
Pen( 2 ) = RGB( 064 , 064 , 064 )
Pen( 3 ) = RGB( 180 , 180 , 180 )
Pen( 4 ) = RGB( 255 , 255 , 255 )
If Not( InitSprite() And InitKeyboard() And InitMouse() )
MessageRequester("Erreur", "Environnement sprite non initialisé.", 0 )
End
EndIf
; Change l'image du pointeur selon le type choisi
Procedure Init_Mouse ( )
Select MouseTyp
Case 0 : Restore DonneesMouse
Case 1 : Restore DonneesMainH
Case 2 : Restore DonneesMainV
Case 3 : Restore DonneesMain45
EndSelect
Read.a Souris_Large
Read.a Souris_Haut
Souris_xMax = Souris_Large * 2 - 1
Souris_yMax = Souris_Haut * 2 - 1
; Le Sprite a peut-être changé de taille, on supprime l'ancien pour en créer un nouveau
If MouseSpr : FreeSprite( MouseSpr ) : EndIf
; à partir de la version 6.21 de PB, CreateSprite a besoin d'un paramètres
; pour pouvoir utiliser le mode transparent avec la commande DisplayTransparentSprite
CompilerIf #PB_Compiler_Version > 620
MouseSpr = CreateSprite( #PB_Any , Souris_Large * 2 , Souris_Haut * 2 , #PB_Sprite_AlphaBlending )
CompilerElse
MouseSpr = CreateSprite( #PB_Any , Souris_Large * 2 , Souris_Haut * 2 )
CompilerEndIf
; redessine le nouveau pointeur
StartDrawing( SpriteOutput( MouseSpr ) )
For y.a = 0 To Souris_Haut - 1
For x.a = 0 To Souris_Large - 1
Read.a couleur
Plot( x , y , Pen( couleur ) ) ; Haut Gauche
Plot( Souris_xMax - x , y , Pen( couleur ) ) ; Haut Droite
Plot( Souris_xMax - x , Souris_yMax - y , Pen( couleur ) ) ; Bas Droite
Plot( x , Souris_yMax - y , Pen( couleur ) ) ; Bas Gauche
Next
Next
StopDrawing()
EndProcedure
If OpenWindow( 0 , 0 , 0 , WinMaxX , WinMaxY , "Pointeur toujours visible!" , #PB_Window_SystemMenu | #PB_Window_ScreenCentered )
If OpenWindowedScreen( WindowID(0) , DesktopScaledX(0) , DesktopScaledX(0) , DesktopScaledX(WinMaxX) , DesktopScaledX(WinMaxY) , #False , 0 , 0 )
; Initialise le pointeur avec l'image N°3
MouseTyp = 3
Init_Mouse ( )
Repeat
; Efface l'écran puis restaure l'affichage
ClearScreen ( #White )
StartDrawing ( ScreenOutput( ) )
LTxt.a = 50
FrontColor ( #Black )
BackColor ( #White )
DrawText ( 80 , LTxt , "Echappe _______Quitter." ) : LTxt + 20
DrawText ( 80 , LTxt , "Pad 0 -> 3 ______Pointeur." ) : LTxt + 20
DrawText ( 80 , LTxt , "Touche + _______Pointeur + 1." ) : LTxt + 20
DrawText ( 80 , LTxt , "Touche fléchées _Déplace." ) : LTxt + 20
StopDrawing ( )
ExamineKeyboard ()
; Change l'image du pointeur à l'aide des touche du clavier
If KeyboardReleased ( #PB_Key_Pad0 ) : MouseTyp = 0 : Init_Mouse ( ) : EndIf
If KeyboardReleased ( #PB_Key_Pad1 ) : MouseTyp = 1 : Init_Mouse ( ) : EndIf
If KeyboardReleased ( #PB_Key_Pad2 ) : MouseTyp = 2 : Init_Mouse ( ) : EndIf
If KeyboardReleased ( #PB_Key_Pad3 ) : MouseTyp = 3 : Init_Mouse ( ) : EndIf
If KeyboardReleased ( #PB_Key_Add ) : MouseTyp = (MouseTyp + 1) % MaxMouse : Init_Mouse ( ) : EndIf
; Déplacement du pointeur à l'aide des touches fléchées du clavier
If KeyboardPushed ( #PB_Key_Up ) And playerY - PlayerDep >= 0 : playerY - PlayerDep : EndIf
If KeyboardPushed ( #PB_Key_Down ) And playerY + PlayerDep < ScreenHeight() : playerY + PlayerDep : EndIf
If KeyboardPushed ( #PB_Key_Left ) And playerX - PlayerDep >= 0 : playerX - PlayerDep : EndIf
If KeyboardPushed ( #PB_Key_Right ) And playerX + PlayerDep < ScreenWidth() : playerX + PlayerDep : EndIf
; Trouve le quart dans lequel on se situe
If playerX < ScreenWidth ()/2 : ZoneX = 0 : OffsetX = 0 : : EndIf
If playerX >= ScreenWidth ()/2 : ZoneX = 1 : OffsetX = -Souris_Large : : EndIf
If playerY < ScreenHeight ()/2 : ZoneY = 0 : : OffsetY = 0 : EndIf
If playerY >= ScreenHeight ()/2 : ZoneY = 1 : : OffsetY = -Souris_Haut : EndIf
; Récupère l'image correspondant au quart trouvé pour les mouvements au clavier et affiche celui-ci sur l'écran
ClipSprite ( MouseSpr , ZoneX * Souris_Large , ZoneY * Souris_Haut , Souris_Large , Souris_Haut )
TransparentSpriteColor ( MouseSpr , #Black )
DisplayTransparentSprite ( MouseSpr , playerX + OffsetX , playerY + OffsetY )
; Déplacement du pointeur à l'aide de la souris
ExamineMouse()
MouseX = MouseX()
MouseY = MouseY()
; Trouve le quart dans lequel on se situe
If MouseX < ScreenWidth ()/2 : ZoneX = 0 : OffsetX = 0 : : EndIf
If MouseX >= ScreenWidth ()/2 : ZoneX = 1 : OffsetX = -Souris_Large : : EndIf
If MouseY < ScreenHeight ()/2 : ZoneY = 0 : : OffsetY = 0 : EndIf
If MouseY >= ScreenHeight ()/2 : ZoneY = 1 : : OffsetY = -Souris_Haut : EndIf
; Récupère l'image correspondant au quart trouvé pour les mouvements à la souris et affiche celui-ci sur l'écran
ClipSprite ( MouseSpr , ZoneX * Souris_Large , ZoneY * Souris_Haut , Souris_Large , Souris_Haut )
TransparentSpriteColor ( MouseSpr , #Black )
DisplayTransparentSprite ( MouseSpr , MouseX + OffsetX , MouseY + OffsetY )
FlipBuffers()
Repeat
Event = WindowEvent()
Select Event
Case #PB_Event_CloseWindow
Quit = 1
EndSelect
Until Event = 0
Until Quit Or KeyboardPushed( #PB_Key_Escape )
Else
MessageRequester( "Erreur", "OpenWindowedScreen non initialisé." , 0 )
EndIf
EndIf
DataSection
DonneesMouse:
Data.a 12,19
Data.a 1,3,0,0,0,0,0,0,0,0,0,0
Data.a 1,2,3,0,0,0,0,0,0,0,0,0
Data.a 1,4,2,3,0,0,0,0,0,0,0,0
Data.a 1,4,4,2,3,0,0,0,0,0,0,0
Data.a 1,4,4,4,2,3,0,0,0,0,0,0
Data.a 1,4,4,4,4,2,3,0,0,0,0,0
Data.a 1,4,4,4,4,4,2,3,0,0,0,0
Data.a 1,4,4,4,4,4,4,2,3,0,0,0
Data.a 1,4,4,4,4,4,4,4,2,3,0,0
Data.a 1,4,4,4,4,4,4,4,4,2,3,0
Data.a 1,4,4,4,4,4,4,4,4,4,2,3
Data.a 1,4,4,4,4,4,4,4,4,4,4,2
Data.a 1,4,4,4,4,4,4,2,2,2,2,2
Data.a 1,4,4,4,1,3,4,2,0,0,0,0
Data.a 1,4,4,1,3,1,4,4,2,0,0,0
Data.a 1,4,1,3,0,1,3,4,2,0,0,0
Data.a 1,1,3,0,0,0,1,4,4,2,0,0
Data.a 0,0,0,0,0,0,1,3,4,2,0,0
Data.a 0,0,0,0,0,0,0,2,2,0,0,0
DonneesMainH:
Data.a 24,19
Data.a 0,0,0,0,0,0,0,0,0,0,3,3,3,0,0,0,0,0,0,0,0,0,0,0
Data.a 0,0,0,0,0,0,0,0,0,3,1,1,1,3,0,0,0,0,0,0,0,0,0,0
Data.a 0,0,0,0,0,0,0,0,0,3,1,4,4,1,3,3,0,0,0,0,0,0,0,0
Data.a 0,0,0,0,0,0,0,0,0,3,1,4,4,4,1,1,3,3,0,0,0,0,0,0
Data.a 0,0,3,3,3,3,3,3,3,3,3,1,4,4,4,4,1,1,3,3,0,0,0,0
Data.a 0,3,1,1,1,1,1,1,1,1,1,1,1,1,1,4,4,4,1,1,3,3,0,0
Data.a 3,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,3
Data.a 3,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,3
Data.a 0,3,1,1,1,1,1,1,1,1,1,4,4,4,4,4,4,4,4,4,4,4,1,3
Data.a 0,0,3,3,3,3,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,3
Data.a 0,0,0,0,0,3,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,3
Data.a 0,0,0,0,0,0,3,1,1,1,1,4,4,4,4,4,4,4,4,4,4,4,1,3
Data.a 0,0,0,0,0,0,3,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,3
Data.a 0,0,0,0,0,0,3,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,3
Data.a 0,0,0,0,0,0,0,3,1,1,1,1,4,4,4,4,4,4,4,4,4,4,1,3
Data.a 0,0,0,0,0,0,0,3,1,4,4,4,4,4,4,4,4,4,4,4,1,1,1,3
Data.a 0,0,0,0,0,0,0,0,3,1,4,4,4,4,4,4,4,1,1,1,3,3,3,0
Data.a 0,0,0,0,0,0,0,0,0,3,1,1,1,1,1,1,1,3,3,3,0,0,0,0
Data.a 0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,3,0,0,0,0,0,0,0
DonneesMainV:
Data.a 19,24
Data.a 0,0,0,0,0,0,3,3,0,0,0,0,0,0,0,0,0,0,0
Data.a 0,0,0,0,0,3,1,1,3,0,0,0,0,0,0,0,0,0,0
Data.a 0,0,0,0,3,1,4,4,1,3,0,0,0,0,0,0,0,0,0
Data.a 0,0,0,0,3,1,4,4,1,3,0,0,0,0,0,0,0,0,0
Data.a 0,0,0,0,3,1,4,4,1,3,0,0,0,0,0,0,0,0,0
Data.a 0,0,0,0,3,1,4,4,1,3,3,0,0,0,0,0,0,0,0
Data.a 0,0,0,0,3,1,4,4,1,1,1,3,3,3,0,0,0,0,0
Data.a 0,0,0,0,3,1,4,4,1,4,4,1,1,1,3,3,0,0,0
Data.a 0,0,0,0,3,1,4,4,1,4,4,1,4,4,1,1,3,0,0
Data.a 0,3,3,3,3,1,4,4,1,4,4,1,4,4,1,4,1,3,0
Data.a 3,1,1,1,3,1,4,4,1,4,4,1,4,4,1,4,4,1,3
Data.a 3,1,4,4,1,1,4,4,4,4,4,4,4,4,1,4,4,1,3
Data.a 3,1,4,4,4,1,4,4,4,4,4,4,4,4,4,4,4,1,3
Data.a 0,3,1,4,4,1,4,4,4,4,4,4,4,4,4,4,4,1,3
Data.a 0,0,3,1,4,1,4,4,4,4,4,4,4,4,4,4,4,1,3
Data.a 0,0,3,1,4,4,4,4,4,4,4,4,4,4,4,4,4,1,3
Data.a 0,0,0,3,1,4,4,4,4,4,4,4,4,4,4,4,4,1,3
Data.a 0,0,0,3,1,4,4,4,4,4,4,4,4,4,4,4,1,3,0
Data.a 0,0,0,0,3,1,4,4,4,4,4,4,4,4,4,4,1,3,0
Data.a 0,0,0,0,3,1,4,4,4,4,4,4,4,4,4,4,1,3,0
Data.a 0,0,0,0,0,3,1,4,4,4,4,4,4,4,4,1,3,0,0
Data.a 0,0,0,0,0,3,1,4,4,4,4,4,4,4,4,1,3,0,0
Data.a 0,0,0,0,0,3,1,1,1,1,1,1,1,1,1,1,3,0,0
Data.a 0,0,0,0,0,0,3,3,3,3,3,3,3,3,3,3,0,0,0
DonneesMain45:
Data.a 19,23
Data.a 0,0,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0
Data.a 0,3,1,1,1,1,3,0,0,0,0,0,0,0,0,0,0,0,0
Data.a 0,3,1,4,4,1,1,3,0,0,0,0,0,0,0,0,0,0,0
Data.a 0,3,1,4,4,4,1,1,3,0,0,0,3,3,0,0,0,0,0
Data.a 0,0,3,1,4,4,4,1,1,3,0,3,1,1,3,0,0,0,0
Data.a 0,0,0,3,1,4,4,4,1,1,3,1,4,4,1,3,0,0,0
Data.a 0,0,0,3,1,1,4,4,4,1,1,4,4,4,1,3,0,0,0
Data.a 0,0,0,3,1,4,1,4,4,4,1,4,4,4,1,3,0,0,0
Data.a 0,0,3,1,4,4,4,1,4,4,4,1,4,4,1,3,0,0,0
Data.a 0,0,3,1,1,4,4,4,4,4,4,4,4,4,1,3,0,0,0
Data.a 0,3,1,4,4,1,4,4,4,4,4,4,4,4,4,1,3,0,0
Data.a 0,3,1,4,4,4,4,4,4,4,4,4,4,4,4,1,3,0,0
Data.a 3,1,1,1,4,4,4,4,4,4,4,4,4,4,4,1,1,3,0
Data.a 3,1,4,1,1,4,4,4,4,4,4,4,4,4,4,4,1,3,0
Data.a 3,1,4,4,1,4,4,4,4,4,4,4,4,4,4,4,1,3,0
Data.a 3,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,3
Data.a 0,3,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,1,3
Data.a 0,0,3,1,1,4,4,4,4,4,4,4,4,4,4,4,1,3,0
Data.a 0,0,0,3,1,1,4,4,4,4,4,4,4,4,4,1,3,0,0
Data.a 0,0,0,0,3,1,1,1,4,4,4,4,4,4,1,3,0,0,0
Data.a 0,0,0,0,0,3,3,3,1,4,4,4,4,1,3,0,0,0,0
Data.a 0,0,0,0,0,0,0,0,3,1,1,1,1,3,0,0,0,0,0
Data.a 0,0,0,0,0,0,0,0,0,3,3,3,3,0,0,0,0,0,0
EndDataSection