May 19, 2024

Wiki

Python

Aide

edit SideBar

Search

Singleton

Le modèle de la partie.

Lors d'une partie, le programme doit gérer

  • le nom du joueur actif ;
  • le nombre de graines capturées par le joueur 0 ;
  • le nombre de graines capturées par le joueur 1 ;
  • le nombre de graines présentes sur chaque case du plateau ;
  • le status de la partie.

Travaux pratiques

  1. Récupérer le code de Partie.java et comprendre chaque méthode.
  2. Instancier quelque part un objet de type partie. Corriger les éventuelles typos.

Le patron de singleton

A tout instant dans l'application, il ne doit y a voir qu'une seule instance du modèle de jeu. Cette instance doit être accessible depuis tout endroit de l'application et doit survivre tant que l'application est vivante.

Pour cela, on peut utiliser le modèle de programmation de singleton: on n'accède au modèle que via une classe qui instancie une seule fois l'objet à la première demande et récupère ensuite l'objet à tout accès ultérieur.

  public class ModeleJeu {
	private static ModeleJeu mj = null;
	private static Partie p =null;
	private Context mAppContext;

	private ModeleJeu(Context c){
		p = new Partie();
		mAppContext = c.getApplicationContext();
	}

	public static Partie recup(Context c){
		if (ModeleJeu.mj == null){
			mj = new ModeleJeu(c);
		}
		return p; 
	}	

}

Travaux pratiques

  1. Expliquer ce qui se passe lors du premier appel de la méthode recup(Context c).
  2. Et lors des appels ultérieurs ?
  3. Qu'est ce que c.getApplicationContext() ?

Mise à jour de la vue

On construit l'affichage de PlateauView dans la méthode protected void onDraw(Canvas canvas) de la clase.

L'affichage du joueur actif, du contenu des cases, du nombre de graines capturées par chacun se fait:

  1. en récupérant la partie via la méthode recup
  2. en fixant les contenu textuels en fonction des données méomrisées dans l'objet p.

Travaux pratiques

  1. Implanter la méthode protected void onDraw(Canvas canvas)
  2. implanter la méthode onClick(View v)

Page Actions

Recent Changes

Group & Page

Back Links