begin process at 2012 02 14 19:18:10
  Trouver un code source :
 
dans
 
Accueil > Forum > 

JAVA / J2EE / J2ME

 > 

Divers

 > 

Général

 > 

Help... Jeu de battleship en java...


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Help... Jeu de battleship en java...

samedi 9 février 2008 à 01:52:17 | Help... Jeu de battleship en java...

joedalton1979

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...



Cette discussion est classée dans : public, int, private, color, jbutton


Répondre à ce message

Sujets en rapport avec ce message

Erreur d'execution: java.lang.NullPointerException [ par amjad ] A la compilation d'un projet java3D j'obtient le message d'erreur suivant :Exception in thread "main" java.lang.NullPointerException at javax.vecmath layout et reactualisation... [ par alexglvr ] Bonjour,je suis en train de faire un prg en java avec une interface utilisateur. une JFrame (VisionPG1) contient une TabbedPanel (TP). Cette TabbedPan image arriere plan [ par Skyffer3 ] Salut a tousVoila j'ai ce programme et il me faudrait un arriere plan, j'ai essaye comme il faut faire avec la methode public void paint, mais ca ne m probleme d affichage [ par mastermario ] bonjours a tous, je vous expose mon probleme : j'ai utilise un programme sur  la section code pour creer un graphique en applet, et je voudrait y tra dessin graphique 2d [ par huongthuy ] Bonjour tout le monde! je suis étudiant.j'ai un projet.Le projet demande les fonctions:la fonction linéaire y = ab, la fonction affine y = ax+b, <td c besoin d'aide [ par zaeinouba ] salut j suis une debutante en programation voici mon code j'arrive pas à le compiler si c possible aidez moi merci d'avance import javax.swing.*; Problème sur la personnalistion des boutons sous ecclipse [ par cybrid27 ] Bonjour à tous, Je suis entrain de développer un jeu de question-réponse en java (sous ecclipse 3.5) et j'ai un soucis pour la création de mes bouton Graphe qui se redessine [ par Mizgierwe ] Bonjour, j'ai fait un graphe qui prend des valeurs d'un tableau aléatoire, et je veux que dans l'applet il y ait un bouton Go qui me permette de redes souci avec un parametre d'une requete préparée dans une methode model MVC [ par coolanso ] En fait voici mon probléme,je veux executer une requete de MAJ dont la clause where est un élément d'un JList.c'est le model MVC que je tente d'implém Afficher deux triangles [ par scoobidooo1 ] Aide pour faire afficher ces deux programmes (triangles) dans une seule commande, un seul affichage pour les deux triangles en même temps je sais que


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,326 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales