[1, 3, 4, 8, 10, 11, 21, 27, 28, 30,31, 43, 43, 45, 71, 73, 74, 75, 80, 81, 90, 91]
[[1, 11, 21,31] [3, 4] [8] [10] [27, 28] [30] [43,44,45] [71] [73, 74, 75] [80,90] [81, 91]]
function lignee(param){
var lig=Math.ceil(param/10);
return lig;
}
function colonne(param){
var colonne=Math.ceil(param%10);
colonne = (colonne===0) ?10 :colonne;
return colonne;
}
//--- retourne un bateau vertical
function bateauV(){
var lebateau = [];
for(i=0;i<5;i++){
if(lesGris.indexOf(premierGris+(i*10)) !== -1){
// var longB=lebateau.length;
if(i==0 || premierGris+(i*10)-lebateau[lebateau.length-1] === 10 ) {
lebateau.push(premierGris+(i*10));
}
}
}
return lebateau;
}//--- fin fn
//--- retourne un bateau horizontal !!!!!!!!!!!!!!!!!!!!!!!! cela ne fonctione pas dans tpus les cas
function bateauH(){
var lebateau = [];
var lignePrim = lignee(premierGris);
for(i=0;i<5;i++){
var ligneSuivante = lignee(premierGris+i);
if(lesGris.indexOf(premierGris+i) !== -1 && lignePrim==ligneSuivante){
// var longB=lebateau.length;
if(i==0 || premierGris+i-lebateau[lebateau.length-1] === 1 ) {
lebateau.push(premierGris+i);
}
}
}
return lebateau;
}//--- fin fn
function bateauUn(){
var lebateau = [premierGris];
return lebateau;
}
//--- Je transforme la nouvelle solution du joueur en tableau multidimetionnel
//--- je crée une copie pour garder la solution du joueur intact pour les verifs de partie gagnée
function soluceMod(){
var solReduit=soluce;
var tabMulti=new Array();
var t=0;
for(i=0;i<10;i++){
tabMulti[i]=new Array;
for(j=0;j<10;j++){
tabMulti[i][j] = solReduit[t];
t++;
}
}
return tabMulti;
}
//--- je crée une copie pour garder la solution du joueur intact pour les verifs de partie gagnée
//--- j'enlève la première valeur de la solution du joueur elle complique la vie pour apès
//--- on récupère les gris
function tabGris(){
var solGris=soluce;
solGris.shift();
var lesGris= [];
for(i=0;i<solGris.length;i++){
if(solGris[i]==='gris'){
lesGris.push(i+1);
}
}
return lesGris;
}
//--- verifie la ou les cases de droite
//!!!!! il faut enlever 1 pour cibler la bonne colonne ou la bonne ligne
//--- pour verifier la case de droite utile dans le cas d'un bateau horizontal
//--- on passe un entier(la longueur du bateau)
//--- pour verifier toutes les case de droite dans le cas d'un bateau vertical
//--- on passe une array(toutes les cases du bateau)
function verifCaseDroite(longBateau){
var soluceMulti=soluceMod();
if(!isNaN(longBateau)){
//pour gerer un bateau qui commence à l'avant dernière colonne
if((col-1)+longBateau-1!==9){
if(soluceMulti[lig-1][(col-1)+longBateau] !== 'bleu'){
return false;
}
}
}else{
// si on passe une array en paramètre
for(i=0;i<leBateau.length;i++){
//--- si une case est indéfinie cela met fin à la fonction
if(soluceMulti[(lig-1)+i][col] !== 'bleu'){
return false;
}
}
}
//--- si toute la ou les cases de droite sont 'bleu' la fonction retourne vrai
return true;
}//--- fin fn
//--- verifie la ou les cases de droite
//!!!!! il faut enlever 1 pour cibler la bonne colonne ou la bonne ligne
//--- pour verifier la case de droite utile dans le cas d'un bateau horizontal
//--- on passe un entier(la longueur du bateau)
//--- pour verifier toutes les case de droite dans le cas d'un bateau vertical
//--- on passe une array(toutes les case du bateau)
function verifCaseGauche(longBateau){
var soluceMulti=soluceMod();
// console.log(longBateau);
if(!isNaN(longBateau)){
if(soluceMulti[lig-1][col-2] !== 'bleu'){
return false;
}
}else{
// si on passe une array en paramètre
for(i=0;i<leBateau.length;i++){
//--- si une case est indéfinie cela mais fin à la fonction
if(soluceMulti[(lig-1)+i][col-2] !== 'bleu' ){
return false;
}
}
}
//--- si toute la ou les cases de droite sont 'bleu' la fonction retourne vrai
return true;
}//--- fin fn
//--- verifie la ou les cases du bas
//!!!!! il faut enlever 1 pour cibler la bonne colonne ou la bonne ligne
//--- pour verifier la case de bas utile dans le cas d'un bateau vertical
//--- on passe un entier(la longueur du bateau)
//--- pour verifier toutes les case du bas dans le cas d'un bateau horizontal
//--- on passe une array(toutes les cases du bateau)
function verifCaseBas(longBateau){
var soluceMulti=soluceMod();
if(!isNaN(longBateau)){
if((lig-1)+longBateau-1!==9){
if(soluceMulti[(lig-1)+longBateau][col-1] !== 'bleu'){
return false;
}
}
}else{
// si on passe une array en paramètre
for(i=0;i<leBateau.length;i++){
if(soluceMulti[lig][(col-1)+i] !== 'bleu'){
return false;
}
}
}
//--- si toute la ou les cases du bas sont 'bleu' la fonction retourne vrai
return true;
}//--- fin fn
//--- verifie la ou les cases du haut
//!!!!! il faut enlever 1 pour cibler la bonne colonne ou la bonne ligne
//--- pour verifier la case de haut utile dans le cas d'un bateau vertical
//--- on passe un entier(la longueur du bateau)
//--- pour verifier toutes les case du haut dans le cas d'un bateau horizontal
//--- on passe une array(toutes les cases du bateau)
function verifCaseHaut(longBateau){
var soluceMulti=soluceMod();
if(!isNaN(longBateau)){
if(soluceMulti[lig-2][col-1] !== 'bleu'){
return false;
}
}else{
// si on passe une array en paramètre
for(i=0;i<leBateau.length;i++){
if(soluceMulti[lig-2][(col-1)+i] !== 'bleu'){
return false;
}
}
}
//--- si toute la ou les cases du bas sont 'bleu' la fonction retourne vrai
return true;
}//--- fin fn
var soluce = ["bleu", "gris","bleu","bleu","gris","gris","gris","bleu","bleu","gris","bleu",
"bleu","bleu","bleu","bleu","bleu","bleu","bleu","bleu","bleu","bleu",
"bleu","bleu","bleu","bleu","gris","bleu","bleu","bleu","gris","gris",
"bleu","bleu","bleu","bleu","gris","bleu","bleu","bleu","bleu","bleu",
"gris","bleu","gris","bleu",undefined,"bleu","bleu",undefined,"bleu","bleu",
"bleu","bleu","bleu","bleu",undefined,"bleu","bleu",undefined,"bleu",undefined,
"bleu","bleu","bleu","bleu","bleu","bleu","bleu","bleu","bleu","bleu",
"bleu","bleu","bleu","bleu","gris","bleu","gris","bleu","bleu","bleu",
"gris","bleu","bleu","bleu","bleu","bleu","bleu","bleu","gris","bleu",
"gris","bleu","gris","gris","bleu",undefined,"bleu","bleu","bleu","bleu"];
var lesGris=tabGris();
//console.log(lesGris);
//---pour dev j'utilise ce système mais par la suite je pense utiliser shift
//---qui retire le premier élement du tableau et grisSuivant devient lesGris[0]
//for(i=0;i<lesGris.length;i++){
var test=lesGris.indexOf(25);
var test1=test+1;
var premierGris=lesGris[test];
var grisSuivant=lesGris[test1];
//console.log(premierGris);
//console.log(grisSuivant);
//--- j'extrais le coordonées du premierGris
var lig = lignee(lesGris[test]);
var col = colonne(lesGris[test]);
//console.log(lig +'li');
//console.log(col +'co');
//------------------------------------------coin gauche haut
if(lig===1 && col === 1){
//------------------------------------------------------bateau horizontal
if(grisSuivant-premierGris === 1){
//---Reuni les case qui constituent un bateau
var leBateau = bateauH();
//---On vérifie si la case a droite du bateau est bleu puis les cases en dessous
if(verifCaseDroite(leBateau.length) && verifCaseBas(leBateau)){
console.log(leBateau+' bateau horizontal');
}else{
console.log('les cases autour d\'un bateau horizontal ne sont pas bonnes');
}
}//--- Fin du bateau horizontal
//------------------------------------------------------bateau vertical
else if(lesGris.indexOf(premierGris+10) !== -1){
//---Reuni les case qui constituent un bateau
var leBateau = bateauV();
//--- Si le control de la case en dessous du bateau est ok
//--- on control chaque case de droite
if(verifCaseBas(leBateau.length) && verifCaseDroite(leBateau) ){
console.log(leBateau + ' bateau vertical');
}else{
console.log('les cases autour d\'un bateau vertical ne sont pas bonne');
}
}//--- Fin du bateau vertical
//------------------------------------------------------bateau d'une case
else{
var leBateau = bateauUn();
//--- On vérifie la case du bas et la case de droite
if(verifCaseBas(leBateau.length) && verifCaseDroite(leBateau.length)){
console.log(leBateau+' un');
}else{
console.log('le bateau de un n\'est pas entouré');
}
}//--- Fin bateau d'une case
}//--- Fin coin gauche haut
//------------------------------------------coin droite haut
else if(lig === 1 && col === 10){
//------------------------------------------------------bateau vertical
if(lesGris.indexOf(premierGris+10) !== -1){
//---Reuni les case qui constituent un bateau
var leBateau = bateauV();
//---On vérifie si la case en dessous du bateau est bleu
//---puis on control chaque case de droite
if(verifCaseBas(leBateau.length) && verifCaseGauche(leBateau)){
console.log(leBateau + ' bateau vertical');
}else{
console.log('les cases autour d\'un bateau vertical ne sont pas bonne');
}
}//--- Fin du bateau vertical
else{
//------------------------------------------------------bateau d'une case
var leBateau = bateauUn();
if(verifCaseBas(leBateau.length) && verifCaseGauche(leBateau.length)){
console.log(leBateau+' un');
}else{
console.log('le bateau de un n\'est pas entouré');
}
}//--- Fin bateau d'une case
}//--- fin coin droite haut
//------------------------------------------coin gauche bas
else if(lig === 10 && col === 1){
//------------------------------------------------------bateau horizontal
if(grisSuivant-premierGris === 1){
//---Reuni les case qui constituent un bateau
var leBateau = bateauH();
//---On vérifie si la case a droite du bateau est bleu
//---puis on control chaque case en dessous du bateau
if(verifCaseDroite(leBateau.length) && verifCaseHaut(leBateau)){
console.log(leBateau+' bateau horizontal')
}else{
console.log('les cases autour d\'un bateau horizontal ne sont pas bonne');
}
}
else{
//------------------------------------------------------bateau d'une case
var leBateau = bateauUn();
if(verifCaseDroite(leBateau.length) && verifCaseHaut(leBateau.length)){
console.log(leBateau+' un');
}else{
console.log('le bateau de un n\'est pas entouré');
}
}//--- Fin bateau d'une case
}//---Fin du coin gauche bas
//------------------------------------------coin droite bas
else if(lig===10 && col === 10){
//------------------------------------------------------bateau d'une case
var leBateau = bateauUn();
if(verifCaseGauche(leBateau.length) && verifCaseHaut(leBateau.length)){
console.log(leBateau+' un');
}else{
console.log('le bateau de un n\'est pas entouré');
}
}//--- Fin du coin droite bas
//------------------------------------------bord haut
else if(lig === 1 && col >1 && col < 10){
//------------------------------------------------------bateau horizontal
if(grisSuivant-premierGris === 1){
//---Reuni les case qui constituent un bateau
var leBateau = bateauH();
//---On vérifie si la case a droite du bateau est bleu
//---puis on control chaque case en dessous du bateau
if( verifCaseDroite(leBateau.length) && verifCaseGauche(leBateau.length)
&& verifCaseBas(leBateau)){
console.log(leBateau+' bateau horizontal')
}else{
console.log('les cases autour d\'un bateau horizontal ne sont pas bonne');
}
}
//------------------------------------------------------bateau vertical
else if(lesGris.indexOf(premierGris+10) !== -1){
//---Reuni les case qui constituent un bateau
var leBateau = bateauV();
//---On vérifie si la case en dessous du bateau est bleu
//---puis on control chaque case de droite et de gauche
if(verifCaseBas(leBateau.length) && verifCaseDroite(leBateau) && verifCaseGauche(leBateau)){
console.log(leBateau + ' bateau vertical');
}else{
console.log('les cases autour d\'un bateau vertical ne sont pas bonne');
}
}//--- Fin du bateau vertical
else{
//------------------------------------------------------bateau d'une case
var leBateau = bateauUn();
//--- on verifie la case du bas puis droite puis gauche
if(verifCaseBas(leBateau.length) && verifCaseDroite(leBateau.length) && verifCaseGauche(leBateau.length)){
console.log(leBateau+' un');
}else{
console.log('le bateau de un n\'est pas entouré');
}
}//--- Fin bateau d'une case
}//--- Fin du bord haut
//------------------------------------------bord bas
else if(lig==10 && col>1 && col <10){
//------------------------------------------------------bateau horizontal
if(grisSuivant-premierGris === 1){
//---Reuni les case qui constituent un bateau
var leBateau = bateauH();
//---On vérifie si la case a droite et de gauche du bateau sont bleu
//---puis on vérifie chaque case en dessus du bateau
if(verifCaseDroite(leBateau.length) && verifCaseGauche(leBateau.length) && verifCaseHaut(leBateau)){
console.log(leBateau+' bateau horizontal')
}else{
console.log('les cases autour d\'un bateau horizontal ne sont pas bonne');
}
}
else{
//------------------------------------------------------bateau d'une case
var leBateau = bateauUn();
if(verifCaseHaut(leBateau) && verifCaseDroite(leBateau.length) && verifCaseGauche(leBateau.length)){
console.log(leBateau+' un');
}else{
console.log('le bateau de un n\'est pas entouré');
}
}//--- Fin bateau d'une case
}//--- Fin du bord bas
//------------------------------------------bord gauche
else if(col === 1 && lig >1 && lig<10){
//------------------------------------------------------bateau horizontal
if(grisSuivant-premierGris === 1){
//---Reuni les case qui constituent un bateau
var leBateau = bateauH();
//---On vérifie si la case a droite du bateau est bleu
//---puis on vérifie les cases du bas et du haut
if(verifCaseDroite(leBateau.length) && verifCaseBas(leBateau) && verifCaseHaut(leBateau)){
console.log(leBateau+' bateau horizontal')
}else{
console.log('les cases autour d\'un bateau horizontal ne sont pas bonne');
}
}
//------------------------------------------------------bateau vertical
else if(lesGris.indexOf(premierGris+10) !== -1){
//---Reuni les case qui constituent un bateau
var leBateau = bateauV();
//---On vérifie si la case en dessous et en dessus du bateau sont bleu
//---puis on control chaque case de droite
if(verifCaseBas(leBateau.length) && verifCaseHaut(leBateau.length) && verifCaseDroite(leBateau)){
console.log(leBateau + ' bateau vertical');
}else{
console.log('les cases autour d\'un bateau vertical ne sont pas bonne');
}
}//--- Fin du bateau vertical
else{
//------------------------------------------------------bateau d'une case
var leBateau = bateauUn();
if(verifCaseBas(leBateau.length) && verifCaseHaut(leBateau.length) && verifCaseDroite(leBateau.length)){
console.log(leBateau+' un');
}else{
console.log('le bateau de un n\'est pas entouré');
}
}//--- Fin bateau d'une case
}//--- Fin du bord gauche
//------------------------------------------bord droite
else if(col === 10 && lig > 1 && lig<10){
//------------------------------------------------------bateau vertical
if(lesGris.indexOf(premierGris+10) !== -1){
//---Reuni les case qui constituent un bateau
var leBateau = bateauV();
//---On vérifie si la case en dessous et en dessus du bateau sont bleu
//---puis on control les cases de gauche
if(verifCaseBas(leBateau.length) && verifCaseHaut(leBateau.length) && verifCaseGauche(leBateau) ){
console.log(leBateau + ' bateau vertical');
}else{
console.log('les cases autour d\'un bateau vertical ne sont pas bonne');
}
}//--- Fin du bateau vertical
else{
//------------------------------------------------------bateau d'une case
var leBateau = bateauUn();
if(verifCaseBas(leBateau.length) && verifCaseHaut(leBateau.length) && verifCaseGauche(leBateau.length)){
console.log(leBateau+' un');
}else{
console.log('le bateau de un n\'est pas entouré');
}
}//--- Fin bateau d'une case
}//--- Fin du bord droite
//------------------------------------------toutes les autres poisitions
else{
//------------------------------------------------------bateau horizontal
if(grisSuivant-premierGris === 1){
//---Reuni les case qui constituent un bateau
var leBateau = bateauH();
//---On vérifie si la case a droite et de gauche sont bleu
//---puis toutes les cases en dessous et en dessus du bateau
if( verifCaseDroite(leBateau.length) && verifCaseGauche(leBateau.length)
&& verifCaseBas(leBateau) && verifCaseHaut(leBateau)){
console.log(leBateau+' bateau horizontal');
}else{
console.log('les cases autour d\'un bateau horizontal ne sont pas bonne');
}
}
//------------------------------------------------------bateau vertical
else if(lesGris.indexOf(premierGris+10) !== -1){
//---Reuni les case qui constituent un bateau
var leBateau = bateauV();
//---On control la cases du haut et la case du bas
//---puis toutes les cases de droite et de gauche
if( verifCaseBas(leBateau.length) && verifCaseHaut(leBateau.length)
&& verifCaseDroite(leBateau) && verifCaseGauche(leBateau)){
console.log(leBateau + ' bateau vertical');
}else{
console.log('les cases autour d\'un bateau vertical ne sont pas bonne');
}
}//--- Fin du bateau vertical
else{
//------------------------------------------------------bateau d'une case
var leBateau = bateauUn();
if( verifCaseBas(leBateau.length) && verifCaseHaut(leBateau.length) &&
verifCaseDroite(leBateau.length) && verifCaseGauche(leBateau.length)){
console.log(leBateau+' un');
}else{
console.log('le bateau de un n\'est pas entouré');
}
}//--- Fin bateau d'une case
}//--- Fin des autres positions
6 janv. 2015 à 16:35