Programmer sur Script (partie 5)

Voir le sujet précédent Voir le sujet suivant Aller en bas

Tutoriel Programmer sur Script (partie 5)

Message par Morgan9195 le Dim 10 Mar - 1:58

Programmer sur Script (partie 5)
La 2D avancée, les interactions



Nous entrons maintenant dans une partie du tutoriel un peu plus vivante car votre programme va enfin réagir à la souris et au clavier.

Vous vous souvenez des conditions sur Script? On en a parlé dans les parties précdentes du tutoriel.
Petit rappel:

Code:

vie=100;
vie-=40;
vie-=60;
if vie=0
{
 show_message("Vous etes mort");
 game_end();
}

Nous allons maintenant appliquer des conditions à vos formes 2D.
Ecrivez ce code dans le fichier script0.script d'un nouveau projet:
Code:

draw_2D();

if button_rectangle(50,50,false)
{
 draw_set_color(c_green);
 variable="active";
}
else
{
 draw_set_color(c_red);
 variable="desactive";
}

draw_text(50,100,"Bouton "+string(variable));

Ensuite exécutez le programme, et testez le bouton qui s'affichera.
button_rectangle(50,50,false) est une condition qui renvoit "true", c'est à dire "1" au "if" qui le précède si la case est cochée. Et si la case est décochée, elle renvoit "false", c'est à dire "0" au "if" qui le précède.

Vous voyez à peu près comment ça fonctionne?
Ca c'était pour la fonction button_rectangle(x,y,defaut); , mais il existe une autre condition un peu similaire:
button_circle(x,y,defaut);
Cette seconde condition affiche des boutons en forme de rond, et un seul bouton ne peut être activé à la fois si vous en placez plusieurs.
Remplacez "defaut" par l'état par défaut du bouton. true ou 1 pour que le bouton soit activé par défaut, false ou 0 pour qu'il soit éteint par défaut.

Une condition très pratique permet de détecter si la souris se trouve dans un rectangle:
if mouse_in_rectangle(x1,y1,x2,y2)
il suffit juste de mettre les dimensions du rectangle dedans. Si vous souhaitez que ce rectangle soit visible par l'utilisateur, il faudra en plus le dessiner avec la fonction draw_rectangle(x1,y1,x2,y2,outline);

si vous voulez une fonction qui repère plus en détail la souris, voici les variables qui contiennent les coordonnées de la souris:
mouse_x
mouse_y
Ces deux variables ne sont pas modifiables mais utilisables dans des instructions et des conditions.

Détecter la souris c'est bien, mais détecter ses clics en plus, c'est mieux !
Voici les conditions qui détectent les clics pressés:
if mouse_check_button_pressed(mb_left)
if mouse_check_button_pressed(mb_right)

Et voici les conditions qui détectent les clics relachés:
if mouse_check_button_released(mb_left)
if mouse_check_button_released(mb_right)

Et les conditions qui détectent les clics maintenus:
if mouse_check_button(mb_left)
if mouse_check_button(mb_right)

Et maintenant, voici les conditions qui détectent les rotations de la molette de la souris:
if mouse_wheel_up()
if mouse_wheel_down()

Voila ! J'espère que vous prenez bien tout ça en note, il vous faudra un peu de temps pour les connaitre par coeur. Mais ça viendra tout seul en les utilisant.

On passe au clavier? C'est partie:
On peut détecter 3 états différents des touches du clavier: pressé, relâché et maintenu enfoncé.
Voici les trois conditions qui détectent ces trois états:
if keyboard_check_pressed(key)
if keyboard_check_released(key)
if keyboard_check(key)

Le "key" que j'ai écris entre les parenthèses de chacune de ces conditions est à remplacer par la touche qu'on souhaite détecter, le "key" que j'ai écris servait juste à vous indiquer la syntaxe.
Voici par quoi vous pouvez remplacer le "key":

- Pour détecter une lettre ou un chiffre:
ord("A") ... ord("Z")
ord("0") ... ord("9")
Information: ord(ascii) traduit le caractère donné entre ses parenthèses par son code ASCII.

- Pour détecter les touches fléchées:
vk_up
vk_down
vk_left
vk_right

- Pour détecter les touches de F1 à F12:
vk_f1 ... vk_f12

- Pour détecter les touches du pavé numérique:
vk_numpad0 ... vk_numpad9
vk_multiply (*)
vk_divide (/)
vk_add (+)
vk_subtract (-)
vk_decimal (.)

- Pour détecter quelques touches spéciales:
vk_space
vk_enter
vk_escape
vk_shift
vk_control
vk_alt
vk_backspace
vk_tab
vk_home
vk_end
vk_delete
vk_insert
vk_pageup
vk_pagedown
vk_pause
vk_printscreen

- Pour détecter les touches en double:
touches de gauche:
vk_lshift
vk_lcontrol
vk_lalt

touches de droite:
vk_rshift
vk_rcontrol
vk_ralt

- Pour détecter n'importe quelle touche, ou aucune:
vk_anykey
vk_nokey

Vous avez donc juste à remplacer le "key" par le code de votre choix parmi tous ceux que je viens de vous citer.
Je vous passe en plus quelques variables qui peuvent vous être utiles:
- keyboard_lastchar : Dernier caractère pressé
- keyboard_string : L'ensemble des derniers caractères pressé, peut être réinitialisé en faisant keyboard_string="";

Voila, entrainez vous à créer une forme 2D qui se déplace à l'écran lorsqu'on utilise certaines touches du clavier.
Si vous réussissez bien cet entrainement, je peux vous en proposer un autre qui utilise beaucoup les variables: faire en sorte qu'une forme 2D se dirige vers l'endroit où la souris clique.

Ces entrainements vont vous prendre un peu de temps, mais une fois que vous les aurez réussis vous en serez fier et vous pourrez réutiliser vos codes dans d'autres futurs jeux et logiciels.
Surtout, n'hésitez pas à relire le chapitre sur les variables, il vous est très utile pour ces deux exercices.
On se retrouve dans la prochaine partie de ce tutoriel, qui je vous promet est bien plus amusante.
avatar
Morgan9195
Fondateur
Fondateur

Messages : 168
Date d'inscription : 11/02/2013
Age : 22
Localisation : Entre le fauteuil et le clavier

Projet(s)
Niveau de connaissances dans Script: Professionnel
Spécialité: Programmeur

Voir le profil de l'utilisateur http://morgan9195.olympe.in/devblog/

Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum