A - Les mécaniques de base
+ Behaviors utilisés : Custom movement, Wrap, Pin, Bullet, Destroy outside of layout, Rotate; Objets utilisés : System, Sprite, Keyboard.
Pour ce tutoriel, j'ai commencé par utilisé le fichier "Custom movement (asteroids).capx" d'Ashley dans le dossier "examples" qui est dans le dossier où vous avez installé C2.
Vous pouvez remarquer, si vous ne l'avez jamais ouvert, que ce dossier contient plusieurs projets montrant comment monter un projet et comment réaliser les comportements "usuels" au jeu vidéo.
Avec 5 événements, l'objet "vaisseau/joueur" utilise un custom movement (mouvement préréglé) et un wrap(l'objet qui va d'un bout de l'écran pour retourner dans l'autre bout de l'écran) comme demandé.
Les touches du clavier (l'objet "Keyboard" a été ajouté au projet) font bouger le vaisseau dans le terrain de jeu, et la touche "espace" permet de tirer des objets "Bullet" (balles).
Ce sont les bases.
Ouvrez le projet final capx (que vous pouvez télécharger à la page d'Arcade), vous pouvez voir qu'il y a beaucoup plus de code et d'éléments en comparaison avec l'exemple original. Il y a trois layouts (espace de travail). Chaque layouts a un event sheet (page d'événement) attaché à lui (chaque event sheet est nommé avec le préfixe "es" et le nom du layout qui lui est attaché; c'est une convention personnelle pour savoir ce que je programme et quel event sheet y est rattaché).
Splash : c'est l'écran d'acceuil
Score : c'est l'affichage et la vérification des scores après l'écran d'accueil et le jeu
Game : c'est le layout où il y a le jeu.
1 - Contrôles et configurations du vaisseau
Vous pouvez trouver les événements sur l'exemple original dans le groupe "PlayerMovement" dans "esGame". (event 2)
Dans le projet final, vous pouvez voir qu'il y a plus de mouvements que dans l'exemple original.
C'est parce que je développais le jeu et que j'avais besoin d'un peu plus d'actions/choses à faire faire/exécuter par le joueur.
Par exemple, je voulais que des flammes soient affichées quand le vaisseau est en train d'avancer ou de freiner.
J'ai donc utilisé une astuce.
Les flammes pour freiner et celles pour avancer sont deux sprites différents.
Les animations viennent du dossier "FX" du pack gratuit de Scirra.
Encore une fois, référez vous au Guide pour débutant pour Construct 2 pour apprendre comment créer un nouveau sprite et importer une texture dedans.
Vous pouvez ouvrir le layout "Game", et voir les 5 éléments distincts, placés sur le même layer (calque) que le vaisseau, au-dessus de lui.
Chaque sprite ("Thrust" (poussée) et "Brakes"(freiner)) doit afficher une looping animation (une série d'images qui se répètent).
Chaque sprite a un Pin" behavior (position d'un objet par rapport à un autre) et a la propriété "Initial Visibility" (visibilité initiale) sur "Invisible".
Depuis que j'ai placé ces sprites correctement sur le layout view (l'affichage du layout), tout ce que j'ai à faire c'est que "On start of layout" (Au moment où le layout démarre) (event 1 dans esGame), ces sprites doivent être rattachés au vaisseau. Je n'ai, donc, pas besoin de les placer correctement puisqu'ils vont apparaître sur le vaisseau dans la même position et le même angle.
"Brakes" a quatre instances sur la même animation, et quand je rend le sprite visible ou invisible, toutes les instances sont alors affectées.
De retour dans le groupe "PlayerMovement", vous remarquerez que quand "UP key is down" (la touche "vers le haut" est enfoncée) (event 3) (soit tant que celle-ci est enfoncée), le sprite "Thrust" devient visible. Cette animation est naturellement jouée sans avoir besoin d'autres action dessus.
Event 5, quand "UP key is released" (la touche "UP" est relâchée), le sprite retourne à l'invisible.
Il y a d'autres événements en plus des deux, mais ces sous événements et actions relèvent de l'audio, un sujet que je vais aborder plus tard et laisser de côté pour l'instant.
La même logique s'applique pour la touche "DOWN" (aller en bas). A la place de l'objet "Thrust", nous allons nous concentrer sur le sprite "Brakes", et comme c'est mentionné plus tôt, les instances du sprite sont toutes modifiées en même temps que l'on modifie le sprite.
Pour finir avec les contrôle du vaisseau, presser (soit pousser vers le bas et relâcher "in a row" (de suite)) le bouton "Space" (espace) fait apparaître une "Bullet" (balle).
La "Bullet" a simplement un behavior (comportement) "Bullet".
Il contient aussi un behavior "Destroy outside of layout" (détruire à la sortie du layout). Cela prévient que chaque "Bullet" qui sort de l'écran ne reste pas en mémoire aussi longtemps que le jeu s’exécute, ce qui pourrait avoir comme résultat de pomper toute la ressource mémoire.
Cela a aussi un impact "stratégique" sur le game play, puisque vous pourriez juste tirer continuellement et espérer que les balles frappent par chance un astéroïde.
Encore une fois, le but est que le joueur tire sur les astéroïdes, et non qu'il tire aléatoirement.
Comme première étape pour le système de score, vous remarquerez qu'il y a une variable globale "Score" et qu'elle va enregistrer le score du jeu.