Question à propos d'un continu - non-continu...

Sujets variés concernant le développement en PureBasic
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Question à propos d'un continu - non-continu...

Message 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 :twisted:.

A votre avis est-ce possible ? si oui comment ?
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message 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
  
  
Avatar de l’utilisateur
Cool Dji
Messages : 1126
Inscription : ven. 05/sept./2008 11:42
Localisation : Besançon
Contact :

Message 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)
Only PureBasic makes it possible
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Message 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 ;))

Code : Tout sélectionner

SendMessage_ ( GadgetID ( #Btn_Quit ), #WM_LBUTTONUP ,0,0)
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

oui d'ailleurs j'avais deja corrigé entre temps :lol:


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 :lol:

regarde donc a nouveau le code coloré :)
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Message par Ar-S »

Youpi je ne suis pas que con :P :P :P
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Message 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 ?
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message 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()
Répondre