function AfficheGrille(C1,C2,C3,C4,C5,C6,C7){ var T2=[]; T2=[ [CaractereEn(C1,5),CaractereEn(C2,5),CaractereEn(C3,5),CaractereEn(C4,5),CaractereEn(C5,5),CaractereEn(C6,5),CaractereEn(C7,5)], [CaractereEn(C1,4),CaractereEn(C2,4),CaractereEn(C3,4),CaractereEn(C4,4),CaractereEn(C5,4),CaractereEn(C6,4),CaractereEn(C7,4)], [CaractereEn(C1,3),CaractereEn(C2,3),CaractereEn(C3,3),CaractereEn(C4,3),CaractereEn(C5,3),CaractereEn(C6,3),CaractereEn(C7,3)], [CaractereEn(C1,2),CaractereEn(C2,2),CaractereEn(C3,2),CaractereEn(C4,2),CaractereEn(C5,2),CaractereEn(C6,2),CaractereEn(C7,2)], [CaractereEn(C1,1),CaractereEn(C2,1),CaractereEn(C3,1),CaractereEn(C4,1),CaractereEn(C5,1),CaractereEn(C6,1),CaractereEn(C7,1)], [CaractereEn(C1,0),CaractereEn(C2,0),CaractereEn(C3,0),CaractereEn(C4,0),CaractereEn(C5,0),CaractereEn(C6,0),CaractereEn(C7,0)], ]; return T2; } function SaisieColonne(C1,C2,C3,C4,C5,C6,C7,T){ var colonne; var long; do{ colonne=Saisie('Entrer une colonne'); colonne=colonne-1; if(colonne==0){ long=Longueur(C1); } if(colonne==1){ long=Longueur(C2); } if(colonne==2){ long=Longueur(C3); } if(colonne==3){ long=Longueur(C4); } if(colonne==4){ long=Longueur(C5); } if(colonne==5){ long=Longueur(C6); } if(colonne==6){ long=Longueur(C7); } if((colonne!=1)&&(colonne!=2)&&(colonne!=3)&&(colonne!=4)&&(colonne!=5)&&(colonne!=6)&&(colonne!=0)){ long=6; } }while(long==6) return(colonne) } function Termine(T){ var vic1; var vic2; var pion; var somme; vic1='Le joueur 1 gagne'; vic2='Le joueur 2 gagne'; pion=0; for(i=0;i<3;i=i+1){ for(j=0;j<6;j=j+1){ if((T[i][j]!='')&&(T[i][j]==T[i+1][j])&&(T[i][j]==T[i+2][j])&&(T[i][j]==T[i+3][j])){ pion=T[i][j]; } } } for(i=0;i<6;i=i+1){ for(j=0;j<4;j=j+1){ if((T[i][j]!='')&&(T[i][j]==T[i][j+1])&&(T[i][j]==T[i][j+2])&&(T[i][j]==T[i][j+3])){ pion=T[i][j]; } } } for(i=0;i<3;i=i+1){ for(j=0;j<4;j=j+1){ if((T[i][j]!='')&&(T[i][j]==T[i+1][j+1])&&(T[i][j]==T[i+2][j+2])&&(T[i][j]==T[i+3][j+3])){ pion=T[i][j]; } } } for(i=3;i<6;i=i+1){ for(j=0;j<4;j=j+1){ if((T[i][j]!='')&&(T[i][j]==T[i-1][j+1])&&(T[i][j]==T[i-2][j+2])&&(T[i][j]==T[i-3][j+3])){ pion=T[i][j]; } } } if((pion!=0)&&(pion=='X')){ Ecrire('Victoire X'); Texte(740,506,'Victoire rouge','red'); } if((pion!=0)&&(pion=='O')){ Ecrire('Victoire O'); Texte(740,506,'Victoire jaune','yellow'); } somme=Longueur(C1)+Longueur(C2)+Longueur(C3)+Longueur(C4)+Longueur(C5)+Longueur(C6)+Longueur(C7); if((somme==42)&&(pion==0)){ Ecrire('Match nul'); Texte(750,506,'Match nul','black'); } return pion; } //XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX function Deny(T,k,l){ var fuck; //Fluctuation Ubiquite du Coefficient Kantique (cf. concept du Seemslegitisme) fuck=0; //solution posay //1)En ligne //a)à la suite for (a = 0; a < 6; a = a + 1) { for (b = 0; b < 5; b = b + 1) { if ((T[a][b] == 'X') && (T[a][b] == T[a][b + 1]) && (T[a][b] == T[a][b + 2])) { if ((b!=4)&&('' == T[a][b + 3])) { if ((a != 5) && (T[a + 1][b + 3] == '')) { if((k==a+1)&&(l==b+3)){ fuck=fuck+1; } } } if ((b != 0) && (T[a][b - 1] == '')) { if ((a != 5) && (T[a + 1][b - 1] == '')) { if((k==a+1)&&(l==b-1)){ fuck=fuck+1; } } } } } } //b)espacé 1 for (a = 0; a < 6; a = a + 1) { for (b = 0; b < 4; b = b + 1) { if ((T[a][b] == 'X') && (T[a][b] == T[a][b + 3]) && (T[a][b] == T[a][b + 2])) { if ('' == T[a][b + 1]) { if ((a != 5) && (T[a + 1][b + 1] == '')) { if((k==a+1)&&(l==b+1)){ fuck=fuck+1; } } } } } } //c)espacé 2 for (a = 0; a < 6; a = a + 1) { for (b = 0; b < 4; b = b + 1) { if ((T[a][b] == 'X') && (T[a][b] == T[a][b + 3]) && (T[a][b] == T[a][b + 1])) { if ('' == T[a][b + 2]) { if ((a != 5) && (T[a + 1][b + 2] == '')) { if((k==a+1)&&(l==b+2)){ fuck=fuck+1; } } } } } } //2)En colonne //pas possible de faire gagner l'adversaare en colonne en plaçant un point //3)En diagonale, en partant du bas //a)à la suite for (a = 0; a < 4; a = a + 1) { for (b = 0; b < 5; b = b + 1) { if ((T[5 - a][b] == 'X') && (T[5 - a][b] == T[4 - a][b + 1]) && (T[5 - a][b] == T[3 - a][b + 2])) { if ((a!=3)&&(b!=4)&&(T[2 - a][b + 3] == '')&&(T[3 - a][b + 3] == '')) { if((k==3-a)&&(l==b+3)){ fuck=fuck+1; } } if ((a != 0) && (b != 0) && (T[6 - a][b - 1] == '')) { if ((a != 1) && (T[7 - a][b-1] == '')) { if((k==7-a)&&(l==b-1)){ fuck=fuck+1; } } } } } } //b)espacé 1 for (a = 0; a < 3; a = a + 1) { for (b = 0; b < 4; b = b + 1) { if ((T[5 - a][b] == 'X') && (T[5 - a][b] == T[2 - a][b + 3]) && (T[5 - a][b] == T[3 - a][b + 2])) { if ((T[4 - a][b + 1] == '')&&(T[5 - a][b + 1] == '')) { if((k==5-a)&&(l==b+1)){ fuck=fuck+1; } } } } } //c)espacé 2 for (a = 0; a < 3; a = a + 1) { for (b = 0; b < 4; b = b + 1) { if ((T[5 - a][b] == 'X') && (T[5 - a][b] == T[2 - a][b + 3]) && (T[5 - a][b] == T[4 - a][b + 1])) { if ((T[3 - a][b + 2] == '')&&(T[4 - a][b + 2] == '')) { if((k==4-a)&&(l==b+2)){ fuck=fuck+1; } } } } } //4)En diagonale, en partant du haut //a) à la suite for (a = 0; a < 4; a = a + 1) { for (b = 0; b < 5; b = b + 1) { if ((T[a][b] == 'X') && (T[a][b] == T[a + 1][b + 1]) && (T[a][b] == T[a + 2][b + 2])) { if ((a!=3)&&(b!=4)&&('' == T[a + 3][b + 3])) { if ((a != 2) && (T[a + 4][b + 3] == '')) { if((k==4+a)&&(l==b+3)){ fuck=fuck+1; } } } if ((a != 0) && (b != 0) && (T[a - 1][b - 1] == '') && (T[a][b - 1] == '')) { if((k==a)&&(l==b-1)){ fuck=fuck+1; } } } } } //b)espacé 1 for (a = 0; a < 3; a = a + 1) { for (b = 0; b < 4; b = b + 1) { if ((T[a][b] == 'X') && (T[a][b] == T[a + 3][b + 3]) && (T[a][b] == T[a + 2][b + 2])) { if (('' == T[a + 1][b + 1])&&(T[a + 2][b + 1] == '')) { if((k==a+2)&&(l==b+1)){ fuck=fuck+1; } } } } } //c)espacé 2 for (a = 0; a < 3; a = a + 1) { for (b = 0; b < 4; b = b + 1) { if ((T[a][b] == 'X') && (T[a][b] == T[a + 3][b + 3]) && (T[a][b] == T[a + 1][b + 1])) { if (('' == T[a + 2][b + 2])&&(T[a + 3][b + 2] == '')) { if((k==a+3)&&(l==b+2)){ fuck=fuck+1; } } } } } return(fuck); } //XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX function gagner(C1,C2,C3,C4,C5,C6,C7,T,sol){ //IV-Enchainement de 4 points //1)En ligne //a)à la suite for (i = 0; i < 6; i = i + 1) { for (j = 0; j < 4; j = j + 1) { if ((T[i][j] == 'O') && (T[i][j] == T[i][j + 1]) && (T[i][j] == T[i][j + 2])) { if ('' == T[i][j + 3]) { if ((i == 5) || (T[i + 1][j + 3] != '')) { sol = j + 3; } } if ((j != 0) && (T[i][j - 1] == '')) { if ((i == 5) || (T[i + 1][j - 1] != '')) { sol = j - 1; } } } } } //b)espacé 1 for (i = 0; i < 6; i = i + 1) { for (j = 0; j < 4; j = j + 1) { if ((T[i][j] == 'O') && (T[i][j] == T[i][j + 3]) && (T[i][j] == T[i][j + 2])) { if ('' == T[i][j + 1]) { if ((i == 5) || (T[i + 1][j + 1] != '')) { sol = j + 1; } } } } } //c)espacé 2 for (i = 0; i < 6; i = i + 1) { for (j = 0; j < 4; j = j + 1) { if ((T[i][j] == 'O') && (T[i][j] == T[i][j + 3]) && (T[i][j] == T[i][j + 1])) { if ('' == T[i][j + 2]) { if ((i == 5) || (T[i + 1][j + 2] != '')) { sol = j + 2; } } } } } //2)En colonne //a) solution unique en colonne for (j = 0; j < 7; j = j + 1) { for (i = 0; i < 3; i = i + 1) { if ((T[5 - i][j] == 'O') && (T[5 - i][j] == T[4 - i][j]) && (T[5 - i][j] == T[3 - i][j]) && ('' == T[2 - i][j])) { sol = j; } } } //3)En diagonale, en partant du bas //a)à la suite for (i = 0; i < 4; i = i + 1) { for (j = 0; j < 5; j = j + 1) { if ((T[5 - i][j] == 'O') && (T[5 - i][j] == T[4 - i][j + 1]) && (T[5 - i][j] == T[3 - i][j + 2])) { if ((i!=3)&&(j!=4)&&(T[2 - i][j + 3] == '')&&(T[3 - i][j + 3] != '')) { sol = j + 3; } if ((i != 0) && (j != 0) && (T[6 - i][j - 1] == '')) { if ((i == 1) || (T[7 - i][j-1] != '')) { sol = j - 1; } } } } } //b)espacé 1 for (i = 0; i < 3; i = i + 1) { for (j = 0; j < 4; j = j + 1) { if ((T[5 - i][j] == 'O') && (T[5 - i][j] == T[2 - i][j + 3]) && (T[5 - i][j] == T[3 - i][j + 2])) { if ((T[4 - i][j + 1] == '')&&(T[5 - i][j + 1] != '')) { sol = j + 1; } } } } //c)espacé 2 for (i = 0; i < 3; i = i + 1) { for (j = 0; j < 4; j = j + 1) { if ((T[5 - i][j] == 'O') && (T[5 - i][j] == T[2 - i][j + 3]) && (T[5 - i][j] == T[4 - i][j + 1])) { if ((T[3 - i][j + 2] == '')&&(T[4 - i][j + 2] != '')) { sol = j + 2; } } } } //En diagonale, en partant du haut //a) à la suite for (i = 0; i < 4; i = i + 1) { for (j = 0; j < 5; j = j + 1) { if ((T[i][j] == 'O') && (T[i][j] == T[i + 1][j + 1]) && (T[i][j] == T[i + 2][j + 2])) { if ((i!=3)&&(j!=4)&&('' == T[i + 3][j + 3])) { if ((i == 2) || (T[i + 4][j + 3] != '')) { sol = j + 3; } } if ((i != 0) && (j != 0) && (T[i - 1][j - 1] == '') && (T[i][j - 1] != '')) { sol = j - 1; } } } } //b)espacé 1 for (i = 0; i < 3; i = i + 1) { for (j = 0; j < 4; j = j + 1) { if ((T[i][j] == 'O') && (T[i][j] == T[i + 3][j + 3]) && (T[i][j] == T[i + 2][j + 2])) { if (('' == T[i + 1][j + 1])) { if (T[i + 2][j + 1] != '') { sol = j + 1; } } } } } //c)espacé 2 for (i = 0; i < 3; i = i + 1) { for (j = 0; j < 4; j = j + 1) { if ((T[i][j] == 'O') && (T[i][j] == T[i + 3][j + 3]) && (T[i][j] == T[i + 1][j + 1])) { if (('' == T[i + 2][j + 2])) { if (T[i + 3][j + 2] != '') { sol = j + 2; } } } } } return(sol); } //XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX function bloquer(C1,C2,C3,C4,C5,C6,C7,T,sol){ //III-Empêche l'adversaire de gagner. Blokage del muerte, marche pas contre la technik del bastardes par contre. //1)En ligne //a)à la suite for (i = 0; i < 6; i = i + 1) { for (j = 0; j < 5; j = j + 1) { if ((T[i][j] == 'X') && (T[i][j] == T[i][j + 1]) && (T[i][j] == T[i][j + 2])) { if ((j!=4)&&('' == T[i][j + 3])) { if ((i == 5) || (T[i + 1][j + 3] != '')) { sol = j + 3; } } if ((j != 0) && (T[i][j - 1] == '')) { if ((i == 5) || (T[i + 1][j - 1] != '')) { sol = j - 1; } } } } } //b)espacé 1 for (i = 0; i < 6; i = i + 1) { for (j = 0; j < 4; j = j + 1) { if ((T[i][j] == 'X') && (T[i][j] == T[i][j + 3]) && (T[i][j] == T[i][j + 2])) { if ('' == T[i][j + 1]) { if ((i == 5) || (T[i + 1][j + 1] != '')) { sol = j + 1; } } } } } //c)espacé 2 for (i = 0; i < 6; i = i + 1) { for (j = 0; j < 4; j = j + 1) { if ((T[i][j] == 'X') && (T[i][j] == T[i][j + 3]) && (T[i][j] == T[i][j + 1])) { if ('' == T[i][j + 2]) { if ((i == 5) || (T[i + 1][j + 2] != '')) { sol = j + 2; } } } } } //2)En colonne //a)solution en colonne unique for (j = 0; j < 7; j = j + 1) { for (i = 0; i < 3; i = i + 1) { if ((T[5 - i][j] == 'X') && (T[5 - i][j] == T[4 - i][j]) && (T[5 - i][j] == T[3 - i][j]) && ('' == T[2 - i][j])) { sol = j; } } } //3)En diagonale, en partant du bas //a)à la suite for (i = 0; i < 4; i = i + 1) { for (j = 0; j < 5; j = j + 1) { if ((T[5 - i][j] == 'X') && (T[5 - i][j] == T[4 - i][j + 1]) && (T[5 - i][j] == T[3 - i][j + 2])) { if ((i!=3)&&(j!=4)&&(T[2 - i][j + 3] == '')&&(T[3 - i][j + 3] != '')) { sol = j + 3; } if ((i != 0) && (j != 0) && (T[6 - i][j - 1] == '')) { if ((i == 1) || (T[7 - i][j-1] != '')) { sol = j - 1; } } } } } //b)espacé 1 for (i = 0; i < 3; i = i + 1) { for (j = 0; j < 4; j = j + 1) { if ((T[5 - i][j] == 'X') && (T[5 - i][j] == T[2 - i][j + 3]) && (T[5 - i][j] == T[3 - i][j + 2])) { if ((T[4 - i][j + 1] == '')&&(T[5 - i][j + 1] != '')) { sol = j + 1; } } } } //c)espacé 2 for (i = 0; i < 3; i = i + 1) { for (j = 0; j < 4; j = j + 1) { if ((T[5 - i][j] == 'X') && (T[5 - i][j] == T[2 - i][j + 3]) && (T[5 - i][j] == T[4 - i][j + 1])) { if ((T[3 - i][j + 2] == '')&&(T[4 - i][j + 2] != '')) { sol = j + 2; } } } } //4)En diagonale, en partant du haut //a) à la suite for (i = 0; i < 4; i = i + 1) { for (j = 0; j < 5; j = j + 1) { if ((T[i][j] == 'X') && (T[i][j] == T[i + 1][j + 1]) && (T[i][j] == T[i + 2][j + 2])) { if ((i!=3)&&(j!=4)&&('' == T[i + 3][j + 3])) { if ((i == 2) || (T[i + 4][j + 3] != '')) { sol = j + 3; } } if ((i != 0) && (j != 0) && (T[i - 1][j - 1] == '') && (T[i][j - 1] != '')) { sol = j - 1; } } } } //b)espacé 1 for (i = 0; i < 3; i = i + 1) { for (j = 0; j < 4; j = j + 1) { if ((T[i][j] == 'X') && (T[i][j] == T[i + 3][j + 3]) && (T[i][j] == T[i + 2][j + 2])) { if (('' == T[i + 1][j + 1])&&(T[i + 2][j + 1] != '')) { sol = j + 1; } } } } //c)espacé 2 for (i = 0; i < 3; i = i + 1) { for (j = 0; j < 4; j = j + 1) { if ((T[i][j] == 'X') && (T[i][j] == T[i + 3][j + 3]) && (T[i][j] == T[i + 1][j + 1])) { if (('' == T[i + 2][j + 2])&&(T[i + 3][j + 2] != '')) { sol = j + 2; } } } } //5)Blokage del technik del bastardes #dénazification for(j=1;j<5;j=j+1){ if((T[5][j]=='X')&&(T[5][j+1]=='X')){ if((j!=4)&&(T[5][j-1]=='')&&(T[5][j+2]=='')&&(T[5][j+3]=='')){ sol=j+2; } if((j!=1)&&(T[5][j-2]=='')&&(T[5][j-1]=='')&&(T[5][j+2]=='')){ sol=j-1; } } } return(sol); } //XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX function aleatoire(C1,C2,C3,C4,C5,C6,C7,sol){ var rand; var long1; //Aucun enchaînement possible :( --> random points if(sol==42){ do{ rand=Hasard(7); if(rand==0){ long1=Longueur(C1); } if(rand==1){ long1=Longueur(C2); } if(rand==2){ long1=Longueur(C3); } if(rand==3){ long1=Longueur(C4); } if(rand==4){ long1=Longueur(C5); } if(rand==5){ long1=Longueur(C6); } if(rand==6){ long1=Longueur(C7); } if((rand!=1)&&(rand!=2)&&(rand!=3)&&(rand!=4)&&(rand!=5)&&(rand!=6)&&(rand!=0)){ long1=6; } }while(long1==6) sol=rand; } return(sol); } //XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX function BotFacile(C1,C2,C3,C4,C5,C6,C7,T){ var sol; //variable cherchant la solution sol=42; //because 0 is too mainstream. Et puis 0 c'est une colonne. sol=bloquer(C1,C2,C3,C4,C5,C6,C7,T,sol); sol=gagner(C1,C2,C3,C4,C5,C6,C7,T,sol); sol=aleatoire(C1,C2,C3,C4,C5,C6,C7,sol); return sol; } //XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX function BotMoyen(C1,C2,C3,C4,C5,C6,C7,T){ var sol; //variable cherchant la solution sol=42; //because 0 is too mainstream. Et puis 0 c'est une colonne. //alignement de 2 cases (un peu tout nul) for(i=0;i<6;i=i+1){ for(j=0;j<7;j=j+1){ if(T[i][j]=='O'){ if(j==0){ if((i!=0)&&(T[i-1][j]=='')){ sol=j; } if((i!=0)&&(T[i-1][j+1]=='')){ if(T[i][j+1]!=''){ sol=j+1; } } if(T[i][j+1]==''){ if((i==5)||(T[i+1][j+1]!='')){ sol=j+1; } } }else{ if(j==5){ if((i!=0)&&(T[i-1][j]=='')){ sol=j; } if((i!=0)&&(T[i-1][j-1]=='')){ if(T[i][j-1]!=''){ sol=j-1; } } if(T[i][j-1]==''){ if((i==5)||(T[i+1][j-1]!='')){ sol=j-1; } } }else{ if((i!=0)&&(T[i-1][j]=='')){ sol=j; } if(T[i][j-1]==''){ if((i==5)||(T[i+1][j-1]!='')){ sol=j-1; } } if(T[i][j+1]==''){ if((i==5)||(T[i+1][j+1]!='')){ sol=j+1; } } if((i!=0)&&(T[i-1][j-1]=='')){ if(T[i][j-1]!=''){ sol=j-1; } } if((i!=0)&&(T[i-1][j+1]=='')){ if(T[i][j+1]!=''){ sol=j+1; } } } } } } } //Alignement de 3 points //En colonne (checked) for (j = 0; j < 7; j = j + 1) { for (i = 0; i < 3; i = i + 1) { if ((T[5 - i][j] == 'O') && (T[5 - i][j] == T[4 - i][j]) && ('' == T[3 - i][j])) { sol = j; } } } //En ligne (checked) for (i = 0; i < 6; i = i + 1) { for (j = 0; j < 6; j = j + 1) { if ((T[i][j] == 'O') && (T[i][j] == T[i][j + 1])) { if ((j<4)&&('' == T[i][j + 3]) && ('' == T[i][j + 2])) { if ((i == 5) || (T[i + 1][j + 2] != '')) { sol = j + 2; } } if((j!=5)&&(j!=0)&&(''==T[i][j-1])&&(T[i][j+2]=='')){ if ((i == 5) || (T[i + 1][j -1] != '')) { sol=j-1; } if ((i == 5) || (T[i + 1][j +2] != '')) { sol=j+2; } } if ((T[i][j - 1] == '')&&(j > 1)&& (T[i][j-2]=='') ) { if ((i == 5) || (T[i + 1][j - 1] != '')) { sol = j - 1; } } } } } //En diagonale, en partant du bas (a peu pres checked) for (i = 0; i < 5; i = i + 1) { for (j = 0; j < 6; j = j + 1) { if ((T[5 - i][j] == 'O') && (T[5 - i][j] == T[4 - i][j + 1])) { if((i<3)&&(j<4)&&('' == T[3 - i][j + 2])&&('' == T[2 - i][j + 3])){ if(T[4-i][j+2]!=''){ sol=j+2; } } if((i<4)&&(j<5)&&(i!=0)&&(j!=0)&&('' == T[3 - i][j + 2])&&('' == T[6 - i][j-1])){ if(T[4-i][j+2]!=''){ sol=j+2; } if((i==1)||('' != T[7 - i][j-1])){ sol=j-1; } } if((i>1)&&(j>1)&&('' == T[6 - i][j -1])&&('' == T[7 - i][j -2])){ if((i==2)||(T[7-i][j-1]!='')){ sol=j-1; } } } } } //En diagonale, en partant du haut (a peu pres checked) for (i = 0; i < 5; i = i + 1) { for (j = 0; j < 6; j = j + 1) { if ((T[i][j] == 'O') && (T[i][j] == T[i+1][j + 1])) { if((i<3)&&(j<4)&&('' == T[i+2][j + 2])&&('' == T[i+3][j + 3])){ if(T[i+3][j+2]!=''){ sol=j+2; } } if((i<4)&&(i!=0)&&(j<5)&&(j!=0)&&('' == T[i+2][j + 2])&&('' == T[i-1][j-1])){ if((i==3)||(T[i+3][j+2]!='')){ sol=j+2; } if('' != T[i][j-1]){ sol=j-1; } } if((i>1)&&(j>1)&&('' == T[i-1][j -1])&&('' == T[i-2][j -2])){ if((i==2)||(T[i][j-1]!='')){ sol=j-1; } } } } } sol=bloquer(C1,C2,C3,C4,C5,C6,C7,T,sol); sol=gagner(C1,C2,C3,C4,C5,C6,C7,T,sol); sol=aleatoire(C1,C2,C3,C4,C5,C6,C7,sol); return sol; } //XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX function BotDifficile(C1,C2,C3,C4,C5,C6,C7,T){ var sol; //variable cherchant la solution sol=42; //because 0 is too mainstream. Et puis 0 c'est une colonne. //I-alignement de 2 cases //1) en colonne //a) unique solution en colonne for(i=0;i<3;i=i+1){ for(j=0;j<7;j=j+1){ if((T[5-i][j]=='O')&&(T[4-i][j]=='')&&(T[3-i][j]=='')&&(T[2-i][j]=='')){ if(Deny(T,T,4-i,j)==0){ sol=j; } } } } //2)en ligne //a)3 cases libres à droite for(i=0;i<6;i=i+1){ for(j=0;j<4;j=j+1){ if((T[i][j]=='O')&&(T[i][j+1]=='')&&(T[i][j+2]=='')&&(T[i][j+3]=='')){ if((i==5)||(T[i+1][j+1]!='')){ if(Deny(T,i,j+1)==0){ sol=j+1; } } } } } //b)2 à droite 1 à gauche for(i=0;i<6;i=i+1){ for(j=1;j<5;j=j+1){ if((T[i][j]=='O')&&(T[i][j+1]=='')&&(T[i][j+2]=='')&&(T[i][j-1]=='')){ if((i==5)||(T[i+1][j+1]!='')){ if(Deny(T,i,j+1)==0){ sol=j+1; } } } } } //c) 2 à gauche 1 à droite for(i=0;i<6;i=i+1){ for(j=2;j<6;j=j+1){ if((T[i][j]=='O')&&(T[i][j+1]=='')&&(T[i][j-2]=='')&&(T[i][j-1]=='')){ if((i==5)||(T[i+1][j-1]!='')){ if(Deny(T,i,j-1)==0){ sol=j-1; } } } } } //d) 3 à gauche for(i=0;i<6;i=i+1){ for(j=3;j<7;j=j+1){ if((T[i][j]=='O')&&(T[i][j-3]=='')&&(T[i][j-2]=='')&&(T[i][j-1]=='')){ if((i==5)||(T[i+1][j-1]!='')){ if(Deny(T,i,j-1)==0){ sol=j-1; } } } } } //3)Diagonale en partant du bas //a) 3 à droite for(i=0;i<3;i=i+1){ for(j=0;j<4;j=j+1){ if((T[5-i][j]=='O')&&(T[4-i][j+1]=='')&&(T[3-i][j+2]=='')&&(T[2-i][j+3]=='')){ if(T[5-i][j+1]!=''){ if(Deny(T,4-i,j+1)==0){ sol=j+1; } } } } } //b) 2 à droite 1 à gauche for(i=1;i<4;i=i+1){ for(j=1;j<5;j=j+1){ if((T[5-i][j]=='O')&&(T[4-i][j+1]=='')&&(T[3-i][j+2]=='')&&(T[6-i][j-1]=='')){ if(T[5-i][j+1]!=''){ if(Deny(T,4-i,j+1)==0){ sol=j+1; } } } } } //c) 2 à gauche 1 à droite for(i=2;i<5;i=i+1){ for(j=2;j<6;j=j+1){ if((T[5-i][j]=='O')&&(T[4-i][j+1]=='')&&(T[7-i][j-2]=='')&&(T[6-i][j-1]=='')){ if(T[7-i][j-1]!=''){ if(Deny(T,6-i,j-1)==0){ sol=j-1; } } } } } //d) 3 à gauche for(i=3;i<6;i=i+1){ for(j=3;j<7;j=j+1){ if((T[5-i][j]=='O')&&(T[8-i][j-3]=='')&&(T[7-i][j-2]=='')&&(T[6-i][j-1]=='')){ if(T[7-i][j-1]!=''){ if(Deny(T,6-i,j-1)==0){ sol=j-1; } } } } } //4)Diagonale en partant du haut //a)3 à droite for(i=0;i<3;i=i+1){ for(j=0;j<4;j=j+1){ if((T[i][j]=='O')&&(T[i+1][j+1]=='')&&(T[i+2][j+2]=='')&&(T[i+3][j+3]=='')){ if(T[i+2][j+1]!=''){ if(Deny(T,i+1,j+1)==0){ sol=j+1; } } } } } //b) 2 à droite 1 à gauche for(i=1;i<4;i=i+1){ for(j=1;j<5;j=j+1){ if((T[i][j]=='O')&&(T[i+1][j+1]=='')&&(T[i+2][j+2]=='')&&(T[i-1][j-1]=='')){ if(T[i+2][j+1]!=''){ if(Deny(T,i+1,j+1)==0){ sol=j+1; } } } } } //c) 1 à droite 2 à gauche for(i=2;i<5;i=i+1){ for(j=2;j<6;j=j+1){ if((T[i][j]=='O')&&(T[i+1][j+1]=='')&&(T[i-2][j-2]=='')&&(T[i-1][j-1]=='')){ if(T[i][j-1]!=''){ if(Deny(T,i-1,j-1)==0){ sol=j-1; } } } } } //d) 3 à gauche for(i=3;i<6;i=i+1){ for(j=3;j<7;j=j+1){ if((T[i][j]=='O')&&(T[i-3][j-3]=='')&&(T[i-2][j-2]=='')&&(T[i-1][j-1]=='')){ if(T[i][j-1]!=''){ if(Deny(T,i-1,j-1)==0){ sol=j-1; } } } } } //II-Alignement de 3 points //1)En colonne (checked) //a) unique solution en colonne for (j = 0; j < 7; j = j + 1) { for (i = 0; i < 3; i = i + 1) { if ((T[5 - i][j] == 'O') && (T[5 - i][j] == T[4 - i][j]) && ('' == T[3 - i][j])) { if(Deny(T,3-i,j)==0){ sol=j; } } } } //2)En ligne (checked) //a)à la suite for (i = 0; i < 6; i = i + 1) { for (j = 0; j < 6; j = j + 1) { if ((T[i][j] == 'O') && (T[i][j] == T[i][j + 1])) { //2 'O' à la suite if ((j<4)&&('' == T[i][j + 3]) && ('' == T[i][j + 2])) { //2 cases libres à droites if ((i == 5) || (T[i + 1][j + 2] != '')) { if(Deny(T,i,j+2)==0){ sol=j+2; } } } if((j!=5)&&(j!=0)&&(''==T[i][j-1])&&(T[i][j+2]=='')){ //1 cases de chaque côté if ((i == 5) || (T[i + 1][j -1] != '')) { if(Deny(T,i,j-1)==0){ sol=j-1; } } if ((i == 5) || (T[i + 1][j +2] != '')) { if(Deny(T,i,j+2)==0){ sol=j+2; } } } if ((T[i][j - 1] == '')&&(j > 1)&& (T[i][j-2]=='') ) { //2 cases à gauche if ((i == 5) || (T[i + 1][j - 1] != '')) { if(Deny(T,i,j-1)==0){ sol=j-1; } } } } } } //b) espacé droite for(i=0;i<6;i=i+1){ for(j=0;j<4;j=j+1){ if((T[i][j]=='O')&&(T[i][j+1]=='')&&(T[i][j+2]==T[i][j])&&(T[i][j+3]=='')){ if((i==5)||(T[i+1][j+1]!='')){ if(Deny(T,i,j+1)==0){ sol=j+1; } } } } } //c) espacé gauche for(i=0;i<6;i=i+1){ for(j=1;j<5;j=j+1){ if((T[i][j]=='O')&&(T[i][j+1]=='')&&(T[i][j+2]==T[i][j])&&(T[i][j-1]=='')){ if((i==5)||(T[i+1][j+1]!='')){ if(Deny(T,i,j+1)==0){ sol=j+1; } } } } } //3)En diagonale, en partant du bas (a peu pres checked) //a)à la suite for (i = 0; i < 5; i = i + 1) { for (j = 0; j < 6; j = j + 1) { if ((T[5 - i][j] == 'O') && (T[5 - i][j] == T[4 - i][j + 1])) { //2 'O' à la suite if((i<3)&&(j<4)&&('' == T[3 - i][j + 2])&&('' == T[2 - i][j + 3])){ //2 cases libres à droite if(T[4-i][j+2]!=''){ if(Deny(T,3-i,j+2)==0){ sol=j+2; } } } if((i<4)&&(j<5)&&(i!=0)&&(j!=0)&&('' == T[3 - i][j + 2])&&('' == T[6 - i][j-1])){ //1 case libre de chaque côté if(T[4-i][j+2]!=''){ if(Deny(T,3-i,j+2)==0){ sol=j+2; } } if((i==1)||('' != T[7 - i][j-1])){ if(Deny(T,6-i,j-1)==0){ sol=j-1; } } } if((i>1)&&(j>1)&&('' == T[6 - i][j -1])&&('' == T[7 - i][j -2])){ //2 cases libres à gauche if((i==2)||(T[7-i][j-1]!='')){ if(Deny(T,6-i,j-1)==0){ sol=j-1; } } } } } } //b)espacé droite for(i=0;i<3;i=i+1){ for(j=0;j<4;j=j+1){ if((T[5-i][j]=='O')&&(T[4-i][j+1]=='')&&(T[3-i][j+2]==T[5-i][j])&&(T[2-i][j+3]=='')&&(T[5-1][j+1]!='')){ if(Deny(T,4-i,j+1)==0){ sol=j+1; } } } } //c)espacé gauche for(i=1;i<4;i=i+1){ for(j=1;j<5;j=j+1){ if((T[5-i][j]=='O')&&(T[4-i][j+1]=='')&&(T[3-i][j+2]==T[i][j])&&(T[6-i][j-1]=='')&&(T[5-i][j+1]!='')){ if(Deny(T,4-i,j+1)==0){ sol=j+1; } } } } //4)En diagonale, en partant du haut (a peu pres checked) //a) à la suite for (i = 0; i < 5; i = i + 1) { for (j = 0; j < 6; j = j + 1) { if ((T[i][j] == 'O') && (T[i][j] == T[i+1][j + 1])) { //2 'O' à la suite if((i<3)&&(j<4)&&('' == T[i+2][j + 2])&&('' == T[i+3][j + 3])){ //2 cases libres à droite if(T[i+3][j+2]!=''){ if(Deny(T,i+2,j+2)==0){ sol=j+1; } } } if((i!=4)&&(i!=0)&&(j!=5)&&(j!=0)&&('' == T[i+2][j + 2])&&('' == T[i-1][j-1])){ //1 case libre de chaque côté if((i==3)||(T[i+3][j+2]!='')){ if(Deny(T,i+2,j+2)==0){ sol=j+2; } } if('' != T[i][j-1]){ if(Deny(T,i-1,j-1)==0){ sol=j-1; } } } if((i>1)&&(j>1)&&('' == T[i-1][j -1])&&('' == T[i-2][j -2])){ //2 cases libres à gauche if((i==2)||(T[i][j-1]!='')){ if(Deny(T,i-1,j-1)==0){ sol=j-1; } } } } } } //b)espacé droite for(i=0;i<3;i=i+1){ for(j=0;j<4;j=j+1){ if((T[i][j]=='O')&&(T[i+1][j+1]=='')&&(T[i+2][j+2]==T[i][j])&&(T[i+3][j+3]=='')&&(T[i+2][j+1]!='')){ if(Deny(T,i+1,j+1)==0){ sol=j+1; } } } } //c)espacé gauche for(i=1;i<4;i=i+1){ for(j=1;j<5;j=j+1){ if((T[i][j]=='O')&&(T[i+1][j+1]=='')&&(T[i+2][j+2]==T[i][j])&&(T[i-1][j-1]=='')&&(T[i+2][j+1]!='')){ if(Deny(T,i+1,j+1)==0){ sol=j+1; } } } } sol=bloquer(C1,C2,C3,C4,C5,C6,C7,T,sol); sol=gagner(C1,C2,C3,C4,C5,C6,C7,T,sol); sol=aleatoire(C1,C2,C3,C4,C5,C6,C7,sol); return sol; } //XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX function menu(C1,C2,C3,C4,C5,C6,C7,T){ var m; var tour; var fin; var pos; setCanvasFont('helvetica','52pt','bold'); Texte(100,100,'Mode de jeu','black'); setCanvasFont('helvetica','40pt',''); Texte(100,300,'1 - Joueur contre Joueur','black'); Texte(100,400,'2 - Joueur contre IA Facile','black'); Texte(100,500,'3 - Joueur contre IA Moyenne','black'); Texte(100,600,'4 - Joueur contre IA Difficile','black'); m=Saisie('Numero du mode de jeu?'); Initialiser(); tour=0; fin=0; setCanvasFont('helvetica','42pt', 'bold'); RectanglePlein(0,0,720,700,'black'); RectanglePlein(3, 3, 714, 694, 'blue'); for (i = 1; i < 8; i = i + 1) { for (j = 1; j < 7; j = j + 1) { CerclePlein(90 * i, 90 * j, 75, 'white'); } } for(i=0;i<7;i=i+1){ RectanglePlein(53+90*i,595,56,76,'black'); RectanglePlein(56+90*i,598,50,70,rgb(255,255,100)); Texte(65+90*i,650,i+1,'black'); RectanglePlein(720,0,406,376,'black'); RectanglePlein(723,3,400,370,rgb(255,100,255)); setCanvasFont('helvetica','50px', 'black'); Texte(750,50,'Dernier coup','black'); Texte(875,125,'joué','black'); RectanglePlein(720,376,406,206,'black'); RectanglePlein(723,379,400,200,rgb(255,100,255)); Texte(750,426,'Resultat : ','black'); } while(fin==0){ if(tour%2==0){ pos=SaisieColonne(C1,C2,C3,C4,C5,C6,C7,T); if(pos==0){ C1=C1+'X'; CerclePlein(90,90*(7-Longueur(C1)),75,'red'); } if(pos==1){ C2=C2+'X'; CerclePlein(180,90*(7-Longueur(C2)),75,'red'); } if(pos==2){ C3=C3+'X'; CerclePlein(270,90*(7-Longueur(C3)),75,'red'); } if(pos==3){ C4=C4+'X'; CerclePlein(360,90*(7-Longueur(C4)),75,'red'); } if(pos==4){ C5=C5+'X'; CerclePlein(450,90*(7-Longueur(C5)),75,'red'); } if(pos==5){ C6=C6+'X'; CerclePlein(540,90*(7-Longueur(C6)),75,'red'); } if(pos==6){ C7=C7+'X'; CerclePlein(630,90*(7-Longueur(C7)),75,'red'); } RectanglePlein(740,270,380,100,rgb(255,100,255)); Texte(800,330,'Colonne '+(pos+1),'red'); RectanglePlein(740,170,380,100,rgb(255,100,255)); CerclePlein(920,220,75,'red'); } if(tour%2==1){ if(m==1){ pos=SaisieColonne(C1,C2,C3,C4,C5,C6,C7,T); } if(m==2){ pos=BotFacile(C1,C2,C3,C4,C5,C6,C7,T); } if(m==3){ pos=BotMoyen(C1,C2,C3,C4,C5,C6,C7,T); } if(m==4){ pos=BotDifficile(C1,C2,C3,C4,C5,C6,C7,T); } if(pos==0){ C1=C1+'O'; CerclePlein(90,90*(7-Longueur(C1)),75,'yellow'); } if(pos==1){ C2=C2+'O'; CerclePlein(180,90*(7-Longueur(C2)),75,'yellow'); } if(pos==2){ C3=C3+'O'; CerclePlein(270,90*(7-Longueur(C3)),75,'yellow'); } if(pos==3){ C4=C4+'O'; CerclePlein(360,90*(7-Longueur(C4)),75,'yellow'); } if(pos==4){ C5=C5+'O'; CerclePlein(450,90*(7-Longueur(C5)),75,'yellow'); } if(pos==5){ C6=C6+'O'; CerclePlein(540,90*(7-Longueur(C6)),75,'yellow'); } if(pos==6){ C7=C7+'O'; CerclePlein(630,90*(7-Longueur(C7)),75,'yellow'); } RectanglePlein(740,270,380,100,rgb(255,100,255)); Texte(800,330,'Colonne '+(pos+1),'yellow'); RectanglePlein(740,170,380,100,rgb(255,100,255)); CerclePlein(920,220,75,'yellow'); } EffacerEcran(); T=AfficheGrille(C1,C2,C3,C4,C5,C6,C7); AfficherTableau(T); fin=Termine(T); tour=tour+1; } } var T=[]; var C1; var C2; var C3; var C4; var C5; var C6; var C7; C1=''; C2=''; C3=''; C4=''; C5=''; C6=''; C7=''; menu(C1,C2,C3,C4,C5,C6,C7,T); /*Test var sol; var T = []; /*T = [ ['', '', '', '', '', '', ''], ['', '', '', '', '', '', ''], ['', '', '', '', '', '', ''], ['', '', '', '', '', '', ''], ['', '', '', '', '', '', ''], ['', '', '', '', '', '', ''], ]; *//* T = [ ['', '', '', '', '', '', ''], ['', '', '', '', '', '', ''], ['', '', '', '', '', '', ''], ['', '', '', '', '', '', ''], ['', '', '', '', '', '', ''], ['', '', '', '', '', '', ''], ]; sol = 42; */