Exemple #1
0
ListeCases *determinerDeplacementPossiblesPion(CaseJeu caseJeu[][8], CaseJeu *caseActive){
    ListeCases *listeCases = (ListeCases *)malloc(sizeof(listeCases));
    listeCases = NULL;

    int xActif = (caseActive->position.x-1)/80;
    int yActif = (caseActive->position.y-1)/80;
    if(caseActive->piece->couleurPiece == BLANC){
        if(caseJeu[xActif][yActif-1].piece == NULL){
            listeCases = ajouterElement(listeCases, &caseJeu[xActif][yActif-1]);
            if(caseJeu[xActif][yActif-2].piece == NULL && caseActive->piece->premierCoup){
                listeCases = ajouterElement(listeCases, &caseJeu[xActif][yActif-2]);
            }
        }
        if(caseJeu[xActif-1][yActif-1].piece != NULL && caseJeu[xActif-1][yActif-1].piece->couleurPiece == NOIR){
            listeCases = ajouterElement(listeCases, &caseJeu[xActif-1][yActif-1]);
        }
        if(caseJeu[xActif+1][yActif-1].piece != NULL && caseJeu[xActif+1][yActif-1].piece->couleurPiece == NOIR){
            listeCases = ajouterElement(listeCases, &caseJeu[xActif+1][yActif-1]);
        }
    }else{
        if(caseJeu[xActif][yActif+1].piece == NULL){
            listeCases = ajouterElement(listeCases, &caseJeu[xActif][yActif+1]);
            if(caseJeu[xActif][yActif+2].piece == NULL && caseActive->piece->premierCoup){
                listeCases = ajouterElement(listeCases, &caseJeu[xActif][yActif+2]);
            }
        }
        if(caseJeu[xActif-1][yActif+1].piece != NULL && caseJeu[xActif-1][yActif+1].piece->couleurPiece == NOIR){
            listeCases = ajouterElement(listeCases, &caseJeu[xActif-1][yActif+1]);
        }
        if(caseJeu[xActif+1][yActif+1].piece != NULL && caseJeu[xActif+1][yActif+1].piece->couleurPiece == NOIR){
            listeCases = ajouterElement(listeCases, &caseJeu[xActif+1][yActif+1]);
        }
    }
    return listeCases;
}
Exemple #2
0
ListeCases *determinerDeplacementPossiblesRoi(CaseJeu caseJeu[][8], CaseJeu *caseActive){
    ListeCases *listeCases = (ListeCases *)malloc(sizeof(listeCases));
    listeCases = NULL;

    int xActif = (caseActive->position.x-1)/80;
    int yActif = (caseActive->position.y-1)/80;
    if(xActif > 0){
        if(yActif>0){
            if(caseJeu[xActif-1][yActif-1].piece == NULL ||
                caseJeu[xActif-1][yActif-1].piece->couleurPiece != caseActive->piece->couleurPiece)
            listeCases = ajouterElement(listeCases, &caseJeu[xActif-1][yActif-1]);
        }

        if(caseJeu[xActif-1][yActif].piece == NULL ||
                caseJeu[xActif-1][yActif].piece->couleurPiece != caseActive->piece->couleurPiece)
                listeCases = ajouterElement(listeCases, &caseJeu[xActif-1][yActif]);

        if(yActif<7){
            if(caseJeu[xActif-1][yActif+1].piece == NULL ||
                caseJeu[xActif-1][yActif+1].piece->couleurPiece != caseActive->piece->couleurPiece)
                listeCases = ajouterElement(listeCases, &caseJeu[xActif-1][yActif+1]);
        }
    }

    if(yActif >0){
        if(caseJeu[xActif][yActif-1].piece == NULL ||
            caseJeu[xActif][yActif-1].piece->couleurPiece != caseActive->piece->couleurPiece)
            listeCases = ajouterElement(listeCases, &caseJeu[xActif][yActif-1]);
    }

    if(yActif <7){
        if(caseJeu[xActif][yActif+1].piece == NULL ||
            caseJeu[xActif][yActif+1].piece->couleurPiece != caseActive->piece->couleurPiece)
            listeCases = ajouterElement(listeCases, &caseJeu[xActif][yActif+1]);
    }

    if(xActif < 7){
        if(yActif>0){
            if(caseJeu[xActif+1][yActif-1].piece == NULL ||
                caseJeu[xActif+1][yActif-1].piece->couleurPiece != caseActive->piece->couleurPiece)
                listeCases = ajouterElement(listeCases, &caseJeu[xActif+1][yActif-1]);
        }
        if(caseJeu[xActif+1][yActif].piece == NULL ||
            caseJeu[xActif+1][yActif].piece->couleurPiece != caseActive->piece->couleurPiece)
            listeCases = ajouterElement(listeCases, &caseJeu[xActif+1][yActif]);
        if(yActif<7){
            if(caseJeu[xActif+1][yActif+1].piece == NULL ||
                caseJeu[xActif+1][yActif+1].piece->couleurPiece != caseActive->piece->couleurPiece)
                listeCases = ajouterElement(listeCases, &caseJeu[xActif+1][yActif+1]);
        }
    }
    return listeCases;
}
Exemple #3
0
liste_chainee * tab_to_list(int tab_repetition[])
{
    int i;
    liste_chainee *liste =NULL;
    Arbre * a;
    for(i=0;i<256;i++)
    {
        if(tab_repetition[i] !=0)
        {
           //printf("\n on ajoute %c = %d", i, tab_repetition[i]);
            a = ajouter_nouveau_parent(NULL,NULL,i,tab_repetition[i]);
            liste =ajouterElement(liste,a);
            
	}
    }
    return liste;
            
}
Exemple #4
0
//créé l'arbre de huffman à partir du tableau de répétition
Arbre * creer_arbre_huffman(int tab_repetition[])
{
    Arbre * a;
    Arbre * a1;
    Arbre * a2;
    liste_chainee *liste;
    int taille_fichier = somme_element(tab_repetition);
    
    liste = tab_to_list(tab_repetition);
    afficher(liste);
    while(liste->arbre->proba != taille_fichier)
    {
        a1 = recherche_mini(liste);
        liste = supprimerElement(liste, a1);
        a2 = recherche_mini(liste);
        liste = supprimerElement(liste, a2);
        a = ajouter_nouveau_parent(a1,a2,0,((a1->proba) +(a2->proba)));
        //printf("proba : a1 %d  a2 %d  a %d \n",a1->proba,a2->proba,a->proba);
        liste= ajouterElement(liste, a);
    }
    
    return liste->arbre;
}
Exemple #5
0
ListeCases *determinerDeplacementPossiblesCavalier(CaseJeu caseJeu[][8], CaseJeu *caseActive){
    ListeCases *listeCases = (ListeCases *)malloc(sizeof(listeCases));
    listeCases = NULL;

    int xActif = (caseActive->position.x-1)/80;
    int yActif = (caseActive->position.y-1)/80;
    if(xActif+1<8 && yActif-2>=0 &&
       (caseJeu[xActif+1][yActif-2].piece == NULL || caseJeu[xActif+1][yActif-2].piece->couleurPiece != caseActive->piece->couleurPiece)){

        listeCases = ajouterElement(listeCases, &caseJeu[xActif+1][yActif-2]);

    }

    if(xActif+1<8 && yActif+2<8 &&
       (caseJeu[xActif+1][yActif+2].piece == NULL || caseJeu[xActif+1][yActif+2].piece->couleurPiece != caseActive->piece->couleurPiece)){

        listeCases = ajouterElement(listeCases, &caseJeu[xActif+1][yActif+2]);

    }

    if(xActif+2<8 && yActif-1>=0 &&
       (caseJeu[xActif+2][yActif-1].piece == NULL || caseJeu[xActif+2][yActif-1].piece->couleurPiece != caseActive->piece->couleurPiece)){

        listeCases = ajouterElement(listeCases, &caseJeu[xActif+2][yActif-1]);

    }

    if(xActif+2<8 && yActif+1<8 &&
       (caseJeu[xActif+2][yActif+1].piece == NULL || caseJeu[xActif+2][yActif+1].piece->couleurPiece != caseActive->piece->couleurPiece)){

        listeCases = ajouterElement(listeCases, &caseJeu[xActif+2][yActif+1]);

    }

    if(xActif-1>=0 && yActif-2>=0 &&
       (caseJeu[xActif-1][yActif-2].piece == NULL || caseJeu[xActif-1][yActif-2].piece->couleurPiece != caseActive->piece->couleurPiece)){

        listeCases = ajouterElement(listeCases, &caseJeu[xActif-1][yActif-2]);

    }

    if(xActif-1>=0 && yActif+2<8 &&
       (caseJeu[xActif-1][yActif+2].piece == NULL || caseJeu[xActif-1][yActif+2].piece->couleurPiece != caseActive->piece->couleurPiece)){

        listeCases = ajouterElement(listeCases, &caseJeu[xActif-1][yActif+2]);

    }

    if(xActif-2>=0 && yActif-1>=0 &&
       (caseJeu[xActif-2][yActif-1].piece == NULL || caseJeu[xActif-2][yActif-1].piece->couleurPiece != caseActive->piece->couleurPiece)){

        listeCases = ajouterElement(listeCases, &caseJeu[xActif-2][yActif-1]);

    }

    if(xActif-2>=0 && yActif+1<8 &&
       (caseJeu[xActif-2][yActif+1].piece == NULL || caseJeu[xActif-2][yActif+1].piece->couleurPiece != caseActive->piece->couleurPiece)){

        listeCases = ajouterElement(listeCases, &caseJeu[xActif-2][yActif+1]);

    }

    return listeCases;
}
Exemple #6
0
ListeCases *determinerDeplacementPossiblesReine(CaseJeu caseJeu[][8], CaseJeu *caseActive){


 ListeCases *listeCases = (ListeCases *)malloc(sizeof(listeCases));
    listeCases = NULL;
    int xActif = (caseActive->position.x-1)/80;
    int yActif = (caseActive->position.y-1)/80;

    int x = xActif;
    int y = yActif;

    int continuer = 1;
    while(continuer && x>0){
            x--;
        if(caseJeu[x][y].piece != NULL){
            if(caseJeu[x][y].piece->couleurPiece != caseActive->piece->couleurPiece){
                listeCases = ajouterElement(listeCases, &caseJeu[x][y]);
            }
            continuer = 0;
        }else if(caseJeu[x][y].piece == NULL){
            listeCases = ajouterElement(listeCases, &caseJeu[x][y]);
        }
    }

    x = xActif;
    y = yActif;
    continuer = 1;
    while(continuer && x<7 ){
            x++;
        if(caseJeu[x][y].piece != NULL){
            if(caseJeu[x][y].piece->couleurPiece != caseActive->piece->couleurPiece){
                listeCases = ajouterElement(listeCases, &caseJeu[x][y]);
            }
            continuer = 0;
        }else if(caseJeu[x][y].piece == NULL){
            listeCases = ajouterElement(listeCases, &caseJeu[x][y]);
        }
    }

    x = xActif;
    y = yActif;
    continuer = 1;
    while(continuer && y<7){
            y++;
        if(caseJeu[x][y].piece != NULL){
            if(caseJeu[x][y].piece->couleurPiece != caseActive->piece->couleurPiece){
                listeCases = ajouterElement(listeCases, &caseJeu[x][y]);
            }
            continuer = 0;
        }else if(caseJeu[x][y].piece == NULL){
            listeCases = ajouterElement(listeCases, &caseJeu[x][y]);
        }
    }

    x = xActif;
    y = yActif;
    continuer = 1;
    while(continuer && y>0){
            y--;
        if(caseJeu[x][y].piece != NULL){
            if(caseJeu[x][y].piece->couleurPiece != caseActive->piece->couleurPiece){
                listeCases = ajouterElement(listeCases, &caseJeu[x][y]);
            }
            continuer = 0;
        }else if(caseJeu[x][y].piece == NULL){
            listeCases = ajouterElement(listeCases, &caseJeu[x][y]);
        }
    }


    x = xActif;
    y = yActif;
    continuer = 1;
    while(continuer && x>0 && y>0){
            x--;y--;
        if(caseJeu[x][y].piece != NULL){
            if(caseJeu[x][y].piece->couleurPiece != caseActive->piece->couleurPiece){
                listeCases = ajouterElement(listeCases, &caseJeu[x][y]);
            }
            continuer = 0;
        }else if(caseJeu[x][y].piece == NULL){
            listeCases = ajouterElement(listeCases, &caseJeu[x][y]);
        }
    }

    x = xActif;
    y = yActif;
    continuer = 1;
    while(continuer && x<7 && y>0){
            x++;y--;
        if(caseJeu[x][y].piece != NULL){
            if(caseJeu[x][y].piece->couleurPiece != caseActive->piece->couleurPiece){
                listeCases = ajouterElement(listeCases, &caseJeu[x][y]);
            }
            continuer = 0;
        }else if(caseJeu[x][y].piece == NULL){
            listeCases = ajouterElement(listeCases, &caseJeu[x][y]);
        }
    }

    x = xActif;
    y = yActif;
    continuer = 1;
    while(continuer && x>0 && y<7){
            x--;y++;
        if(caseJeu[x][y].piece != NULL){
            if(caseJeu[x][y].piece->couleurPiece != caseActive->piece->couleurPiece){
                listeCases = ajouterElement(listeCases, &caseJeu[x][y]);
            }
            continuer = 0;
        }else if(caseJeu[x][y].piece == NULL){
            listeCases = ajouterElement(listeCases, &caseJeu[x][y]);
        }
    }

    x = xActif;
    y = yActif;
    continuer = 1;
    while(continuer && x<7 && y<7){
            x++;y++;
        if(caseJeu[x][y].piece != NULL){
            if(caseJeu[x][y].piece->couleurPiece != caseActive->piece->couleurPiece){
                listeCases = ajouterElement(listeCases, &caseJeu[x][y]);
            }
            continuer = 0;
        }else if(caseJeu[x][y].piece == NULL){
            listeCases = ajouterElement(listeCases, &caseJeu[x][y]);
        }
    }

    return listeCases;


}