Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2181 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Aide programme démineur

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Aide programme démineur

n°2188238
java72
Posté le 30-04-2013 à 16:18:38  profilanswer
 

Bonjour à tous ! J'ai commencé le java il y a très peu de temps et je dois créer un démineur. Le problème étant que je ne comprends pas ce que je dois modifier afin de réussir à le compiler. Si vous réussissiez à m'aider vous me seriez d'un grand secours. Merci d'avance !
 
Voici le programme:
 
import java.util.Scanner;
public class Demi {
 
int lignes,colonnes; // lignes les lignes, colonnes les colonnes
int NMA; // Nombre de mines autour
int NbMines; // le nombre de mines choisi par le joueur
int choix; // le choix effectué par le joueur pour découvrir ou placer un drapeau
int nbCaseVue; // nombre de case dévoilée
     
        Scanner sc = new Scanner(System.in);
   
char [][]t1 = new char [10][10];; // grille de jeu
char [][]t2 = new char [10][10]; // la grille avec les mines
 
 
 
 
/*
 * FONCTION INITIALISATION
 */
public void Init()
{
   for(lignes=0;lignes<10;lignes++)
   {
      for(colonnes=0;colonnes<10;colonnes++)
      {
         t1[lignes][colonnes]='-';//' 'implique case cachée
         t2[lignes][colonnes]='0';                            
      }            
   }
}
 
/*
 * FONCTION PLACER LES MINES
 */
public void PlaceMines()
{
   int CompteMines;//compteur de mines
   for (CompteMines=0;CompteMines<NbMines;CompteMines++)
   {
      lignes=(int) (Math.random()%10);//on choisit la ligne de manière aléatoire
      colonnes=(int) (Math.random()%10);//on choisit la colonne de manière aléatoire
      if(t2[lignes][colonnes]=='0')//On vérifie que la case est libre
      {
         t2[lignes][colonnes]='M';//on place un M pour indiquer qu'il y a une mine
      }
       
      else
      {
         NbMines++;//Sinon, il y a déjà un M et il faut faire un tour de plus
      }
   }
}
 
/*
 * FONCTION QUI REGARDE SI IL Y A UNE MINE
 * Fonction qui permet de savoir il y a une mine sur la case donnée en paramètre
 * retourne 1 si il y a une case sinon 0
 */
int RegarderMine(final int _lignes, final int _colonnes)
{
   if( _lignes >= 0 && _lignes < 10 && _colonnes >= 0 && _colonnes < 10 && t2[_lignes][_colonnes]=='M')
      return 1;
   return 0;
}
 
 
/*
 * FONCTION CALCULER LE NB DE MINES AUTOUR
 * fonction équivalente à NbMinesAutour() mais qui prend les paramètres de position de case
 * retourne le nombre de mine qui se trouve autour d'une position
 */
int NbMinesAutourBis(final int _lignes, final int _colonnes)
{
   int NbMA = 0;
 
   NbMA+=RegarderMine(_lignes+1, _colonnes);
   NbMA+=RegarderMine(_lignes+1, _colonnes+1);
   NbMA+=RegarderMine(_lignes, _colonnes+1);
   
   NbMA+=RegarderMine(_lignes-1, _colonnes);
   NbMA+=RegarderMine(_lignes-1, _colonnes-1);
   NbMA+=RegarderMine(_lignes, _colonnes-1);
   
   NbMA+=RegarderMine(_lignes+1, _colonnes-1);
   NbMA+=RegarderMine(_lignes-1, _colonnes+1);
 
   return NbMA;
}
 
/*
 * FONCTION QUI CHERCHE LES CASES PROCHE DES MINES
 * fonction appelé que si le nombre de mine qui se trouve autour d'elle est 0
 * fonction récursive, qui demande a ses voisins de devoilé leur case
 */
public void DevoileCase(final int _lignes, final int _colonnes)
{
   if( _lignes >= 0 && _lignes < 10 && _colonnes >= 0 && _colonnes < 10 && t1[_lignes][_colonnes]=='-')
   {      
      int NbMA = NbMinesAutourBis(_lignes,_colonnes);
      t1[_lignes][_colonnes]=(char) ('0'+NbMA);
      ++nbCaseVue;
       
      if( NbMA == 0 ) // partie récursive
      {
         DevoileCase(_lignes+1,_colonnes);
         DevoileCase(_lignes+1,_colonnes+1);
         DevoileCase(_lignes,_colonnes+1);
         
         DevoileCase(_lignes-1,_colonnes);
         DevoileCase(_lignes-1,_colonnes-1);
         DevoileCase(_lignes,_colonnes-1);
         
         DevoileCase(_lignes-1,_colonnes+1);
         DevoileCase(_lignes+1,_colonnes-1);
      }
   }
}
 
/*
 * FONCTION AFFICHER LA GRILLE DE JEU
 * affiche le tableau JEU
 */
public void AfficheJeu()
{
   System.out.println("\n\n" );
   System.out.println("   | 1  2  3  4  5  6  7  8  9  10\n" );
   System.out.println("___|______________________________\n" );
   for(lignes=0;lignes<10;lignes++)
   {
      if(lignes<9)
      System.out.println(" %d | ",lignes+1);
      else
      System.out.println("%d | ",lignes+1);
      for(colonnes=0;colonnes<10;colonnes++)
      {                
         System.out.println("%c  ",t1[lignes][colonnes]);
      }
      System.out.println("\n" );
   }
}
 
/*
 * FONCTION CALCULER LE NB DE MINES AUTOUR
 * renvoie le nombre de mine autour d'une position qui se trouve en i j
 * renvoie -1 si on se trouve sur une mine sinon le nombre de mine autour
 */
int NbMinesAutour()
{
   NMA=0;
   if(t2[lignes][colonnes]=='M') // on se trouve sur une mine
   {
      NMA = -1;
   }
   else
   {
      NMA+=RegarderMine(lignes+1, colonnes);
      NMA+=RegarderMine(lignes+1, colonnes+1);
      NMA+=RegarderMine(lignes, colonnes+1);
      NMA+=RegarderMine(lignes-1, colonnes);
      NMA+=RegarderMine(lignes-1, colonnes-1);
      NMA+=RegarderMine(lignes, colonnes-1);
       
      NMA+=RegarderMine(lignes+1, colonnes-1);
      NMA+=RegarderMine(lignes-1, colonnes+1);
   }
   return NMA;
}
 
/*
 * FONCTION JOUER
 * dévoiler une case ou placer un drapeau
 */
public void Jouer()
{
   switch (choix)
   {
   case 1 : // On dévoile une case
      if( NbMinesAutour() != -1 ) // Si on est pas sur une mine
      {
         if( NMA == 0 ) // Si on n'a pas de mine comme voisin
            DevoileCase(lignes,colonnes);
         else // Sinon, si on a au moins une mine comme voisin
         {
            t1[lignes][colonnes]=(char) ('0'+NMA);
            ++nbCaseVue;
         }
      }
      break;
   
   case 2 : // On met un drapeau
      t1[lignes][colonnes]='D';
      break;
   }
}
 
/*
 * FONCTION CHOISIR
 * On demande au joueur de choisir une case
 */
public void Choisir()
{
   System.out.println("\n\nVeuillez entrer la case choisie (numero de ligne [espace] numero de colonne):\t" );
   int T = sc.nextInt ();
   Comptes = new double[T];("%d %d",&lignes,&colonnes);
   System.out.println("Vous avez choisi la case (%d,%d).\n Que voulez-vous faire ?\n",lignes,colonnes);
   lignes-=1;
   colonnes-=1;
   
   System.out.println("i : %d | j : %d\n",lignes,colonnes);
   
   System.out.println("\t1. Decouvrir une case\n" );
   System.out.println("\t2. Placer un drapeau" );
   do
   {
      System.out.println("\t\tVotre choix : " );
      int T = sc.nextInt ();
      Comptes = new double[T];("%d",&choix);
   }
   while (choix!=1 && choix!=2); // faut pas se compliquer tu as que 2 choix donc que 2 comparaisons
}
 
/*
 * Fonction main
 * lancement du jeu
 */
int main()
{
   sRand((time)Null);
 
   //Afficher le début du jeu
   System.out.println(" ________________________________\n" );
   System.out.println("|                                |\n" );
   System.out.println("|        Démineur       |\n" );
   System.out.println("|________________________________|\n\n" );
   
   Init();
 
   do // Choisir le nombre de mine dans le demineur
   {
      System.out.println("\nCombien de mines voulez-vous ?(entre 1 et 50)\n\n" );
      int T = sc.nextInt ();
      Comptes = new double[T];("%d",&NbMines);
   }
   while(NbMines<=0 && NbMines>50); // nombre de mines comprise entre 1 et 50 sinon on redemande
   
   System.out.println("D'accord, vous avez choisi de jouer avec %d mines\n\n",NbMines);
   PlaceMines();
   
   System.out.println("Voici la grille des mines pour controle:\n" );
   for(lignes=0;lignes<10;lignes++)
   {
      System.out.println("\t\t\t" );
      for(colonnes=0;colonnes<10;colonnes++)
      {
         System.out.println("%c  ",t2[lignes][colonnes]);
      }
      System.out.println("\n" );
   }
   
   
   System.out.println("\n\nVoici votre grille : A vous de jouer !\n\n" );
   nbCaseVue=0;
   while( nbCaseVue<(100-NbMines) && NMA != -1 ) // On regarde si on a vu toutes les cases sans mines ou qu'on a touché une mine
   {
      AfficheJeu();
      Choisir();
      Jouer();
   }
   
   if( NMA != -1 ) // On a gagné
   {
      System.out.println("\n\n\t\tBravo vous avez gagné !" );
      AfficheJeu();
   }
   else // On a perdu
   {
      System.out.println("Vous avez perdu !!!\n\n" );
 
      System.out.println("   | 1  2  3  4  5  6  7  8  9  10\n" );
      System.out.println("___|______________________________\n" );
      for(lignes=0;lignes<10;lignes++)
      {
         if(lignes<9)
            System.out.println(" %d | ",lignes+1);
         else
            System.out.println("%d | ",lignes+1);
         for(colonnes=0;colonnes<10;colonnes++)                
            System.out.println("%c  ",t2[lignes][colonnes]);
         System.out.println("\n" );
      }    
   }
   
   System.out.println("pause" );
   return 0;
   }
 }

mood
Publicité
Posté le 30-04-2013 à 16:18:38  profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Aide programme démineur

 

Sujets relatifs
aide programme fortranaide sur script shell
Aide pour la création d'un fichier bat pour ping sur réseauBesoin d'aide, décompte automatique de chiffre a virgule
Aide pour creer une action sur un logicielPetite aide niveau tablea en HTML/PHP?
Programme fonctionnant avec proxy et pas sans[C] A l'aide je ne comprends rien a ce programme
Plus de sujets relatifs à : Aide programme démineur


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR