Un pti coup de main en java (please je débute) - Java - Programmation
Marsh Posté le 17-04-2002 à 23:08:00
Salut, ami joueur (et programmeur, donc )
D'abord bravo pour ta question qui est bien posée, ça fait plaisir. J'ai rapidement survolé ton code source et je n'ai pas trouvé le problème. Désolé. Tu peux aller voir le démineur de mon professeur, à l'adresse suivante : www.freund.fr.fm
Marsh Posté le 18-04-2002 à 09:49:01
trace pas a pas ... tu mets des System.out.println un peu partout et tu verras bien ou ca coince ...
ps : les do {}while c pas bo !
Marsh Posté le 18-04-2002 à 11:00:25
if (game[l+j][m+k]==9)
compteur +=1 ;
ca croche la a la ligne 73....
Marsh Posté le 18-04-2002 à 11:06:03
Quand tu testes les cases qui sont sur premiere ligne, premiere colonne, derniere ligne et derniere colonne, il faut penser a ne pas tester les 8 cases autour maus seulement 5 (et 1 pour les 4 coins).
Edit : je viens de voir que tu avais a moitié pensé au probleme : tu ajoute une ligne et une colonne en position 0, il faut juste ajouter les meme en derniere ligne et derniere colonne.
[jfdsdjhfuetppo]--Message édité par JeromeV--[/jfdsdjhfuetppo]
Marsh Posté le 18-04-2002 à 11:08:47
Autre remarque :
Citation : do |
Je pense qu'il vaut mieux mettre le c++ dans le if : ici tu incremente le nombre de mines posées meme si tu tombe dans une case ou il y en a déjà une.
Marsh Posté le 22-04-2002 à 21:11:23
CA Y EST j ai trouvé
y a un truc qui bloquait dans ma boucle !!
pour ceux que ca intéresse... voila
//********************
import java.io.* ;
import java.util.* ;
import javax.swing.* ;
public class Serie10
{
public static void main(String[] args) throws IOException
{
BufferedReader in =new BufferedReader(new InputStreamReader(System.in)) ;
int hauteur, largeur ;
int hauteurPlayer, largeurPlayer ;
int nbreBombes, compteur ;
int i, j, k, l, m ;
int a, b, c ;
System.out.println("Veuillez entrer la hauteur du plateau de jeu" ) ;
hauteurPlayer = Integer.parseInt(in.readLine());
hauteur = hauteurPlayer+2 ;
System.out.println("Veuillez entrer la largeur du plateau de jeu" ) ;
largeurPlayer = Integer.parseInt(in.readLine());
largeur = largeurPlayer+2 ;
int [] [] game = new int [largeur][hauteur];
System.out.println("Veuillez entrer le nombre de bombes en jeu (doit être inférieur à " +(hauteurPlayer*largeurPlayer)+" )" ) ;
nbreBombes = Integer.parseInt(in.readLine()) ;
// minage
c = 0 ;
do
{
a = (int) (Math.random()*largeurPlayer+1) ;
b = (int) (Math.random()*hauteurPlayer+1) ;
if (game[a][b]!=9)
{
game[a][b] = 9 ;
c++ ;
}
}
while (c!=nbreBombes) ;
// check des cases
for (i=1 ; i<=hauteurPlayer ; i++)
{
for (j=1 ; j<=largeurPlayer ; j++)
{
compteur = 0 ;
if (game[i][j] != 9)
{
for (k=i-1 ; k<=i+1 ; k++)
{
for (m=j-1 ; m <= j+1 ; m++)
{
if (game[k][m] == 9)
compteur++ ;
}
}
game[i][j] = compteur ;
}
}
}
// affichage du tableau
for(i=1 ; i<=hauteurPlayer ; i++)
{
for (j=1 ; j<=largeurPlayer ; j++)
{
System.out.print(game[i][j]+" " ) ;
}
System.out.println() ;
}
System.exit(0) ;
}
}
Marsh Posté le 17-04-2002 à 20:29:17
Voila je vous ai copier mon programme cé sur le principe d'un démineur rudimentaire, j'ai pas encore soigné la sortie.
Mais je compile sans erreur, quand je lance aparemment ca coince dans la boucle pour marquer combien y a de bombes sur la case...
je sèche si qqun voit comment faire un coup de main serai le bienvenu je buche dessus en attendant...
A++
Shaman
/*************************************************
***********************
* Nom du programme : Serie10.java
* Date : 02/04/17
* Auteur : Gilles Walther
* Description : Créer des carrés parfaits
* Conditions : aucune
************************************************************************/
import java.io.* ;
import java.util.* ;
import javax.swing.* ;
public class Serie10
{
public static void main(String[] args) throws IOException
{
BufferedReader in =new BufferedReader(new InputStreamReader(System.in)) ;
int hauteur, largeur ;
int hauteurPlayer, largeurPlayer ;
int nbreBombes ;
int i, j, k, l, m ;
int a, b, c ;
System.out.println("Veuillez entrer la hauteur du plateau de jeu" ) ;
hauteurPlayer = Integer.parseInt(in.readLine());
hauteur = hauteurPlayer+1 ;
System.out.println("Veuillez entrer la largeur du plateau de jeu" ) ;
largeurPlayer = Integer.parseInt(in.readLine());
largeur = largeurPlayer+1 ;
int [] [] game = new int [largeur][hauteur];
System.out.println("Veuillez entrer le nombre de bombes en jeu (doit être inférieur à " +(hauteurPlayer*largeurPlayer)+" )" ) ;
nbreBombes = Integer.parseInt(in.readLine()) ;
// minage
c = 0 ;
do
{
a = (int) (Math.random()*largeurPlayer+1) ;
b = (int) (Math.random()*hauteurPlayer+1) ;
c++ ;
if (game[a][b]!=9)
game[a][b] = 9 ;
}
while (c!=nbreBombes) ;
// check des cases
int compteur = 0 ;
for (j=-1;j<=1;j++)
{
for(k=-1;k<=1;k++)
{
for (l=1;l<=largeurPlayer;l++)
{
for (m=1;m<=hauteurPlayer;m++)
{
if (game[l+j][m+k]==9)
compteur +=1 ;
}
}
}
}
// affichage du tableau
for (i=1;i<=largeur;i++)
{
for (j=1;j<=hauteur;j++)
{
System.out.println(game[i-1][j-1]);
}
}
}
}
---------------
Le Smiley de la mort !! (8÷þ