• 20 heures
  • Facile

Ce cours est visible gratuitement en ligne.

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 24/10/2023

Les structures conditionnelles

Ouch, des mots compliqués ! Non, rassurez­-vous, cette partie est très simple bien que très importante. Il s’agit de créer des liens logiques entre les actions du joueur et les conséquences dans le jeu. Par exemple, si le personnage du joueur perd de la vie alors il devient moins rapide.

Il y a deux types de structures conditionnelles à connaître : Les conditions et les boucles.

Les conditions if et else

Les conditions permettent de tester l’état d’une variable au fil du jeu (inférieure, supérieure ou égale à une autre variable ou à un nombre fixe) puis d’y apporter une réponse appropriée. On les appelle if et else ce qui veulent dire si et sinon en français, et vous allez rapidement comprendre pourquoi avec cet exemple : « SI la variable Vie est égale à 10 ALORS la variable vitesse reste la même SINON elle diminue ».

Pour tester les conditions on utilise ces symboles :

Symbole

Signification

==

est égal à...

>

est supérieur à ...

<

est inférieur à...

>=

est supérieur ou égal à...

<=

est inférieur ou égal à...

!=

est différent de...

Si vous faites un peu de programmation, vous connaissez forcément les conditions ! C’est un grand classique. Maintenant, voyons comment mettre en place une condition avec Blueprint.

La fonction Branch

Dans Unreal Engine 4, « SI » et « SINON » sont représentés par la fonction « Branch ». Voici à quoi elle ressemble :

C'est quoi ce truc?

Ne prenez pas peur, c’est plutôt facile à comprendre. Comme nous l’avons vu, le SI / SINON (Branch ici) permet de comparer une variable par rapport à une autre.

Certains ont sans doute été intrigués par le terme « Condition » dans la Branch. C’est le rond rouge avec une checkbox (qui peut par ailleurs être décochée !). Il s’agit ici d’un autre type, le type boolean. Ce type de variable ne peut contenir que deux solutions : soit vrai (True) soit faux (False). On retrouve ce genre de condition au quotidien : la lumière est soit allumée, soit éteinte. Le joueur est soit dans le village soit il ne l'est pas.

Avec Branch, il ne peut y avoir que deux possibilités. Soit la condition est vraie, soit elle est fausse. Si vous essayez de déterminer si 5 est supérieur à 3, la condition vous répondra que la condition est « True » dont vraie car 5 est bien supérieur à 3 et c’est la seule réponse possible.

Ça sert à quoi de savoir ça ? Je le sais que 5 est supérieur à 3 !

Oui mais si au lieu de valeurs constantes vos variables contiennent des valeurs qui peuvent évoluer au fil du jeu (par exemple l’état du personnage (Vivant ou mort)), alors vous serez content d’avoir Branch à votre disposition !

La fonction Branch en action

Pour y voir plus clair, prenons un exemple concret : imaginons un jeu vidéo dans lequel le joueur possède 100 pièces d’or. Ce joueur se trouve à présent dans une boutique et il souhaite dépenser son argent pour s’acheter une nouvelle épée vendue 55 pièces d’or. On peut imaginer un programme qui va vérifier s’i il lui reste assez d’argent pour acheter l’épée :

Je ne l’ai pas précisé, mais si vous souhaitez trouver un symbole comme >, <, =>, !=, il vous suffit tout simplement de les taper dans la barre de recherche. N'oubliez pas de vous référer au tableau que j'ai mis au début du cours.

Vous l’aurez compris, en l’état, ce que je viens de faire ne fonctionne pas puisque la flèche blanche de la Branch située à sa gauche n’est reliée à rien.

Il faut relier cette Branch à un évènement, dans mon cas je vais reprendre l’évènement «Event BeginPlay » qui s’exécute quand on lance le jeu.

Sauf que… Rien ne va encore se passer, ou du moins vous n’allez pas le voir. Le programme va tester la condition et va déterminer si le joueur a assez d’argent mais pour le moment, nous n’avons pas dit quoi faire si cette condition est vraie. Le plus simple serait de prendre la fonction « Print String » et d’écrire dedans « Vous avez dépensé de l’argent » ou « Vous ne pouvez pas acheter ceci ». Car oui, vous n’êtes pas obligé de mettre une variable pour écrire dans la fonction « Print String », vous pouvez aussi écrire du texte brut.

N’oubliez pas de définir une valeur par défaut à vos variables à partir de la fenêtre « Détails » en la sélectionnant sinon, votre programme testera si 0 est supérieur à 0. Vous pouvez bien entendu le faire, mais autant prendre des valeurs différentes !

TP : un joueur entre dans une boutique

Je vous invite vivement à essayer d’aller plus loin en réalisant ce petit exercice :

  1. Afficher le nombre de pièces d’or que le joueur possède au début du jeu.

  2. SI la variable ArgentJoueur est suppérieur à PrixEpee, soustraire 55 pièces d’or à ArgentJoueur. (à mettre dans la partie « True » de Branch).

  3. SINON le joueur n’a pas assez d’argent, écrire à l’écran avec un Print String. (« Tu n’as pas assez d’or pour acheter cet objet »).

  4. Afficher le nombre de pièces d’or que le joueur possède après avoir acheter l’épée.

  5. Essayer les différentes combinaisons possible en changeant manuellement la valeur de «ArgentJoueur».

N’hésitez pas à partager vos résultats sur le forum ! Sinon, vous avez tout ce qu’il faut dans ce chapitre pour résoudre ce TP.

Prêt à passer aux boucles ? Parfait ! Vous allez voir, avec les conditions et les boucles, plus rien ne pourra vous arrêter.

Les boucles while et for

Il s’agit d’une autre notion importante en programmation. Une boucle permet de répéter certaines instructions plusieurs fois. Il en existe principalement deux : while et for.

La boucle while

Nous allons commencer par la boucle While qui veut dire “tant que”. Vous la trouverez, comme les fonctions, les variables et les events, en cliquant sur votre Blueprint et en effectuant une recherche rapide.

Si vous avez compris le principe des conditions, la boucle While ne va vous poser aucun problème ! En effet, avec WhileLoop, votre programme teste une égalité entre une variable et une autre et TANT QUE cette condition est vraie, ALORS on reste dans la boucle. L’exemple le plus simple est de faire un compteur.

TANT QUE la variable Compteur est inférieure à 10 ALORS on ajoute 1 à cette même variable. 

La boucle qui va s’effectuer ici va ajouter 1 à la variable Compteur tant que celle-ci est inférieure à 10. Quand la valeur de la variable Compteur atteint 10, la boucle s’arrête - sortie « Completed».

Voila à quoi ressemble votre compteur dans Unreal Engine :

Et si vous lancez le jeu, voilà ce qui s’affichera :

Passons à la 2ème boucle, c’est-à-dire la boucle « for ».

La boucle For

On va essayer d’afficher la même chose qu’avec la boucle While mais cette fois avec la boucle For.

Le principe de la boucle For

Une fois que vous êtes allé chercher la boucle For et que vous l’avez installée dans votre Bueprint, il y a deux paramètres à configurer :

  • First index  (la valeur de départ de la boucle)

  • Last index (la valeur qui met fin à la boucle).

Vous vous rappelez de la variable Compteur ? On lui avait attribué une valeur par défaut, c’est-à-dire 0. En plus, on avait précisé une condition avec la boucle While, ici ce n’est pas nécessaire. En effet, la déclaration de la variable se fait directement dans la fonction.

Avec une boucle For, ça donne ceci (voir screenshot ci-dessous). C’est le même programme mais écrit d’une manière différente. Il donne donc le même résultat en jeu - à une exception près - le compteur affiche 0 alors que la boucle while n’affiche pas la première valeur. Pour avoir exactement la même chose, il faut que « First Index » soit fixé à 1. 

Avant de passer à la suite du cours, il est indispensable que vous ayez bien compris comment fonctionne les boucles et les conditions. Ce sera la base de la plupart de vos programmes en Blueprint. 

TP : Les boucles

Cet exercice est sans doute plus compliqué que les autres ! Courage, vous pouvez y arriver mais persévérer ;) 

  1. Afficher à l’écran tous les nombres de 0 à 100. (0, 1, 2, 3, 4, 5, ... 99, 100)

  2. Multiplier CHAQUE nombre obtenu précédemment par 2 (0, 2, 4, 6, 8, 10, 12... )

  3. Si le résultat vaut 50, ALORS afficher "C'est la moitié!"

  4. Afficher tout les nombres précédemment obtenu à ‌l'écran

Et voilà ! C’est un immense pas en avant que vous venez de faire.

  • Vous savez maintenant ce qu'est une condition

  • Vous êtes capable d'utiliser la condition "Branch"

  • Vous avez appris à utiliser les deux boucles For et While.

Vous avez fait le plus dur ! Le reste sera super facile, allez, continuons notre aventure Blueprintienne ! 

Exemple de certificat de réussite
Exemple de certificat de réussite