AccueilAccueil  FAQFAQ  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  Connexion  
-28%
Le deal à ne pas rater :
-28% Machine à café avec broyeur à grain MELITTA Purista
229.99 € 318.99 €
Voir le deal

 

 Atelier GML 2 - Conditions, opérateurs booléens et scripts

Aller en bas 
3 participants
AuteurMessage
onilink_
Modérateur
onilink_


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

Atelier GML 2 - Conditions, opérateurs booléens et scripts Empty
MessageSujet: Atelier GML 2 - Conditions, opérateurs booléens et scripts   Atelier GML 2 - Conditions, opérateurs booléens et scripts EmptySam 10 Sep 2011 - 11:52

Atelier GML 2
Conditions, opérateurs booléens et scripts
Atelier GML 2 - Conditions, opérateurs booléens et scripts

Bonjour. Après l'atelier 1 qui était plutôt simple, voici un atelier qui vous feras un peu plus plonger dans la programmation.
Cette fois si nous allons voir une notion assez fondamentale, la condition (et ce qui va avec, les opérateurs booléens).
Grâce aux conditions nous allons avoir énormément de possibilités, alors attendez vous a une tonne d'exos en fin de page :p

Pour approfondir, vous pouvez lire ou relire les deux premiers tutoriels sur le GML


Les conditions

Un peu de théorie
Les conditions permettent, d’exécuter ou non un code en fonction d'une valeur, le plus souvent variable.
Cette valeur doit être de nature booléenne, c-a-d qu'elle ne prend que true (vrai) ou false (faux), équivalents a 1 ou 0.

Une condition s'écrit de cette manière :
Code:
if(condition)
{
//Bout de code
}

La condition peut être constante (ceci est complètement inutile) ou variable.
"Bout de code" ne seras exécuté que si la condition est vrai, et donc que sa valeur est a 1 (plus exactement GM identifie vrai pour toutes les valeurs >=1, et false les valeurs négatives ou nulles)

Le mot clé else (sinon) permet d’exécuter un code si, la condition n'a pas été vérifié.

Syntaxe :
Code:
if(condition)
{
//Bout de code
}
else
{
//Autre bout de code
}

Si on devais résumer ce code en une phrase, ce serais :
Si la condition est vrai, alors exécuter "Bout de code", sinon exécuter "Autre bout de code".

En pratique
Les conditions vous serons très utiles, notamment pour vérifier les appuis de touches.
Voici un exemple simple et concret, a mettre dans le draw event d'un object :
Code:
if(keyboard_check(vk_space))
    draw_text(16, 16, "Vous appuyez sur espace")
else
    draw_text(16, 16, "Appuyez donc sur la touche espace")

Ce mot clé seras très utilisé aussi pour la détection des collision, des demande des conditions.

Les opérateurs booléens, et les opérateurs de comparaison

Un peu de théorie
Les opérateur booléens sont des opérateurs qui vous permettront de vous simplifier la vie lorsque vous utilisez des conditions.
Je vais présenter ici and et or (et, et ou).

Le and vous permettra de vérifier plusieurs conditions, sans avoir a en imbriquer plusieurs. Il fonctionne comme n'importe quel opérateur booléen, et s'utilise entre deux expressions booléennes (une expression booléennes est une opération dont le résultat est true ou false)

Syntaxe :
Code:
if(condition1 and condition2)
{
//Mon code
}

"Mon code" ne seras alors exécuté qui si les conditions sont vrai.

Le or quand a lui vérifie qu'au moins une des deux conditions est vrai, et s'utilise de la même manière que le and.
Le and s'écrit aussi &&, et le or quand a lui ||. Ne soyez donc pas étonnés si vous tombez sur ce genre de syntaxe :p

J'ai parlé d'expressions booléennes plus haut, et une question devrais vous venir a l'esprit. De quoi est constitué une expression booléenne ?
Et bien c'est très simple. Comme d'habitude on a deux paquets (qui peuvent être des opérations, ou des variables, mais dont la valeur ou le résultat doit toujours être un nombre), et un opérateur au milieu. Ici un opérateur de comparaison.
GM admet les opérateurs de comparaison suivants : <, <=, >, >=, ==, !=.
Soit plus petit, plus petit ou égal, plus grand, plus grand ou égal, égal, non égal.

Ainsi utiliser un opérateur de comparaison ne permettra d'obtenir que deux résultats, true ou false.

Exemples :
5 < 8 : true
42 == 42 : true
5 != 5 : false
6 >= 5 : false

En pratique
Il y a tellement de moments ou vous devrez utiliser ces opérateur qu'il me serais impossible de vous faire une liste complète. Voici tous de même quelques exemples variés :

Vérifier la valeur de plusieurs variables :
Code:
if(score >= 100 && health >= 50 && lives>=5)
{
show_message("You are PGM !!!")
game_end()
}

Une de ces touches est elle pressée ?
Code:
if(keyboard_check(vk_left) || keyboard_check(vk_right) || keyboard_check(vk_up) || keyboard_check(vk_down))
    draw_text(16, 16, "Vous appuyez sur une fleche")

Déplacer un objet vers la gauche et verifier les collisions
Code:
if(keyboard_check(vk_left) && place_free(x-1, y))
    x -= 1



Créez vos scripts GML

Un peu de théorie
Un script est en fait une fonction, écrite par le codeur. Ils sont donc 100% customisables et très pratiques.
N'aillez pas peur de les utiliser donc.

Un script s'appelle comme un fonction. Vous écrivez son nom, puis ses paramètres séparés par des virgules le tout entre parenthèses.
Vous pouvez choisir de faire une fonction qui va faire une action sans renvoyer de valeur, ou de faire une fonction qui va renvoyer une valeur en fonction de sers paramètres.

Dans un script vous pouvez renvoyer une valeur avec le mot clé return.

Syntaxe :
Code:
return expression
(Et l'expression n'est pas obligatoirement booléenne)

Pour récupérer un paramètre, c'est a une variable locale au script nommé argument qu'il faut faire appel.
argument0 vous donne la valeur du premier paramètre, argument1 le deuxième, et ainsi de suite.

En pratique
Si vous avez du mal avec les scripts, je vous conseille vivement de vous entrainer et de persévérer.
Ils vous feront gagner un temps non négligeable et sont au moins aussi importants que les fonctions (vu que c'en est).

Voici quelques exemples de fonctions plutot simples :

addition(x, y)
Code:
return argument0 + argument1

sign(x)
Code:
if(x>0) return 1
if(x<0) return -1
return 0

sort_de_la_room(x, y)
Code:
if(x<0 || y<0 || x>=room_width || y>= room_height)
    return true
return false

Exercices

Exclamation Merci de poster vos réponses aux exercices en spoiler Exclamation


Réalisation d'un platformer 2d

A partir de l'exercice 2, je vous conseille d'utiliser le mot clé repeat(n), qui permet de répéter le code qui suit n fois.
Bien sur vous n'êtes pas obligé, mais ça simplifie énormément les choses Wink

1 - Mr Square
Faites un carré qui peut ce déplacer en fonction des touches flechées, mais qui ne peut pas traverser l'objet solid Wall

2 - 2d World
Utilisez une variable que vous nommerez verticalGravity pour simuler la gravité.
Positionnez Mr Square en hauteur, et laissez le tomber sur de durs objets Wall.
Limitez aussi sa vitesse de chute.

3 - Mr Square is alive !
Cette fois, permettez a Mr Square de ce déplacer sur les cotés, et de sauter quand on presse la touche espace.

4 - Un monde bien rangé
Rendez le code plus propre en utilisant des fonctions.
Créez une objet tremplin qui permettra a Mr SQuare de sauter plus haut qu'avec le saut normal.

5 - Square of Persia
Implémentez les sauts muraux pour Mr Square.

6 - Nooooo
Permettez a Mr Square de s'agripper aux rebords d'une falaise :p


Indices et solutions
Voici des indices pour les mauvais mrgreen2
Et les solutions pour ceux qui sont encore plus mauvais x)

1.
Spoiler:

2.
Spoiler:
Solution

3.
Spoiler:
Solution

4.
Spoiler:
Solution

5.
Spoiler:
Solution

6.
Spoiler:
Solution


Dernière édition par onilink_ le Dim 11 Sep 2011 - 18:18, édité 6 fois
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_


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

Atelier GML 2 - Conditions, opérateurs booléens et scripts Empty
MessageSujet: Re: Atelier GML 2 - Conditions, opérateurs booléens et scripts   Atelier GML 2 - Conditions, opérateurs booléens et scripts EmptySam 10 Sep 2011 - 14:11

Voila, les premiers exercices sont finis.
Ils s'agit de faire un platformer pas a pas. J'en ajouterais d'autres pour d'autres types de jeux plus tard.
Je vais aussi faire des gm6 de correction que je mettrait dans les indices.
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_


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

Atelier GML 2 - Conditions, opérateurs booléens et scripts Empty
MessageSujet: Re: Atelier GML 2 - Conditions, opérateurs booléens et scripts   Atelier GML 2 - Conditions, opérateurs booléens et scripts EmptySam 10 Sep 2011 - 15:59

J'ai ajouté les solutions. Si vous devenez pas des pros de la plateforme avec ça, je saurais plus quoi faire x)
Revenir en haut Aller en bas
marty
Utilisateur confirmé: Rang ***
marty


Messages : 697
Projet Actuel : laby-ereinte !

Atelier GML 2 - Conditions, opérateurs booléens et scripts Empty
MessageSujet: Re: Atelier GML 2 - Conditions, opérateurs booléens et scripts   Atelier GML 2 - Conditions, opérateurs booléens et scripts EmptyDim 11 Sep 2011 - 21:53

séché dès le premier exo!

Spoiler:

et après avoir relu ton cours bah c'est simple !

Spoiler:

p2


Revenir en haut Aller en bas
onilink_
Modérateur
onilink_


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

Atelier GML 2 - Conditions, opérateurs booléens et scripts Empty
MessageSujet: Re: Atelier GML 2 - Conditions, opérateurs booléens et scripts   Atelier GML 2 - Conditions, opérateurs booléens et scripts EmptyDim 11 Sep 2011 - 21:58

Toi t'as regardé les indices :p

Maintenant tu devrais réussir a te débrouiller pour la suite :p
Revenir en haut Aller en bas
marty
Utilisateur confirmé: Rang ***
marty


Messages : 697
Projet Actuel : laby-ereinte !

Atelier GML 2 - Conditions, opérateurs booléens et scripts Empty
MessageSujet: Re: Atelier GML 2 - Conditions, opérateurs booléens et scripts   Atelier GML 2 - Conditions, opérateurs booléens et scripts EmptyDim 11 Sep 2011 - 22:13

tes ateliers sont bien réalisé,et agréable. j'ai noté qu une prof c'est inscrite sur le forum,c'est pas pour rien. il faut juste ne pas perdre en lisibilité et que les ateliers ne disparaissent pas sous le poids des autres sujets,c'est le problème de ce forum!
c'est pas possible d'avoir dés l’accueil un "onglet" dédié aux ateliers et tutoriels?

edit:à la place des demandes de prof par example!
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_


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

Atelier GML 2 - Conditions, opérateurs booléens et scripts Empty
MessageSujet: Re: Atelier GML 2 - Conditions, opérateurs booléens et scripts   Atelier GML 2 - Conditions, opérateurs booléens et scripts EmptyDim 11 Sep 2011 - 22:17

Ah euh je sais pas. Faudrait demander a Bast pour ça.
Mais bon j'ai épinglé les liens en post-it donc déjà même si ça coule ce seras pas vraiment dur a retrouver :p
Revenir en haut Aller en bas
marty
Utilisateur confirmé: Rang ***
marty


Messages : 697
Projet Actuel : laby-ereinte !

Atelier GML 2 - Conditions, opérateurs booléens et scripts Empty
MessageSujet: Re: Atelier GML 2 - Conditions, opérateurs booléens et scripts   Atelier GML 2 - Conditions, opérateurs booléens et scripts EmptyDim 25 Sep 2011 - 11:51

salut exo 3 gestion des sauts!

j'aime bien le !place_free(x,y+1) pour éviter la répétition du saut de la touche espace

le petit ! qui fait toute la différence!

Revenir en haut Aller en bas
onilink_
Modérateur
onilink_


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

Atelier GML 2 - Conditions, opérateurs booléens et scripts Empty
MessageSujet: Re: Atelier GML 2 - Conditions, opérateurs booléens et scripts   Atelier GML 2 - Conditions, opérateurs booléens et scripts EmptyDim 25 Sep 2011 - 12:03

En tout cas si t'arrive a finir et comprendre ces exos soit sur que tu seras un pro de la plateforme sans slopes :p
Revenir en haut Aller en bas
stermi59
Débutant
stermi59


Messages : 24
Localisation : Nord
Projet Actuel : Apprendre

Atelier GML 2 - Conditions, opérateurs booléens et scripts Empty
MessageSujet: Re: Atelier GML 2 - Conditions, opérateurs booléens et scripts   Atelier GML 2 - Conditions, opérateurs booléens et scripts EmptyVen 30 Mar 2012 - 19:21

Revenir en haut Aller en bas
Invité
Invité




Atelier GML 2 - Conditions, opérateurs booléens et scripts Empty
MessageSujet: Re: Atelier GML 2 - Conditions, opérateurs booléens et scripts   Atelier GML 2 - Conditions, opérateurs booléens et scripts EmptyVen 30 Mar 2012 - 21:01

Le dôjô du maitre onilink awesome
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_


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

Atelier GML 2 - Conditions, opérateurs booléens et scripts Empty
MessageSujet: Re: Atelier GML 2 - Conditions, opérateurs booléens et scripts   Atelier GML 2 - Conditions, opérateurs booléens et scripts EmptySam 31 Mar 2012 - 0:34

Ahah x)

Sinon stermi, ton lien a pas l'air bon :b
Revenir en haut Aller en bas
stermi59
Débutant
stermi59


Messages : 24
Localisation : Nord
Projet Actuel : Apprendre

Atelier GML 2 - Conditions, opérateurs booléens et scripts Empty
MessageSujet: Re: Atelier GML 2 - Conditions, opérateurs booléens et scripts   Atelier GML 2 - Conditions, opérateurs booléens et scripts EmptySam 31 Mar 2012 - 4:22

ah me..e mrgreen2 je me suis trompé voilà le bon http://dl.free.fr/oEUx4BzfJ gnii
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_


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

Atelier GML 2 - Conditions, opérateurs booléens et scripts Empty
MessageSujet: Re: Atelier GML 2 - Conditions, opérateurs booléens et scripts   Atelier GML 2 - Conditions, opérateurs booléens et scripts EmptySam 31 Mar 2012 - 15:28

:b

Alors déjà, truc a ne jamais faire :

if(keyboard_check(vk_left) && place_free(x-1, y))
{x -= 4}

La tu regarde si le pixel de gauche est libre, mais ça ne veux pas dire que les 4 pixels de gauche le sont !
Donc ça pourrais causer un bug de collision vu que tu te déplace de 4 pixels a gauche.
La solution serais d'utiliser une boucle. Tu peut utiliser repeat qui est la plus simple :

if(keyboard_check(vk_left))
repeat(4){ if(place_free(x-1, y)) x-=1 }

Ensuite, faire y+=0, bah ça sert a rien, donc t'est pas obligé de l'écrire :b
Tout comme mettre des accolades quand y a qu'une seule instruction.

if(machin) truc
<=>
if(machin) { truc }

Par contre si y a plus d'une instruction tu doit effectivement mettre des accolades, pour définir un bloc d'instruction.


Maintenant, pour ta gestion de la gravité, t'as fait un truc très étrange.
L'idée serais déjà de commencer a bannir vspeed, donc ne plus l'utiliser.
De plus on vois bien que le mouvement de saut est saccadé. Bref, y a moyen de faire mieux :b
Si tu a besoin de conseils, ou d'indices je suis la Wink
Revenir en haut Aller en bas
stermi59
Débutant
stermi59


Messages : 24
Localisation : Nord
Projet Actuel : Apprendre

Atelier GML 2 - Conditions, opérateurs booléens et scripts Empty
MessageSujet: Re: Atelier GML 2 - Conditions, opérateurs booléens et scripts   Atelier GML 2 - Conditions, opérateurs booléens et scripts EmptySam 31 Mar 2012 - 17:14

Merci , j'ai essayé d 'améliorer çà , voilà ce que sa donne :
http://dl.free.fr/j6jxLQ1xx
Revenir en haut Aller en bas
Contenu sponsorisé





Atelier GML 2 - Conditions, opérateurs booléens et scripts Empty
MessageSujet: Re: Atelier GML 2 - Conditions, opérateurs booléens et scripts   Atelier GML 2 - Conditions, opérateurs booléens et scripts Empty

Revenir en haut Aller en bas
 
Atelier GML 2 - Conditions, opérateurs booléens et scripts
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Atelier GML 3 - Trigonométrie, utilisation des lengthdir
» Charny Scripts [Beaucoup de scripts]
» Opérateurs téléphoniques?
» [Tutoriel] Les opérateurs binaires
» Atelier GML 1 - Fonctions et variables

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