Souhaite de l'aide

Résolu
damienjojo Messages postés 4 Date d'inscription dimanche 26 avril 2009 Statut Membre Dernière intervention 29 mars 2010 - 27 mars 2010 à 23:37
damienjojo Messages postés 4 Date d'inscription dimanche 26 avril 2009 Statut Membre Dernière intervention 29 mars 2010 - 29 mars 2010 à 22:51
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;


}

}

2 réponses

damienjojo Messages postés 4 Date d'inscription dimanche 26 avril 2009 Statut Membre Dernière intervention 29 mars 2010
29 mars 2010 à 22:51
Bonjour,
Super l'idée je te remercie
3
benmor Messages postés 49 Date d'inscription jeudi 14 avril 2005 Statut Membre Dernière intervention 27 novembre 2011 9
28 mars 2010 à 11:08
Bonjour,

Télécharge une IDE (Eclipse, NetBeans, ...), lance en debug et fait pause quand tu boucle...

Tu vera que tu boucle dans:
public static void jeu()
{
[...]

    while((test==false)&&(av==false))
    {
        Terminal.ecrireString("A vous de jouer...");
    }

[...]
}


Par contre, tu ne fait pas du Java là, toutes tes méthodes sont en static.
Arrête de penser C, et pense plutôt Objet.

Fait des classes Grille, Joueur, IA, etc...

Bonne chance,
Benoit.
0
Rejoignez-nous