TD 6 - Arkanoid

Arkanoid

Arkanoid est un classique du jeu de casse-brique. Dans ce type de jeu, le joueur contrôle une raquette qui se déplace uniquement sur un axe horizontal. Cette raquette permet entre autres de renvoyer une balle vers des briques qui se brisent une fois qu’elles sont touchées par la balle. Le but du jeu est de détruire toutes les briques sans que la balle tombe en bas de l’écran.

Nous allons créer ce jeu dans Unity.

Modélisation

Pour le bien du TP, merci de télécharger les sources du projet Unity à l’adresse suivante : http://lucienmousin.fr/p3d/arkanoid/Arkanoid-p3d-student.zip (Note: ne jugez pas la qualité du projet, je n’ai jamais fait de Unity avant la semaine dernière…)

Dans ce projet, le jeu est déjà opérationnel dans sa version de base (on peut lancer une partie, casser les briques, perdre, etc.). Le but du TP est d’améliorer ce jeu, tout en utilisant ce que vous connaissez de la programmation orientée objet, et en particulier l’héritage.

Ainsi dans ce TP, vous allez surtout créer/modifier les scripts c# et très légèrement les prefabs pour leur donner les scripts qui vont bien.

La classe Racket

Représente l’entité du joueur et sera modélisé par la raquette. Et dispose des attributs suivants :

  • La taille de la raquette (elle peut varier en fonction des bonus)
  • Le nombre de vies (entre autres le nombre de balles restantes au joueur)
  • Le score (chaque brique donne un score)
  • La vitesse de déplacement

Cette classe est déjà créée, vous n’avez a priori pas à la toucher

La classe Ball

Représente l’entité d’une balle. Vous n’avez pas à la modifier. Les méthodes à l’intérieur sont :

  • start(): sers à définir une direction de départ aléatoire
  • FixedUpdate() : Teste juste si la balle sort de la zone de jeu, et s’il reste des vies ou non.
  • OnCollisionEnter2D(Collision2D) : Gère le rebond de la balle sur la raquette grâce à la fonction hitFactor

Les classes ScoreScript et WinScript

Permettent juste l’affichage du score et de la victoire (ou défaite). Je n’ai pas trouvé comment faire mieux avec Unity.

La classe InstanciateBrick

Comme son nom l’indique, elle sert à instancier les différents types de briques aléatoirement sur l’espace de jeu.

La classe Brique

L’entité Brique (brick) est caractérisée par un nombre de points reçus par le joueur lorsqu’il casse la brique et par l’effet qu’elle peut éventuellement produire sur le joueur.

On dispose des briques suivantes :

  • La brique bleue : rapporte 1 point et est sans effet.
  • La brique jaune : rapporte aléatoirement 1 à 5 fois le score de la brique bleue
  • La brique violette : rapporte autant de points qu’une brique bleue et augmente la taille de la raquette de 50% (la raquette ne peut pas être plus de 4 fois plus grande que sa taille d’origine).
  • La brique verte : rapporte 3 fois plus de points qu’une brique bleue et ajoute une vie au joueur.
  • La brique rouge: Fais perdre un nombre de points aléatoirement entre 1 et 5 et diminue la taille de la raquette de 50%.

Actuellement, toutes les briques de couleurs ont un seul script : Brick.cs qui correspond à une implémentation de la brique bleue.

  1. Modifiez la classe Brick.cs et ajoutez de nouvelles classes pour respecter le cahier des charges ci-dessus.

On va maintenant ajouter de nouvelles briques. Toutes les briques précédentes doivent aussi exister en version double effet. C’est-à-dire que le nombre de points et l’effet sont doublés. Pour exemple :

  • La double brique verte : rapporte 6 fois plus de points qu’une brique bleue et ajoute 2 vies au joueur
  1. Écrivez la ou les classes permettant d’obtenir une version double effet pour chaque type de brique.

On va maintenant ajouter les briques resistante qui doivent être touché un certain nombre de coups pour être détruite.

  1. Écrivez la ou les classes permettant ce type de brique.