AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  Connexion  

Partagez | 
 

 Gestion de temps d'appuie d'une touche

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Caohimin
Très bonne participation
avatar

Messages : 134
Localisation : Au coeur de cette charmante demoiselle.

MessageSujet: Gestion de temps d'appuie d'une touche   Mar 28 Aoû 2012 - 21:24

Bonjour,

Petit script, simple, mais utile :

Code:

if keyboard_check(vk_space) //si pression sur la touche espace
    {
    if appuie==0 //si la touche etais relacher (appuie = 0)
        {
        temps_appuie=0 //mise a 0 du compteur
        }
    appuie=1 //la touche est presser
    }
else //sinon (si on ne presse pas ou plus espace)
    {
    appuie=0 //la touche est relacher
    }

if appuie==1 //si la touche est presser
    {
    temps_appuie+=1 //incrementer le compteur a chaque step
    }


/*La suite ne sert qu'a montrer son utilite*/
   
if temps_appuie==0 //si le compteur es a 0
    {
    draw_text_color(100,100,"Appuis sur espace.",c_black,c_black,c_black,c_black,0.8) //on affiche un message pour demander l'appuis de la touche espace
    }
   
if temps_appuie>room_speed && appuie=0 //si le compteur de step est superieur a la vitesse de la room et que la touche est relacher
    {
    draw_text_color(100,100,"Tu as appuye plus d'une seconde.",c_black,c_black,c_black,c_black,0.8) //on affiche que la touche a etait presser plus d'une seconde
    draw_text_color(100,120,"Appuis de nouveau sur espace.",c_black,c_black,c_black,c_black,0.8) //on affiche un message pour demander de nouveau l'appuis sur espace
    }
if temps_appuie<=room_speed && temps_appuie!=0 && appuie=0 // si le compteur de step est inferieur a la vitesse de la room, que le compteur ne vaux pas 0 (sinon le message reste toujours afficher), et que la touche est relacher
    {
    draw_text_color(100,100,"Tu as appuye moins d'une seconde.",c_black,c_black,c_black,c_black,0.8) //on affiche que la touche a etait presser moins d'une seconde
    draw_text_color(100,120,"Appuis de nouveau sur espace.",c_black,c_black,c_black,c_black,0.8) //on affiche un message pour demander de nouveau l'appuis sur espace
    }
if appuie==1 //si la touche est presser
    {
    draw_text_color(100,100,"Tu appuis sur espace.",c_black,c_black,c_black,c_black,0.8) //on affiche que la touche est presser
    }

Le code est entièrement commenter.

Mais je vais tout de même donner une explication :

Lors que l'on appuie sur espace fleche_d ESPACE fleche_g
fleche_d on vérifie que la touche a étais relâcher avant, pour mettre le compteur a 0
fleche_d on montre que la touche est presser
fleche_d Sinon (si elle n'est pas presser)
fleche_d on montre que la touche n'est pas presser

fleche_d si on a montrer que la touche est presser
fleche_d on met en route notre compteur

Puis la avec des conditions

fleche_d si le compteur vaux la vitesse de la room ( donc 1 seconde)
fleche_d si le compteur est superieur aux triple de la vitesse de la room ( donc plus de 3 sec)
fleche_d si le compteur vaux moins de dix fois la room ( donc moins de 10 sec)
fleche_d ...

Cela en aidera quelques un, ou non.

Je tiens à m'excuser pour les fautes en tout genre.

_________________
fleche_d Caohimin fleche_g
neutre

Communauté
Barbarre
Nauséabonde
Ahuri
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8915
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: Gestion de temps d'appuie d'une touche   Mar 28 Aoû 2012 - 21:38

Tu te prend la tête pour pas grand chose je trouve.
Tu peut faire tout simplement
Code:
if(keyboard_check(vk_space))
    temps_appuie += 1
if(keyboard_check_released(vk_space))
    temps_appuie = 0

Sinon ouai y a pas mal de fautes de français sad

Petite astuce alacon pour différencier les 'é' et les 'er' ->
Tu remplace ton mot par 'prendre', tu regarde si la phrase sonne faux, et ça fait des chocapics. Si ça sonne juste tu met 'er', sinon 'é'.

Par exemple:
J'ai mang[X] une pomme -> J'ai prendre une pomme -> Sonne faux -> Donc pas de 'er' a la fin -> J'ai mangé une pomme
Il va me tap[X] -> Il va me prendre (Yum!) -> sonne bien -> Donc bien 'er' a la fin -> Il va me taper

En plus ça te feras bosser ton algorithmie mrgreen2

_________________
                 
Revenir en haut Aller en bas
Caohimin
Très bonne participation
avatar

Messages : 134
Localisation : Au coeur de cette charmante demoiselle.

MessageSujet: Re: Gestion de temps d'appuie d'une touche   Mar 28 Aoû 2012 - 22:11

Faux onilink,

Si le joueur veux assigner 2 action a 1 seule touche.

On vas prendre exemple sur Call of duty ( sur Xbox par exemple )

Un appuie court sur B, il s'assoie s'agenouille, un appuie long il se couche.

Là, ton personnage va en premier lieu s’asseoir, puis se coucher, en plus de ça, il lui faudra rester appuyer sur la touche.

Le script garde en mémoire si le joueur a appuyé long ou court sur la touche.

De plus, la fonction de "release" avec les joystick n'existe pas, ici il est pris en compte.

PS : merci pour l'astuce, ma femme me l'a dit X fois...

_________________
fleche_d Caohimin fleche_g
neutre

Communauté
Barbarre
Nauséabonde
Ahuri
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8915
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: Gestion de temps d'appuie d'une touche   Mar 28 Aoû 2012 - 22:25

Mouai, j'ai pas trop capté ce que tu voulais faire en fait x)

Sinon petit conseil, soigne mieux la syntaxe de ton code, la t'as fait un truc tout simple et pourtant je le trouve pas très lisible.
Par exemple:
Code:
if(keyboard_check(vk_space))
{
    if(!check)
        check_timer = 0
    check = true
}
else
    check = false

if(check)
    check_timer += 1

Bref chacun sa syntaxe, mais faut essayer de faire dans le lisible :b

Sinon ton code est l'équivalent de celui ci en fait, je m'était gouré ouai ( dodo )
Code:
if(keyboard_check_pressed(vk_space))
    check_timer = 0
if(keyboard_check(vk_space))
    check_timer += 1

Sinon pour les joysticks, j'avais codé une dll pour la manette de xbox360 qui gérais tout (check, pressed, released, vibrations, etc).
Si ça t'intéresse je peut essayer de la retrouver (je l'avais faite pour un truc mais au final jamais utilisé ni uploadé x) )

_________________
                 
Revenir en haut Aller en bas
Caohimin
Très bonne participation
avatar

Messages : 134
Localisation : Au coeur de cette charmante demoiselle.

MessageSujet: Re: Gestion de temps d'appuie d'une touche   Mar 28 Aoû 2012 - 23:00

Je ne sais pas du tout comment fonctionne un dll...

Mais ça pourrais êtres fort intéressant oui.

Et pour la syntaxe, bien, comme nous avons tous notre façon de marcher, parler, penser... Nous avons aussi notre façon de coder.

quand c'est pour moi, je laisse le code comme je le sent, parce qu'il me permet de mieux lire de cette façon, mais là c'est vrai que j'aurais put mieux faire.

Par contre ton code est toujours faux... neutre

Autant pour moi... avais lu release... zip


_________________
fleche_d Caohimin fleche_g
neutre

Communauté
Barbarre
Nauséabonde
Ahuri


Dernière édition par Caohimin le Mar 28 Aoû 2012 - 23:13, édité 2 fois
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8915
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: Gestion de temps d'appuie d'une touche   Mar 28 Aoû 2012 - 23:05

Ben temps_appuie :b

Sinon une dll c'est très simple a utiliser, suffit d'avoir les scripts associés a ta dll, tu lance le script d'initialisation qui charge la dll et tu peut utiliser les autres scripts associés comme des fonctions tout a fait normales.
C'est encore plus simple a utiliser sous la forme d'extension d'ailleurs, vu qu'y a rien a faire la a part utiliser les fonctions tranquillement :b

_________________
                 
Revenir en haut Aller en bas
Caohimin
Très bonne participation
avatar

Messages : 134
Localisation : Au coeur de cette charmante demoiselle.

MessageSujet: Re: Gestion de temps d'appuie d'une touche   Mar 28 Aoû 2012 - 23:17

Je la veux bien si tu remet la main dessus

_________________
fleche_d Caohimin fleche_g
neutre

Communauté
Barbarre
Nauséabonde
Ahuri
Revenir en haut Aller en bas
Contenu sponsorisé




MessageSujet: Re: Gestion de temps d'appuie d'une touche   

Revenir en haut Aller en bas
 
Gestion de temps d'appuie d'une touche
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Transport VSL
» Gestion du temps d'écran: essai
» Le jeu de touche touche !!
» Sheykh ibn Baz et la valeur du temps....
» Echelle du temps

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Développement :: Scripts GML-
Sauter vers: