supinfo
Ouverture de  SUPINFO USA à San Francisco en 2008. Des études en informatique en Californie à un tarif abordable ! Inscrivez-vous dès maintenant !
supinfo
Connexion :

Recherche

  
   Tout| Actus| Télécharger| Comparateur de prix| Dossiers| Forums| Jeux| Google

2 messages
ok

Sodoku JAVA - Class java jeux Sodoku

Bonjour à tous,
Merci pour vos réponses.
Voilà mon problème:
Quelqu'un pourrait-il me compléter ce code avec une méthode qui permette d'obtenir un résultat avec les chiffres correspondant aux cases vides (0).








********************************************************************
public class Sodoku {

//initialisation du tableau
private int grille[][] = {
{3,7,0,0,0,0,0,6,0},
{0,9,8,3,1,5,0,0,0},
{4,0,0,0,0,7,2,5,0},
{0,4,3,8,0,0,0,0,9},
{6,0,0,5,0,4,0,0,7},
{5,0,0,0,0,9,4,1,0},
{0,2,7,9,0,0,0,4,8},
{0,0,0,2,7,6,1,0,0},
{0,5,0,0,0,0,0,3,2}
};




public static void main(String[] args) {

System.out.println ("Demarrage de l'application SO DO KU"+ "\n");
Sodoku sodoku = new Sodoku();
sodoku.afficheTableau();
System.out.println ("Fin de l'application SO DO KU");
}

//constructeur
public Sodoku(){
if (!this.controlTableau()){
System.out.println("Les données d'initialisation sont erronées");
}else{
System.out.println("Les données d'initialisation sont valides");
}

}

//affiche le tableau a l'écran
public void afficheTableau(){
String tableau = "";
for(int i = 0; i < grille.length; i++){
tableau += this.construitLigne(i) +"\n";

}
System.out.println(tableau);
}

// construit l'affichage d'une ligne du tableau

private String construitLigne(int noLigne){
String ligne = "";
for(int i = 0; i < grille.length; i++) {
ligne += grille[noLigne][i]+ " ";
}
ligne = ligne.replace("0","_");
return ligne;
}

private boolean controlTableau(){
boolean result = true;
for(int i = 0; i < grille.length; i++){
result = this.chercheDoublon(convertLigneVersTab(i));
if (!result)break;
result = this.chercheDoublon(convertColonneVersTab(i));
if (!result)break;
result = this.chercheDoublon(convertZoneVersTab(i));
if (!result)break;
}
return result;
}

// Vérifier que les nombres de 0 à 9 ne soient pas en double dans le tableau

private boolean chercheDoublon(int[] tab){
for(int i = 0; i < tab.length; i++){
if(tab[i] != 0){
if(indiceDansTab(tab,i) > 0){
return false;
}
}
}
return true;
}
// Vérifier si une valeur est présente dans un tableau à l'exclusion de l'indice indiceCle
private int indiceDansTab(int tab[], int indiceCle){
//on boucle sur chaque occurance du tableau
for(int i = 0; i < tab.length; i++){

//si l'indice en cours est différent de l'indice d'exclusion
if (i != indiceCle){

//si l'indice de la valeur testée est la meme que celle de l'indice clé alors
//on return la valeur de l'indice trouvé en doublon
if (tab[i] != 0 & tab[i] == tab[indiceCle]){
return i;
}
}
}

//si lôn arrive à ce point c'est qu'aucun doublon na été trouvé.
return -1;
}

private int[] convertZoneVersTab(int noZone){
int[] tab = new int[grille.length];
int nbLarg = (int)Math.sqrt(grille.length);
int ligneDeb = (Math.abs(noZone / nbLarg))*3;
int colonneDeb = (noZone - ligneDeb) * 3;
int ligneFin = ligneDeb + nbLarg;
int colonneFin = colonneDeb + nbLarg;
for(int ligne = ligneDeb; ligne < ligneFin; ligne++){
for(int colonne = colonneDeb; colonne < colonneFin; colonne++){
tab[((colonne - colonneDeb)* nbLarg)+(ligne - ligneDeb)] =
grille[ligne][colonne];
}
}
return tab;
}

private int[] convertLigneVersTab(int noLigne){
int[] tab = new int[grille.length];
for(int i = 0; i < tab.length; i++){
tab[i] = grille[noLigne][i];
}
return tab;
}

private int[] convertColonneVersTab(int noColonne){
int[] tab = new int[grille.length];
for(int i = 0; i < tab.length; i++){
tab[i] = grille[i][noColonne];
}

return tab;

}
}
 
 
ArrayList al = new ArrayList <int> ();

for(int i = 0; i < tab.length; i++)
if( tab[i]==0 )
al.add(tab[i])



[java 1.5 only]
 
 
 
2 messages
ok
 
Vous devez être connecté pour écrire un message !
 

 Sujets Similaires:


 
Clubic.com
 
Achetez-facile.com
 
Jeuxvideo.fr
 
neteco.com
 
mobinaute.com