Bonjour... Nous sommes vendredi soir 8hpm et je dois remettre ce travail lundi matin.. Voici ce qui devait etre fait... Un jeu de battleship, qui ce joue seulement a 1 joueur, contre un advesraire virtuel. Le but, coulé ses 4bateaux, soit un de 2, 2 de 3 et 1 de 4.. Il faut faire 3 niveaux de jeu, soit débutant, intermédiaire et difficile... J'ai commencé par initialisé les missiles a 60, mais je veux faire 50 pour l'intermédiaire et 40 pour le difficile.. Maintenant, j'ai fait l'interface... Lorsqu'on appuie sur une lettre, (qui est un bouton), et un chiffre, les deux doivent afficher dans un text area a droite, et aussi. Ensuite, il faut faire feu..Avec un autre bouton...L'exécution se fait a partir du fichier Battleship.java. J'ai créé ce projet dans JCreator.. Il faut une interraction avec la personne qui joue... Je ne sais pas comment faire le lien entre les boutons A1 comme exemple, et la grille virtuelle.. Ensuite, le jeu battleship doit communiquewr a la grille de jeu si on a touche ou pas pour ensuite changer la couleur du careau. Blanc s'il n'y a rien et rouge si on a touché. J'ai seulement réussi a créer 3 bateau... IL m'en manque encore un de 3.... En tous cas, si vous pouvez m'aider, ce serait tres apprécié... merci...
Voici ma classe Battleship.
//Classe principale du jeu.. L'action de toutes les autres classes est effectuée ici.
package myprojects.battleship;
import java.io.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
//*La classe Battleship*
public class Battleship extends JFrame{
//*Déclaration des champs*
private int munition ;
//*Création de l'interface de jeu*
private GestionTitre titre;
private GestionPanelMissile pnlMissile;
private GestionBoutonsLettre butLettre;
private GestionBoutonsChiffre butChiffre;
private GestionGrilleDeJeu buttonGrilleDeJeu;
private GestionPanelTxtBas pnlBas;
//*JPanel*
private JPanel pnlGrille; //panel incluant la grille de jeu et les boutons chiffres et lettre
//*La méthode Battleship*
public Battleship()
{
//*Initialisation des composants*
this.pnlGrille = new JPanel();
this.pnlGrille.setLayout(new BorderLayout());
this.titre = new GestionTitre();
this.pnlMissile = new GestionPanelMissile();
this.butLettre = new GestionBoutonsLettre(this);
this.butChiffre = new GestionBoutonsChiffre(this);
this.buttonGrilleDeJeu = new GestionGrilleDeJeu();
this.pnlBas = new GestionPanelTxtBas(this);
//*Container*
Container c = this.getContentPane();
c.setLayout(new BorderLayout());
//*Insérer les panels dans le frame*
c.add(titre,BorderLayout.NORTH);
c.add(pnlGrille, BorderLayout.CENTER);
c.add(pnlMissile, BorderLayout.EAST);
c.add(pnlBas, BorderLayout.SOUTH);
//*Insérer les composantes dans les panels*
this.pnlGrille.add(butLettre, BorderLayout.WEST);
this.pnlGrille.add(buttonGrilleDeJeu, BorderLayout.CENTER);
this.pnlGrille.add(butChiffre, BorderLayout.SOUTH);
//Attribut du frame
this.setSize(720,700);
this.setTitle("BATTLESHIP");
this.setResizable(false);
}
//Méthode qui initialise les composantes.
public void creerNouvellePartie()
{
munition = 10;
pnlMissile.ecrireMissile("Munition X "+ String.valueOf(munition));
}
//Méthode qui décrémente les missiles.
public void decrementerMissile()
{
if(munition == 1)
{
pnlBas.ecrireTxtBas("Désolé vous avez écoulé toutes vos munitions.\n\n Game Over\nAppuyez sur 'Nouvelle partie' pour rejouer.");
}
munition = munition-1;
pnlMissile.ecrireMissile("Munition X "+ String.valueOf(munition));
}
//Méthode qui affiche les chiffres choisies dans le text area.
public void afficherChiffre(String x)
{
pnlMissile.ecrireTexte(x);
}
//Méthode qui affiche les lettres choisies dans le text area.
public void afficherLettre(String x)
{
pnlMissile.ecrireTexte(x);
}
//Méthode qui
//Le main
public static void main(String args[])
{
Battleship jeu = new Battleship();
jeu.setVisible(true);
}//Fin du main
}//Fin de la classe Battleship
Voici celle qui gere les boutons chiffres
//Classe qui gère les bouttons (de 1 à 10), en bas de la grille de jeu.
package myprojects.battleship;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class GestionBoutonsChiffre extends JPanel implements ActionListener{
//champs
private JButton[] buttonChiffre;
private Battleship boat;
int x;
//La méthode ButtonLettre
public GestionBoutonsChiffre(Battleship bat){
this.boat = bat;
this.setLayout(new GridLayout(1,11));
this.buttonChiffre = new JButton[11];
this.creerButtonChiffre();
}
public void creerButtonChiffre(){
buttonChiffre[0] = new JButton("");
buttonChiffre[1] = new JButton("1");
buttonChiffre[2] = new JButton("2");
buttonChiffre[3] = new JButton("3");
buttonChiffre[4] = new JButton("4");
buttonChiffre[5] = new JButton("5");
buttonChiffre[6] = new JButton("6");
buttonChiffre[7] = new JButton("7");
buttonChiffre[8] = new JButton("8");
buttonChiffre[9] = new JButton("9");
buttonChiffre[10]= new JButton("10");
for(int j =0;j<11;j++)
{
buttonChiffre[j].setBackground(new Color(2,0,168));
buttonChiffre[j].setForeground(Color.lightGray);
buttonChiffre[0].setBackground(Color.lightGray);
this.add(buttonChiffre[j]);
this.buttonChiffre[j].addActionListener(this);
}
}
public void actionPerformed(ActionEvent ev){
for(int j =0;j<11;j++){
if(ev.getSource() == buttonChiffre[j])
{
x=j;
boat.afficherChiffre(buttonChiffre[j].getText());
System.out.println(Integer.parseInt(buttonChiffre[j].getText()));
}
}
}
}
Celle qui gere les lettres
//Classe qui gère les bouttons (de A à J), a gauche de la grille de jeu.
package myprojects.battleship;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class GestionBoutonsLettre extends JPanel implements ActionListener{
//champs
private JButton[] buttonLettre;
private Battleship boat;
int y;
//La méthode ButtonLettre
public GestionBoutonsLettre(Battleship bat){
this.boat = bat;
this.setLayout(new GridLayout(10,1));
this.buttonLettre = new JButton[10];
this.creerButtonLettre();
}
public void creerButtonLettre(){
buttonLettre[0] = new JButton("A");
buttonLettre[1] = new JButton("B");
buttonLettre[2] = new JButton("C");
buttonLettre[3] = new JButton("D");
buttonLettre[4] = new JButton("E");
buttonLettre[5] = new JButton("F");
buttonLettre[6] = new JButton("G");
buttonLettre[7] = new JButton("H");
buttonLettre[8] = new JButton("I");
buttonLettre[9] = new JButton("J");
for(int j=0;j<10;j++)
{
buttonLettre[j].setBackground(new Color(2,0,168));
buttonLettre[j].setForeground(Color.lightGray);
this.add(buttonLettre[j]);
this.buttonLettre[j].addActionListener(this);
}
}
public void actionPerformed(ActionEvent ev){
for(int j =0;j<10;j++){
if(ev.getSource() == buttonLettre[j])
{
y=j;
boat.afficherLettre(buttonLettre[j].getText());
System.out.println(j);
}
}
Celle de la grille de jeu
//La classe qui gère la grille de jeu principale.
package myprojects.battleship;
import java.awt.*;
import javax.swing.*;
public class GestionGrilleDeJeu extends JPanel{
//champs
private JButton[][] buttonGrilleDeJeu;
//La méthode gestionGrilleDeJeu
public GestionGrilleDeJeu(){
this.buttonGrilleDeJeu = new JButton[10][10];
this.setLayout(new GridLayout(10,10));
this.setBorder(BorderFactory.createBevelBorder(1,Color.lightGray, Color.darkGray));
this.setBackground(new Color(2,0,168));
this.creerGrilleDeJeu();
}
public void creerGrilleDeJeu(){
for (int i=0; i<10; i++)
{
for(int j=0; j<10; j++)
{
buttonGrilleDeJeu[i][j] = new JButton();
buttonGrilleDeJeu[i][j].setBackground(Color.lightGray);
buttonGrilleDeJeu[i][j].setBorder(BorderFactory.createBevelBorder(1));
//*Placer les bouton dans le panel de la grille de jeu*
this.add(buttonGrilleDeJeu[i][j]);
}
}
}
}//Fin de la classe GestionGrilleDeJeu
Celle de la grille virtuelle
//La classe qui gère la grille Virtuelle ou se place les bateaux.
package myprojects.battleship;
import java.io.IOException;
import java .util.Random;
//*La classe GestionGrilleVirtuelle*
public class GestionGrilleVirtuelle
{
//Champs et initialisation
private int i=0;
private int ranCol=0;
private int ranRow=0;
private int direction=0; //1 est horizontal et 2 est vertical
private int [][] GrilleVirtuelle = new int[10][10];
private int goodchoice =1;
private int rows=10;
private int cols=10;
int x;
int y;
//Méthode qui gère la grille virtuelle
public GestionGrilleVirtuelle()
{
this.creationGrilleVirtuelle();
this.afficherGrilleVirtuelle();
}
//Méthode qui crée la grille virtuelle en mémoire
public void creationGrilleVirtuelle()
{
for (i=0;i<10; i++)
{
for (int j=0; j<10; j++)
{
GrilleVirtuelle[i][j]=0;
}
}
Random numValues= new Random();
//selectionner (au hasard) le coin supérieur gauche du bateau et sa direction
for (i=2; i<5; i++)
{
do
{
goodchoice = 1; //set goodchoice to 1 so the next choice can be checked
direction=(int)(numValues.nextDouble()*2)+1;
//Pour que le bateau ne dépasse pas
if (direction==1) //1 pour horizontal
{
ranCol=(int)(numValues.nextDouble()*(10-i));//=Math.abs(numValues.nextInt()%12 + 1);
ranRow=(int)(numValues.nextDouble()*10);
}
else if (direction==2) //2 pour vertical
{
ranCol=(int)(numValues.nextDouble()*10);//=Math.abs(numValues.nextInt()%12 + 1);
ranRow=(int)(numValues.nextDouble()*(10-i));
}
for(int i2=0; i2 < 10; i2++) //rows
{
for (int j=0; j < 10; j++) //collumns
{
if (direction==1 && ranRow==i2 && j >= ranCol && j<ranCol +i )
{
if (GrilleVirtuelle[i2][j]!=0)
{
goodchoice=0;
}
}
else if (direction==2 && ranCol==j && i2>=ranRow && i2<ranRow +i)
{
if (GrilleVirtuelle[i2][j]!=0)
{
goodchoice=0;
}
}
}
}
if (goodchoice==1)
{
for(int i2=0; i2< 10; i2++) //rows
{
for (int j=0; j<10; j++) //collumns
{
if (direction==1 && ranRow==i2 && j>=ranCol && j<ranCol +i )
{
GrilleVirtuelle[i2][j]=i;
}
else if (direction==2 && ranCol==j && i2>=ranRow && i2<ranRow +i)
{
GrilleVirtuelle[i2][j]=i;
}
}
}
}
}while(goodchoice==0);
}
}//Fin de la méthode qui crée les bateaux en mémoire sur la grille virtuelle
//Méthode qui affiche la grille virtuelle
public void afficherGrilleVirtuelle()
{
for(int i2=0; i2< 10; i2++) //rows
{
for (int j=0; j<10; j++) //collumns
{
System.out.print(GrilleVirtuelle[i2][j]);
}
System.out.println();
}
}
}//Fin de la classe GestionGrilleVirtuelle
Celle qui affiche les missile restants
//La classe qui gère le panel ou se compte les
//missiles restants et le text Field (a droite).
package myprojects.battleship;
import java.awt.*;
import javax.swing.*;
public class GestionPanelMissile extends JPanel{
//champs
private JLabel lblMunition;
private JTextArea txtMissile;
private JPanel munition;
public GestionPanelMissile()
{
this.setLayout(new BorderLayout());
this.setBorder(BorderFactory.createBevelBorder(1,Color.lightGray, Color.darkGray));
this.munition = new JPanel();
this.lblMunition = new JLabel("Munition X ");
this.txtMissile = new JTextArea("", 50,15);
this.txtMissile.setBackground(Color.black);
this.txtMissile.setBorder(BorderFactory.createBevelBorder(1,Color.lightGray, Color.darkGray));
this.txtMissile.setForeground(Color.lightGray);
this.txtMissile.setText("Ou voulez vous tirer?");
this.munition.add(lblMunition);
this.add(munition, BorderLayout.NORTH);
this.add(txtMissile, BorderLayout.CENTER);
}
//Méthode qui écrit le nombre de munitions, dans le JLabel munition.
public void ecrireMissile(String x){
lblMunition.setText(x);
}
//Méthode qui ecrit du texte dans le text area.
public void ecrireTexte(String x){
txtMissile.setText(x);
}
}
Celle du bas ou il y a un text field
//La classe qui gère le panel du text Area, au bas de l'interface de jeu.
package myprojects.battleship;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class GestionPanelTxtBas extends JPanel implements ActionListener{
//champs
private JTextArea txtBas;
private JPanel pnlNouvellePartie;
private JButton btNouvellePartie;
private JButton btQuitter;
private JButton btFire;
private GestionGrilleVirtuelle grilleVirtuelle;
private Battleship boat;
public GestionPanelTxtBas(Battleship bat)
{
this.boat = bat;
this.setLayout(new BorderLayout());
this.setBorder(BorderFactory.createBevelBorder(1,Color.lightGray, Color.darkGray));
this.txtBas = new JTextArea();
this.txtBas = new JTextArea("", 5,63);
this.txtBas.setBackground( Color.black);
this.txtBas.setBorder(BorderFactory.createBevelBorder(1,Color.lightGray, Color.darkGray));
this.txtBas.setForeground(Color.lightGray);
this.txtBas.setText("Veuillez appuyer sur 'Nouvelle partie' pour débuter la partie.");
this.btNouvellePartie = new JButton("Nouvelle partie");
this.btNouvellePartie.setBackground(Color.lightGray);
this.btQuitter = new JButton("Quitter");
this.btQuitter.setBackground(Color.lightGray);
this.btFire = new JButton("Feu");
this.btFire.setBackground(new Color(2, 0, 168));
this.btFire.setForeground(Color.lightGray);
this.pnlNouvellePartie = new JPanel();
this.pnlNouvellePartie.setBackground(Color.lightGray);
this.pnlNouvellePartie.setLayout(new BorderLayout());
this.pnlNouvellePartie.setBorder(BorderFactory.createBevelBorder(1,Color.lightGray, Color.darkGray));
this.add(txtBas, BorderLayout.CENTER);
this.add(pnlNouvellePartie, BorderLayout.SOUTH);
this.pnlNouvellePartie.add(btNouvellePartie, BorderLayout.WEST);
this.pnlNouvellePartie.add(btFire, BorderLayout.CENTER);
this.pnlNouvellePartie.add(btQuitter, BorderLayout.EAST);
this.btQuitter.addActionListener(this);
this.btFire.addActionListener(this);
this.btNouvellePartie.addActionListener(this);
}
public void ecrireTxtBas(String x)
{
txtBas.setText(x);
}
public void actionPerformed(ActionEvent ev){
if(ev.getSource() == btNouvellePartie)
{
this.grilleVirtuelle = new GestionGrilleVirtuelle();
this.txtBas.setText("Définissez la position sur laquelle vous voulez tirer.\nExemple: A-1. \nEnsuite, appuyez sur 'Feu'");
boat.creerNouvellePartie();
}
else if(ev.getSource()== btQuitter)
{
this.txtBas.setText("Merci et au revoir");
System.exit(0);
}
else if(ev.getSource()== btFire)
{
boat.decrementerMissile();
}
}
}//Fin de la classe GestionPanelTxtBas
}
}
Finalement, celle ou il y a le titre...
//La classe qui affiche le logo BATTLESHIP au haut de la page de jeu.
package myprojects.battleship;
import java.awt.*;
import javax.swing.*;
//La classe qui gère le titre
public class GestionTitre extends JPanel{
//Champs
private JLabel lbltitre;
public GestionTitre()
{
this.setLayout(new BorderLayout());
this.setBackground(new Color(2,0,168));
this.setBorder(BorderFactory.createBevelBorder(1,Color.lightGray, Color.darkGray));
this.lbltitre = new JLabel(new ImageIcon("c:battleship_logo.jpg"));
this.add(lbltitre);
}
}
Aidez moi svp...