1/8
L2 année 2015-2016
L2 - POO et langage JAVA
Les interfaces graphiques, IHM, Programmation événementielle
CORRIGE
Exercice 1 : Le jeu du Pendu
Consigne: Le jeu consiste pour le joueur A à trouver un mot en devinant les lettres qui le composent.
Initialement le joueur B lui indique la longueur du mot à trouver. Ensuite pour chaque lettre proposée
par le joueur A le programme lui indique les différentes places de celle-ci dans le mot. Si la lettre
n'appartient pas au mot cela est considéré comme une erreur et le coup est comptabilisé. Si le
nombre d'erreurs dépasse 10 le joueur A est pendu... Si le joueur A a trouve le mot en moins de 10
essais le joueur A a gagné la partie
Le programme demande la saisie d'un mot qu'on appellera "secret".
Le programme crée (et affiche) alors un mot "masque" c'est à dire une chaîne de caractère qui ne
contient que des "-" et autant qu'il y a de lettres dans le mot secret.
Exemple, si le mot secret est "toto", le mot masque est "----".
1 Le programme demande la saisie d'une lettre...
2 va vérifier si cette lettre est présente dans le mot secret
3 modifie en conséquence le mot masque,
4 affiche le mot masqué.
Exemple (suite), si l'utilisateur saisie la lettre "t" le mot masque doit devenir "t-t-".
Le programme regarde si toutes les lettres ont été devinées, dans ce cas il arrête le jeux par victoire
et affiche le mot secret.
Le programme regarde le nombre de tentatives ratées et arrête le jeu s'il atteint 10.
Le programme reprend à l'étape de saisie d'une lettre, si le nombre de tentatives ratées est inférieur
à 10.
Ecrire l’algorithme correspondant en pseudo-code puis le transcrire en JAVA
Dans un premier temps toutes ces étapes peuvent être d'abord toutes réalisées dans le main.
Dans un deuxième temps découpez le code en des fonctions statiques de la classe principale, pour
mieux organiser le code.
2/8
Corrigé Pendu Question 1
package pendu;
import java.util.*;
public static void main(String[] args) {
int nbcoups=0;
Scanner in = new Scanner(System.in);
System.out.println("Hello Jeu du Pendu ");
System.out.print("Donnez le mot secret ?");
String secret = in.nextLine(); // saisir au clavier le mot secret
String masque="";
for(int i=0;i<secret.length();i++){ // initialiser le mot masqué à -------
masque=masque+"-";
}
char tabMasque[]=masque.toCharArray(); // convertir la chaine mot masqué en tableau de
char
System.out.println("VOICI LE MOT MASQUE INIT : "+masque);
while ((nbcoups<=10)&&(!masque.equals(secret))){ // tant que le nb de coups <=10 et mot
secret!=mot masqué
System.out.print("Donnez une lettre : ");
Scanner sc = new Scanner(System.in);
String str = sc.nextLine(); // saisir une lettre au clavier sous forme de chaine
char lettre = str.charAt(0); // convertir la chaine en un seul caractère
nbcoups++;
for(int i=0;i<secret.length();i++)
{
if (lettre==secret.charAt(i)) { // chercher la lettre lue dans le mot secret
tabMasque[i]= lettre; // si la lettre est trouvée la mettre dans le mot masqué
}
}
masque=String.valueOf(tabMasque); // convertir le tableau masqué en chaine
System.out.println("voici le mot masqué " +masque+" :") ; // afficher le mot masqué
} // fin du while
if (nbcoups>=10){
System.out.println("PENDU le mot secret est "+secret ) ;
}
else {
System.out.println("Bravo jeu gagné en "+nbcoups+" coups" ) ;
}
}
}
3/8
Corrigé Pendu Question 2
import java.util.*;
/** Le programme demande la saisie d'un mot qu'on appellera "secret".
Le programme crée (et affiche) alors un mot "masque" c'est à dire "----".
1 Le programme demande la saisie d'une lettre...
2 va vérifier si cette lettre est présente dans le mot secret
3 modifie en conséquence le mot masque,
4 affiche le mot masqué.
Le programme regarde si toutes les lettres ont été devinées, dans ce cas il arrête le
jeux par victoire et affiche le mot secret.
Le programme regarde le nombre de tentatives ratées et arrête le jeu s'il atteint 10.
Le programme reprend à l'étape de saisie d'une lettre, si le nombre de tentatives
ratées est inférieur à 10. **/
public class Pendu2 {
static String masque="";
static String secret="";
static char tabMasque[];
static int nbcoups=0;
static char lettre;
public static void Demarage() {
Scanner in = new Scanner(System.in);
System.out.println("Hello Jeu du Pendu Version 2");
System.out.print("Donnez le mot secret ?");
secret = in.nextLine(); // saisir au clavier le mot secret
for(int i=0;i<secret.length();i++){//initialiser le mot masqué à -------
masque=masque+"-";
}
tabMasque=masque.toCharArray(); //convertir la chaine mot masqué
//en tableau de char
}
public static void AfficheResultat() {
if (nbcoups>=10){
System.out.println("PENDU le mot secret est "+secret ) ;
}
else {
System.out.println("Bravo jeu gagné en "+nbcoups+" coups" ) ;
}
}
public static void CorrigeMotMasque() {
for(int i=0;i<secret.length();i++) {
if (lettre==secret.charAt(i)) {// chercher la lettre lue dans le mot secret
tabMasque[i]= lettre; //si la lettre trouvée la mettre dans mot masqué
}
}
masque=String.valueOf(tabMasque); // convertir le tableau masqué en chaine
System.out.println("voici le mot masqué " +masque+" :") ;
// afficher le mot masqué
}
4/8
static void DemanderLettre(){
System.out.print("Donnez une lettre : ");
Scanner sc = new Scanner(System.in);
String str = sc.nextLine(); // saisir une lettre au clavier sous forme de chaine
lettre = str.charAt(0); // convertir la chaine en un seul caractère
}
public static void main(String[] args) {
Demarage() ;
while ((nbcoups<=10)&&(!masque.equals(secret))){
// tant que le nb de coups <=10 et mot secret!=mot masqué
nbcoups++;
DemanderLettre();
CorrigeMotMasque() ;
} // fin du while
AfficheResultat();
}
}
5/8
Exercice 2 : Les interfaces graphiques
A - Comprendre la notion de programmation événementielle en réalisant l’exemple du timer vu en cours. Ici
c'est l'objet t de type Timer qui générera un évènement toutes les secondes. Après avoir démarré le timer, et
quelque soit la suite du programme, il affichera la date toutes les secondes.
import java.awt.event.*;
import java.util.*;
import javax.swing.Timer;
public class Timer {
static public void main(String args[]) {
TimerTask listener = new TimerTask();
Timer t = new Timer(1000,listener);
t.start(); // t generera un événement toutes les 1000 milisec
while(true); // boucle d'attente des événements
}
}
class TimerTask implements ActionListener {
public void actionPerformed(ActionEvent event) {
System.out.println(new Date());
}
} Résultat : Sat Mar 08 12:17:13 CET 2014
Sat Mar 08 12:17:14 CET 2014
Sat Mar 08 12:17:15 CET 2014
B- a) Créer une fenêtre appelée « Coucou»
import java.awt.*;
import java.util.*;
import javax.swing.*;
public class Coucou {
JFrame fenetre;
public Cocou() { // constructeur
fenetre = new JFrame("Coucou"); // conteneur
fenetre.setLayout(new BorderLayout()); // placement
fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// fermeture fenêtre
}
public static void main(String[] args) {
new Coucou().fenetre.show();
}
}
b) puis y insérer un bouton appelé « Hello »
1 / 8 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !