Blog ENI : Toute la veille numérique !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
💥 Du 22 au 24 novembre : Accès 100% GRATUIT
à la Bibliothèque Numérique ENI. Je m'inscris !
  1. Livres et vidéos
  2. Design Patterns
  3. Concevoir une application d’envergure
Extrait - Design Patterns Apprendre la conception de logiciels en réalisant un jeu vidéo (avec exercices et corrigés)
Extraits du livre
Design Patterns Apprendre la conception de logiciels en réalisant un jeu vidéo (avec exercices et corrigés) Revenir à la page d'achat du livre

Concevoir une application d’envergure

Le travail de conception : un gain de temps considérable

1. Un exemple simple

La réalisation d’une application d’envergure nécessite un important travail de conception. Lorsqu’on débute dans le développement informatique, la dépense d’énergie réclamée pour cette conception n’est pas naturelle. Cela est tout à fait normal : pourquoi perdre tant de temps alors qu’il est - a priori - bien plus efficace de se plonger immédiatement dans le code ? Les personnes ayant tenté cette approche naïve pourront témoigner qu’elle n’est absolument pas la bonne - sauf peut-être pour des problèmes extrêmement simples. Il n’est cependant pas facile de s’en convaincre sans avoir personnellement vécu cette expérience.

Dans le but de reproduire l’expérience d’une réalisation sans conception, un exemple simple est considéré : le jeu de dames. Ce jeu comporte 8 pions noirs et 8 pions blancs placés sur un damier de 8 par 8 cases. Seules les cases noires peuvent accueillir des pions.

L’état initial est le suivant :

images/01RI001.png

Il y a deux types de déplacement : déplacement vers une case adjacente libre, et « sauter » un pion de l’autre couleur. La création de pions « dames » n’est pas considérée dans cet exemple.

Jouant le jeu de l’implantation immédiate sans conception, le code suivant a été produit :

import java.awt.BorderLayout; 
import java.awt.Color; 
import java.awt.Dimension; 
import java.awt.Graphics; 
import java.awt.event.MouseEvent; 
import java.awt.event.MouseListener; 
import javax.swing.JComponent; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
 
/** 
 * Unique classe qui contient l'ensemble du jeu de Dames (affichage, 
 * déplacements, interaction, etc.) 
 */ 
public class Checkers extends JFrame implements MouseListener { 
    // Damier. Trois valeurs possibles: 1 joueur blanc, 0 joueur noir, -1 case vide 
    private int board[][]; 
    // Joueur actuel (1 ou 0) 
    private int currentPlayer; 
   ...

Démarrage

Cette section présente les éléments nécessaires pour bien démarrer la conception puis la réalisation du jeu vidéo.

1. Choix du jeu

Le choix du jeu vidéo développé aura naturellement un impact important sur l’acquisition des compétences présentées dans cet ouvrage. Il peut être pertinent de suivre le livre tout en développant un premier jeu assez simple, puis d’en faire une deuxième lecture pour un deuxième jeu plus ambitieux. Les éléments qui suivent aideront le lecteur à mieux anticiper les éventuelles difficultés.

Graphismes

Lorsqu’on pense aux jeux vidéo, le premier élément qui vient à l’esprit est celui des graphismes. Le choix le plus simple et le plus rapide est de tout faire en texte, mais il limite beaucoup les possibilités. Puis, le choix de graphismes en 2D selon une grille régulière, comme dans le jeu Pacman présenté en exemple, n’est pas beaucoup plus difficile qu’avec des graphismes en texte. En outre, il est facile de trouver des sprites 2D sur Internet, permettant de ne pas avoir à produire les textures soi-même. Pour le cas des graphismes 3D, les choses sont plus compliquées. Sans moteur graphique avancé, il est nécessaire de passer par des bibliothèques bas niveau, comme OpenGL ou DirectX. Cette approche requiert un haut niveau de compétences, qui risque de noyer le lecteur non formé dans ce domaine. Avec un moteur graphique avancé, il est très probable que des choix de conception soient imposés. Cet état de fait ne permet pas de mener ses propres expériences en termes de conception, le principal objectif de ce livre étant de savoir concevoir des solutions complexes. En d’autres termes, un des objectifs du livre est d’être capable de créer un moteur graphique avancé, et non simplement d’être capable d’en utiliser un. En conclusion, faire un jeu en 3D en suivant cet ouvrage n’est intéressant que lorsqu’on a déjà un bon niveau de développeur, et avec une approche sans moteur graphique avancé, en travaillant directement avec OpenGL ou DirectX.

Audio

Les aspects audio ne sont pas indispensables...