Page 1 sur 1
Question à propos d'un continu - non-continu...
Publié : ven. 28/nov./2008 1:40
par Ar-S
Voilà voilà j'ai une question à propos de la détection du bouton de la souris..
J'aimerai pour un jeux de shoot pouvoir simuler par intermittence des cliques gauches très rapides lorsque je laisse appuyer sur le bouton de gauche de la souris..
En gros lorsqu'on a une grosse sulfateuse pas de soucis, on laisse appuyer et ça sulfate.. Mais lorsque qu'on à un pétoire au coup par coup et que l'on veut tirer plusieurs coups, il faut appuyer plusieurs fois sur le bouton et avec l'age mes doigts se font moins rapides que ceux des ados

.
A votre avis est-ce possible ? si oui comment ?
Publié : ven. 28/nov./2008 14:03
par Backup
utilisation des timers encore une fois

click n'importe ou sur la fenetre
;/Constantes Window
Declare TimerProc(hwnd.l, uMsg.l, idEvent.l, dwTime.l)
Enumeration
#Window_0
EndEnumeration
;/Constantes Gadget
Enumeration
#Btn_Quit
EndEnumeration
If openwindow ( #Window_0 , 300, 300, 300, 200, "Fenêtre 1" , #PB_Window_SystemMenu , 0)
If creategadgetlist ( windowid ( #Window_0 ))
buttongadget ( #Btn_Quit , 100, 170, 100, 25, "Quitter" )
EndIf
Repeat
Select waitwindowevent ()
Case #WM_LBUTTONDOWN
SetTimer_ ( windowid ( #Window_0 ),1,100,@TimerProc()) ; ici tu regle la vitesse de click !!
Case #WM_LBUTTONUP
KillTimer_ ( windowid ( #Window_0 ),1)
Case #PB_Event_Gadget
Select eventgadget ()
;Case
;Case
Case #Btn_Quit : quit = 1
EndSelect
;Case
;Case
Case #PB_Event_CloseWindow : quit = 1
EndSelect
Until quit = 1
End
EndIf
Procedure TimerProc(hwnd.l, uMsg.l, idEvent.l, dwTime.l)
Select uMsg
Case #WM_TIMER
Select idEvent
Case 1
; Ici, le code à executer toutes les 100 em de secondes
SendMessage_ ( gadgetid ( #Btn_Quit ), #WM_LBUTTONDOWN ,0,0)
beep_ (440,10)
EndSelect
EndSelect
EndProcedure
Publié : ven. 28/nov./2008 14:26
par Cool Dji
Salut Ar-S,
Je commence aussi un truc qui tire partout.
J'ai fait un tempo sur le fire (je suis pas aussi classe que Debro, je vais changer ça et mettre un vrai timer).
Voici le code du truc
http://xdji.free.fr/Telechargement/MadFire.zip
Regarde de ce coté là : ; ici, timing pour le tir à répétition
Quand le ship peut tirer, il cherche le premier missile de libre (Missileon=0), le reserve ( Missileon=1)
Publié : ven. 28/nov./2008 16:06
par Ar-S
Merci CoolDji, je vais mater ça.
@Dobro,
L'effet escompter "visuellement" devrait ressembler à ça non ?
Code : Tout sélectionner
;/Constantes Window
Declare TimerProc(hwnd.l, uMsg.l, idEvent.l, dwTime.l)
Enumeration
#Window_0 : #Btn_Quit
EndEnumeration
If OpenWindow ( #Window_0 , 300, 300, 300, 200, "Fenêtre 1" , #PB_Window_SystemMenu , 0)
If CreateGadgetList ( WindowID ( #Window_0 ))
ButtonGadget ( #Btn_Quit , 100, 140, 100, 25, "Quitter" )
EndIf
Repeat
Select WaitWindowEvent ()
Case #WM_LBUTTONDOWN
; SetGadgetText(#Btn_Quit,"je clique")
SetTimer_ ( WindowID ( #Window_0 ),1,100,@TimerProc()) ; ici tu regle la vitesse de click !!
Case #WM_LBUTTONUP
; SetGadgetText(#Btn_Quit,"je relache")
KillTimer_ ( WindowID ( #Window_0 ),1)
Case #PB_Event_Gadget
Select EventGadget ()
;Case
;Case
;Case #Btn_Quit : quit = 1
EndSelect
;Case
;Case
Case #PB_Event_CloseWindow : quit = 1
EndSelect
Until quit = 1
End
EndIf
Procedure TimerProc(hwnd.l, uMsg.l, idEvent.l, dwTime.l)
Select uMsg
Case #WM_TIMER
Select idEvent
Case 1
; Ici, le code à executer toutes les 100 em de secondes
SetGadgetText(#Btn_Quit,"je clic")
SendMessage_ ( GadgetID ( #Btn_Quit ), #WM_LBUTTONDOWN ,0,0)
Delay(100)
SendMessage_ ( GadgetID ( #Btn_Quit ), #WM_LBUTTONUP ,0,0)
SetGadgetText(#Btn_Quit,"je relache")
;Beep_ (440,10)
EndSelect
EndSelect
EndProcedure
C'est pas bon de rajouter ça ? (je pige vite tu sais mais faut m'expliquer longtemps

)
Publié : ven. 28/nov./2008 16:42
par Backup
oui d'ailleurs j'avais deja corrigé entre temps
c'est parceque pour gagner du temps je reprends des codes exemples
que j'ai chez moi, alors il faut que je les adapte, il reste parfois des ancien bout de code
regarde donc a nouveau le code coloré

Publié : ven. 28/nov./2008 16:46
par Ar-S
Publié : ven. 28/nov./2008 17:00
par Ar-S
Ce qui est étrange avec ton code c'est que l'action a l'air de se faire uniquement lors du mouvement de la souris. Est-ce une hallucination ?
Publié : ven. 28/nov./2008 17:42
par Backup
Ar-S a écrit :Ce qui est étrange avec ton code c'est que l'action a l'air de se faire uniquement lors du mouvement de la souris. Est-ce une hallucination ?
pas chez moi !!
dans le doute remplace WaitWindowEvent() par WindowEvent()+ un delay()