Bonjour,
Je dois rendre un projet de programmation en java. Problème je comprend rein a ce langage. Je voulais savoir si vous pouvez me le faire .
Cordialement
le sujet :
Vous devez modéliser le projet par un diagramme de classes UML à partir des structures de
données initialement créées en langage C. Vous compléterez le modèle en associant les
fonctions définies en C aux classes correspondantes. Aide :
1. une fonction C d’initialisation devient un constructeur
2. une fonction C qui prend en paramètre une structure devient une méthode d’objet de la
classe correspondante à la structure
07/02/21 D:\Dropbox\2020-2021\1A-POO1\PRJ\Projet_POO1_2020_2021_Version_1.odt 1/7
3. une fonction C qui retourne une structure devient une méthode d’objet de la classe
correspondante à la structure.
4. La classe Plateau sera une classe statique qui contient les méthodes statiques d’affichage
des éléments. Le modèle est fourni, voir plus loin.
5. Prévoir tous les observateurs / modificateurs possibles.
4. CLASSES VAISSEAU / ALIENS ET PLATEAU (SEMAINE 12)
Vous allez créer les tests et validations des classe Vaisseau, Aliens et Plateau en accord avec les
modèles UML fournis.
Le non respect du nommage des classes de tests et du modèle UML entraînera l’absence de
correction de la part de l’enseignant et vous n’aurez aucun point à cette partie.
Toutes vos classes Java doivent être rangées dans un package nommé V1, puis V2
4.1. CLASSE VAISSEAU
Ecrire un programme TestVaisseau qui permet de tester intégralement votre classe Vaisseau
afin de produire la sortie suivante :
Test de la classe Vaisseau PROF 2020-2021
Création un vaisseau + affichage sur un plateau de largeur 5
VAISSEAU pos:2 célérité : 1 typetir : s tireEffectué : false
Boucle à droite d'un vaisseau + affichage
VAISSEAU pos:3 célérité : 1 typetir : s tireEffectué : false
VAISSEAU pos:4 célérité : 1 typetir : s tireEffectué : false
VAISSEAU pos:4 célérité : 1 typetir : s tireEffectué : false
Boucle à gauche d'un vaisseau + affichage
VAISSEAU pos:3 célérité : 1 typetir : s tireEffectué : false
VAISSEAU pos:2 célérité : 1 typetir : s tireEffectué : false
VAISSEAU pos:1 célérité : 1 typetir : s tireEffectué : false
VAISSEAU pos:0 célérité : 1 typetir : s tireEffectué : false
VAISSEAU pos:0 célérité : 1 typetir : s tireEffectué : false
Tir d'un vaisseau + affichage
VAISSEAU pos:0 célérité : 1 typetir : s tireEffectué : true
+ Tester tous vos observateurs / Modificateurs
07/02/21 D:\Dropbox\2020-2021\1A-POO1\PRJ\Projet_POO1_2020_2021_Version_1.odt 2/7
4.2. CLASSE ALIEN
4.2.1. TESTS D’UN ALIEN
Ecrire un programme TestAlien qui permet de tester exhaustivement votre classe pour un
Alien afin de produire la sortie suivante :
Test de la classe Alien PROF 2020-2021
Test Affichage 1 seul alien
Alien PosX=0 PosY=0 Vit=1 Pts Vie=1
Création affichage d'une liste de 5 aliens centrés sur un plateau de largeur 7 de hauteur 5
Test Affichage Liste aliens
Alien PosX=1 PosY=0 Vit=1 Pts Vie=1
Alien PosX=2 PosY=0 Vit=1 Pts Vie=1
Alien PosX=3 PosY=0 Vit=1 Pts Vie=1
Alien PosX=4 PosY=0 Vit=1 Pts Vie=1
Alien PosX=5 PosY=0 Vit=1 Pts Vie=1
Test Déplacement + Affichage Liste aliens
Alien PosX=2 PosY=0 Vit=1 Pts Vie=1
Alien PosX=3 PosY=0 Vit=1 Pts Vie=1
Alien PosX=4 PosY=0 Vit=1 Pts Vie=1
Alien PosX=5 PosY=0 Vit=1 Pts Vie=1
Alien PosX=6 PosY=0 Vit=1 Pts Vie=1
Test Déplacement d'une ligne d'un coup + Affichage Liste aliens
Alien PosX=2 PosY=1 Vit=1 Pts Vie=1
Alien PosX=3 PosY=1 Vit=1 Pts Vie=1
Alien PosX=4 PosY=1 Vit=1 Pts Vie=1
Alien PosX=5 PosY=1 Vit=1 Pts Vie=1
Alien PosX=6 PosY=1 Vit=1 Pts Vie=1
Test Boucle Déplacement + Affichage Liste aliens
Déplacement N°1
Alien PosX=0 PosY=2 Vit=1 Pts Vie=1
Alien PosX=1 PosY=2 Vit=1 Pts Vie=1
Alien PosX=2 PosY=2 Vit=1 Pts Vie=1
Alien PosX=3 PosY=2 Vit=1 Pts Vie=1
Alien PosX=4 PosY=2 Vit=1 Pts Vie=1
Déplacement N°2
Alien PosX=1 PosY=2 Vit=1 Pts Vie=1
Alien PosX=2 PosY=2 Vit=1 Pts Vie=1
Alien PosX=3 PosY=2 Vit=1 Pts Vie=1
Alien PosX=4 PosY=2 Vit=1 Pts Vie=1
Alien PosX=5 PosY=2 Vit=1 Pts Vie=1
Déplacement N°3
Alien PosX=2 PosY=2 Vit=1 Pts Vie=1
Alien PosX=3 PosY=2 Vit=1 Pts Vie=1
Alien PosX=4 PosY=2 Vit=1 Pts Vie=1
Alien PosX=5 PosY=2 Vit=1 Pts Vie=1
Alien PosX=6 PosY=2 Vit=1 Pts Vie=1
Déplacement N°4
Alien PosX=0 PosY=3 Vit=1 Pts Vie=1
Alien PosX=1 PosY=3 Vit=1 Pts Vie=1
Alien PosX=2 PosY=3 Vit=1 Pts Vie=1
Alien PosX=3 PosY=3 Vit=1 Pts Vie=1
Alien PosX=4 PosY=3 Vit=1 Pts Vie=1
Déplacement N°5
Alien PosX=1 PosY=3 Vit=1 Pts Vie=1
Alien PosX=2 PosY=3 Vit=1 Pts Vie=1
Alien PosX=3 PosY=3 Vit=1 Pts Vie=1
Alien PosX=4 PosY=3 Vit=1 Pts Vie=1
Alien PosX=5 PosY=3 Vit=1 Pts Vie=1
Déplacement N°6
Alien PosX=2 PosY=3 Vit=1 Pts Vie=1
Alien PosX=3 PosY=3 Vit=1 Pts Vie=1
07/02/21 D:\Dropbox\2020-2021\1A-POO1\PRJ\Projet_POO1_2020_2021_Version_1.odt 3/7
Alien PosX=4 PosY=3 Vit=1 Pts Vie=1
Alien PosX=5 PosY=3 Vit=1 Pts Vie=1
Alien PosX=6 PosY=3 Vit=1 Pts Vie=1
Déplacement N°7
Alien PosX=0 PosY=4 Vit=1 Pts Vie=1
Alien PosX=1 PosY=4 Vit=1 Pts Vie=1
Alien PosX=2 PosY=4 Vit=1 Pts Vie=1
Alien PosX=3 PosY=4 Vit=1 Pts Vie=1
Alien PosX=4 PosY=4 Vit=1 Pts Vie=1
Déplacement N°8
Alien PosX=1 PosY=4 Vit=1 Pts Vie=1
Alien PosX=2 PosY=4 Vit=1 Pts Vie=1
Alien PosX=3 PosY=4 Vit=1 Pts Vie=1
Alien PosX=4 PosY=4 Vit=1 Pts Vie=1
Alien PosX=5 PosY=4 Vit=1 Pts Vie=1
Déplacement N°9
Alien PosX=2 PosY=4 Vit=1 Pts Vie=1
Alien PosX=3 PosY=4 Vit=1 Pts Vie=1
Alien PosX=4 PosY=4 Vit=1 Pts Vie=1
Alien PosX=5 PosY=4 Vit=1 Pts Vie=1
Alien PosX=6 PosY=4 Vit=1 Pts Vie=1
Déplacement N°10 Ne dépasse pas
Alien PosX=2 PosY=4 Vit=1 Pts Vie=1
Alien PosX=3 PosY=4 Vit=1 Pts Vie=1
Alien PosX=4 PosY=4 Vit=1 Pts Vie=1
Alien PosX=5 PosY=4 Vit=1 Pts Vie=1
Alien PosX=6 PosY=4 Vit=1 Pts Vie=1
07/02/21 D:\Dropbox\2020-2021\1A-POO1\PRJ\Projet_POO1_2020_2021_Version_1.odt 4/7
4.3. CLASSE PLATEAU
4.3.1. CRÉATION DE LA PLATEAU
Afin d’anticiper la mise en place d’une option graphique pour le jeu, la Plateau sera une classe
statique dont le diagramme de classe UML est le suivant :
classe Plateau
Attributs
- statique Entier sLargeur=10;
- statique Entier sHauteur=10;
Méthodes
+ statique void afficherPlateau(Vaisseau v, List<Alien> listeAliens)
- statique void afficherLigne(int ligne, Vaisseau vaisseau, List<Alien> listeAliens)
permet d’afficher une ligne avec le Vaisseau (H), les Aliens (Z), le tir ou un vide ( )
Observateurs
+ statique Entier getHAUTEUR()
+ statique Entier getLARGEUR()
4.3.2. TEST D U PLATEAU
Ecrire un programme TestPlateau qui permet de tester la création d’un Vaisseau, d’une liste de
Aliens et leurs placements sur le Plateau. Produire la sortie suivante :
Création et affichage d'un plateau 20 de hauteur 10
====================
@@@@@@@@@@
#
====================
07/02/21 D:\Dropbox\2020-2021\1A-POO1\PRJ\Projet_POO1_2020_2021_Version_1.odt 5/7
5. VERSION 1 (SEMAINE 1 2 )
5.1. RAPPEL
Dans la version 1.0 du jeu, vous allez gérer les déplacements du Vaisseau et des Aliens. Le
Vaisseau se déplace sur sa ligne et il peut tirer. Il gagne s’il touche tous les aliens. Rappel, un
alien se déplace vers la droite du plateau, sauf si l’alien le plus à droite touche le bord droit du
plateau. Dans ce dernier cas, il faut alors faire descendre d’une ligne les aliens.
Si un alien rencontre le vaisseau celui ci a perdu.
5.2. PROGRAMME DE TEST (LANCEURNOMV1.JAVA )
Ce programme de test mettra en œuvre l’initialisation des éléments (Vaisseau, Aliens et Plateau)
et la boucle de jeu qui s’arrêtera pour les deux conditions énoncées dans le rappel.
La méthode suivante permet de récupérer au clavier le choix de l’utilisateur par scrutation
/**
* Méthode fournie qui fonctionne par scrutation du clavier (non bloquant)
* @param clavier
* @return le caractère saisi
*/
public char recupererAction(BufferedReader clavier) {
char ch = 'x';
try {
if (clavier.ready()) { // scrutation
ch = clavier.readLine().charAt(0);
}
} catch (IOException e) {
e.printStackTrace();
}
return ch;
}
Vous pourrez lire dans votre boucle de jeu s’il y a une saisie ainsi :
char action = recupererAction(clavier);// scrutation
Pour cela le clavier devra être construit en utilisant la classe BufferedReader
clavier = new BufferedReader(new InputStreamReader(System.in));
Vous devrez obligatoirement présenter cette version 1 lors de la soutenance (dans le package
V1) et en garder une archive à déposer sur l’ENT (sans aucune trace de la version 2 à venir)
07/02/21 D:\Dropbox\2020-2021\1A-POO1\PRJ\Projet_POO1_2020_2021_Version_1.odt 6/7
5.3. AIDE : CLASSE LOG
Afin d’étudier le comportement de votre jeu, vous pouvez utiliser la classe Log fournie qui
permet d’enregistrer dans un fichier (logs.txt) les messages que vous souhaitez (ce qui peut
éviter de polluer votre affichage et passer outre la taille limite de la console). Vous avez aussi et
surtout le mode Debug d’Eclipse qui permet d’analyser le comportement du programme.
import java.io.FileWriter;
import java.io.IOException;
public class Log {
public static FileWriter fichierLog=null;
public static void createLog() {
try {
fichierLog = new FileWriter("logs.txt");
} catch (IOException e) {
e.printStackTrace();
}
}
public static void message(String message) {
try {
fichierLog.append(message);
} catch (IOException e) {
e.printStackTrace();
}
}
public static void close() {
try {
fichierLog.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
1. C’est une classe statique, il faut appeler en premier dans le main : Log.createLog();
2. Puis utiliser : Log.message(); depuis n’importe quelle classe du projet
3. Enfin, fermer le fichier à la fin du programme Log.close() ;