bonjour
j'ai un programme qui boucle non stop
et je ne trouve pas l'erreur si vous pouvez m'aider
je vous remercie
mon code
public class p444{
//Définition des champs de classe
static int resultaaa=0;
static int li,co,num;
static boolean test=false,av=false,poss=true,varvar=true;
static String forme;
static int quit=0;
static String[][] grille=new String[7][7];
static int[][] liste=new int[50][2];
static int coupnb=0;
static String[][] grilleJeu=new String[7][7];
static String[][] listes=new String[158][4];
static int[][] grillePoint=new int[7][7];
static String[][] grilleTest=new String[7][7];
static String[][] grilleTest2=new String[7][7];
static int[] coucou=new int[7];
static int[] coucou1=new int[7];
static int ligneEnCours;
static String[] coucoucou=new String[7];
static String [][]grille1=new String[li][co];
static String [][] grille2=new String[li][co];
//initialise le champ de classe "grille" pour utilisation
public static void init(){
for(li=0;li<7;li++){
for(co=0;co<7;co++){
grille[li][co]="_";
}
}
}
//affichage de la grille
public static void print(String[][]p){
init();
Terminal.ecrireString(" 1 2 3 4 5 6 7 ");
Terminal.ecrireString("\n----------------------------\n");
String [][]tab=new String[7][7];
for(li=0;li<tab.length;li++){
for(co=0;co<tab[0].length;co++){
Terminal.ecrireString("|");
System.out.print(grille[li][co]);
Terminal.ecrireString("|");
System.out.print(" ");
}
System.out.println(" ");
}
Terminal.ecrireString("----------------------------\n");
}
//égalise deux grilles transmisent comme paramètres (pour IA)
public static void egaliz(String[][] grille1,String[][] grille2){
for(li=0;li<7;li++){
for(co=0;co<7;co++){
grille1[li][co]=grille2[li][co];
}
}
}
public static void retour(){
grille[liste[coupnb-1][0]][liste[coupnb-1][1]]="_";
grille[liste[coupnb-2][0]][liste[coupnb-2][1]]="_";
coupnb-=2;
}
//retourne true si puissance 4 trouvé dans la grille
public static boolean verif(){
boolean aligne=false;
if(verDiagDroit()&&verDiagGauch()&&verVertic()&&verHoriz()){
aligne=true;
}
return(aligne);
}
//fonctions de recherche de puissance 4
public static boolean verDiagDroit(){
boolean align=false;
for(li=0;li<4;li++){
for(co=0;co<4;co++){
if((grille[li][co]==grille[li+1][co+1])&&
(grille[li][co]==grille[li+2][co+2])&&
(grille[li][co]==grille[li+3][co+3])&&
(grille[li][co]!="_"))
align=true;
}
}
return(align);
}
public static boolean verDiagGauch(){
boolean align=false;
for(li=0;li<4;li++){
for(co=3;co<7;co++){
if((grille[li][co]==grille[li+1][co-1])&&
(grille[li][co]==grille[li+2][co-2])&&
(grille[li][co]==grille[li+3][co-3])&&
(grille[li][co]!="_"))
align=true;
}
}
return(align);
}
public static boolean verVertic(){
boolean align=false;
for(li=0;li<4;li++){
for(co=0;co<7;co++){
if((grille[li][co]==grille[li+1][co])&&
(grille[li][co]==grille[li+2][co])&&
(grille[li][co]==grille[li+3][co])&&
(grille[li][co]!="_"))
align=true;
}
}
return(align);
}
public static boolean verHoriz(){
boolean align=false;
for(li=0;li<4;li++){
for(co=0;co<7;co++){
if((grille[li][co]==grille[li][co+1])&&
(grille[li][co]==grille[li][co+2])&&
(grille[li][co]==grille[li][co+3])&&
(grille[li][co]!="_"))
align=true;
}
}
return(align);
}
//modifie le champs de classe "grille" (ajoute une forme)
public static void placer(char coup1){
int[] tampon=new int[2];
int cou=(int)(coup1)-48-49;
try{
if(grille[0][cou]!="_"){
tampon[0]=0;
tampon[1]=50;
}
else{
for(li=0;li<7;li++){
if(grille[li][cou]=="_"){
tampon[0]=li;
tampon[1]=cou;
}
}
}
int ligne=tampon[0];
int colonne=tampon[1];
if(grille[ligne][colonne]!="_")
tampon[3]=2;
grille[ligne][colonne]=forme;
liste[coupnb][0]=ligne;
liste[coupnb][1]=colonne;
ligneEnCours=ligne;
test=true;
}
catch(java.lang.ArrayIndexOutOfBoundsException erreur){
if(resultaaa==0){
Terminal.ecrireString(" COORDONEES ERRONNEES");
test=false;
}
}
catch(StringIndexOutOfBoundsException erreur){
if(resultaaa==0){
Terminal.ecrireString(" COORDONEES ERRONNEES");
test=false;
}
}
finally
{}
}
//vérifie si partie nulle
public static boolean plein(){
int k=0;
for(co=0;co<7;co++){
if(grille[0][co]=="_")
k++;
}
if(k!=0)
return(false);
return(true);
}
//modifie le champs de classe "forme"
public static void chang(){
if(forme=="x"){
forme="o";
num=2;
}
else{
forme="x";
num=1;
}
}
//fonction pour le déroulement du jeu
public static void jeu(){
init();
av=false;
forme="x";
num=1;
char coup1=' ';
resultaaa=1;
while((verif()==false)&&(plein()==false)&&(av==false)){
test=false;
if((resultaaa==1)&&(num==2)){
ordi() ;
coupnb++;
}
else{
while((test==false)&&(av==false)){
Terminal.ecrireString("A vous de jouer...");
}
coupnb++;
}
chang();
}
while(av==false){
if(verif()){
if(num==1){
Terminal.ecrireString(" J'AI GAGNE!");poss=false;}
if(num==2){
Terminal.ecrireString(" TU AS GAGNE...");poss=false;}
}
if(plein()){
Terminal.ecrireString(" PARTIE NULLE");
poss=false;
}
}
poss=true;
}
public static int analyseAlign(String[] tampon)
{
int ordi=0,jou=0,score=-1;
String aforme;
if(forme=="o")
{aforme="x";}
else
{aforme="o";}
for(co=0;co<4;co++)
{
if(tampon[co]==forme)
ordi++;
if(tampon[co]==aforme)
jou++;
}
if(jou==0)
{
if(ordi==0)
score=2;
if(ordi==1)
score=20;
if(ordi==2)
score=200;
if(ordi==3)
score=2000;
if(ordi==4)
score=100000;
}
else if(ordi==0)
{
if(jou==0)
score=-3;
if(jou==1)
score=-31;
if(jou==2)
score=-801;
if(jou==3)
score=-4001;
if(jou==4)
score=-100001;
}
return(score);
}
public static void rempliPoint1()
{
for(int l=0;l<7;l++)
{
for(int c=0;c<7;c++)
{
if(grille[l][c]=="_")
{
if(c<5)
grillePoint[l][c]=attribPoint(l,c)+1;
if(c==5)
grillePoint[l][c]=attribPoint(l,c)+5;
if(c>5)
grillePoint[l][c]=attribPoint(l,c)-3;
}
else
{grillePoint[l][c]=0;}
}
}
simplifieur();
}
public static void simplifieur()
{
int l=0,tampon2=0,tampon=0;
for(co=0;co<7;co++)
{
while((l<7)&&(grillePoint[l][co]!=0))
{
if(tampon2<Math.abs(grillePoint[l][co]))
{tampon2=Math.abs(grillePoint[l][co]); tampon=grillePoint[l][co];}
l++;
}
if(l!=0)
{
coucou[co]=grillePoint[l-1][co]+tampon;
}
else
{
coucou[co]=0;
}
tampon=0;
tampon2=0;
l=0;
}
}
public static int coucousom()
{
int som=0;
for(int c=0;c<7;c++)
{
som+=coucou[c];
}
return(som);
}
public static void ordi() {
rempliPoint1();
int tampon=-10,move=6,move1=-1;
char r,rk;
String aff;
System.out.println("");
for(co=0;co<7;co++)
{System.out.print(coucou[co]+" ");} System.out.println("");
egaliz(grilleTest,grille);
for(int cos=0;cos<7;cos++){
egaliz(grille,grilleTest);
r=(char)(cos+48+49);
if(grille[0][cos]!="_"){
for(int ck=0;ck<4;ck++){
coucou[ck]=10;
}
}
else
{
placer(r);
rempliPoint1();
chang();
egaliz(grilleTest2,grille);
for(int ck=0;ck<7;ck++){
egaliz(grille,grilleTest2);
rk=(char)(ck+48+49);
placer(rk);
if(verif()==true){
coucou[ck]=-100000;
}
}
chang();
egaliz(grille,grilleTest2);
}
aff=String.valueOf(coucousom());
if(coucousom()<-1000000){
aff="gagne";}
if((coucousom()>-1000000)&&(coucousom()<=-90000)){
aff="perd";}
if(grilleTest[0][cos]!="_"){
aff="imposs.";}
coucoucou[cos]=aff;
if(coucousom()>tampon){
tampon=coucousom();
move=cos;
}
if(verif()==true){
move1=cos;
}
}
if(move1!=-1){
move=move1;
tampon=100000;
}
move+=48+49;
egaliz(grille,grilleTest);
Terminal.ecrireString("1 : "+coucoucou[0]);
Terminal.ecrireString("2 : "+coucoucou[1]);
Terminal.ecrireString("3 : "+coucoucou[2]);
Terminal.ecrireString("4 : "+coucoucou[3]);
Terminal.ecrireString("5 : "+coucoucou[4]);
Terminal.ecrireString("6 : "+coucoucou[5]);
Terminal.ecrireString("7 : "+coucoucou[6]);
Terminal.ecrireString("coup : "+(char)(move-32));
placer((char)(move));
Terminal.ecrireString(" "+(char)(move)+" "+tampon+"\n\n") ;
}
public static int attribPoint(int ligne,int colonne){
int point=0;
String[] tampon=new String[4];
String formOrdi=forme;
if(colonne+3<7){
for(co=0;co<4;co++){
tampon[co]=grille[ligne][co+colonne];
}
point+=analyseAlign(tampon);
}
if((colonne+2<7)&&(colonne-1>=0)){
for(co=0;co<4;co++){
tampon[co]=grille[ligne][co+colonne-1];
}
point+=analyseAlign(tampon);
}
if((colonne+1<7)&&(colonne-2>=0)){
for(co=0;co<4;co++){
tampon[co]=grille[ligne][co+colonne-2];
}
point+=analyseAlign(tampon);
}
if((colonne<7)&&(colonne-3>=0)){
for(co=0;co<4;co++){
tampon[co]=grille[ligne][co+colonne-3];
}
point+=analyseAlign(tampon);
}
if(ligne-3>=0){
for(li=0;li<4;li++){
tampon[li]=grille[ligne+li-3][colonne];
}
point+=analyseAlign(tampon);
}
if((ligne-2>=0)&&(ligne+1<7)){
for(li=0;li<4;li++){
tampon[li]=grille[ligne+li-2][colonne];
}
point+=analyseAlign(tampon);
}
if((ligne-1>=0)&&(ligne+2<7)){
for(li=0;li<4;li++){
tampon[li]=grille[ligne+li-1][colonne];
}
point+=analyseAlign(tampon);
}
if((ligne>=0)&&(ligne+3<7)){
for(li=0;li<4;li++){
tampon[li]=grille[ligne+li][colonne];
}
point+=analyseAlign(tampon);
}
if((ligne-3>=0)&&(colonne+3<7)){
for(li=0;li<4;li++){
tampon[li]=grille[ligne+li-3][colonne+3-li];
}
point+=analyseAlign(tampon);
}
if((ligne-2>=0)&&(colonne+2<7)&&(ligne+1<7)&&(colonne-1>=0)){
for(li=0;li<4;li++){
tampon[li]=grille[ligne+li-2][colonne+2-li];
}
point+=analyseAlign(tampon);
}
if((ligne-1>=0)&&(colonne+1<7)&&(ligne+2<7)&&(colonne-2>=0)){
for(li=0;li<4;li++){
tampon[li]=grille[ligne+li-1][colonne+1-li];
}
point+=analyseAlign(tampon);
}
if((ligne>=0)&&(colonne<7)&&(ligne+3<7)&&(colonne-3>=0)){
for(li=0;li<4;li++){
tampon[li]=grille[ligne+li][colonne-li];
}
point+=analyseAlign(tampon);
}
if((ligne>=0)&&(colonne+3<7)&&(ligne+3<7)&&(colonne>=0)){
for(li=0;li<4;li++){
tampon[li]=grille[ligne+li][colonne+li];
}
point+=analyseAlign(tampon);
}
if((ligne-1>=0)&&(colonne+2<7)&&(ligne+2<7)&&(colonne-1>=0)){
for(li=0;li<4;li++){
tampon[li]=grille[ligne+li-1][colonne+li-1];
}
point+=analyseAlign(tampon);
}
if((ligne-2>=0)&&(colonne+1<7)&&(ligne+1<7)&&(colonne-2>=0)){
for(li=0;li<4;li++){
tampon[li]=grille[ligne+li-2][colonne+li-2];
}
point+=analyseAlign(tampon);
}
if((ligne-3>=0)&&(colonne<7)&&(ligne<7)&&(colonne-3>=0)){
for(li=0;li<4;li++)
{
tampon[li]=grille[ligne+li-3][colonne+li-3];
}
point+=analyseAlign(tampon);
}
point+=40-8*Math.abs(4-colonne);
return(point);
}
public static void main(String[] args){
String[][] grille=new String[7][7];
print(grille);
jeu();
int quit=0;
}
}
Afficher la suite