Fraaargh Powered by Toy Dolls & Catch22 | Ok, merci, mais en fait, je crois que je vais faire comme ca:
Citation :
typedef enum {BLANC,NOIR} t_Couleur;
typedef enum {CASE_VIDE, PION_BLANC, PION_NOIR, DAME_BLANCHE, DAME_NOIRE} t_TypePiece;
typedef enum {true, false} bool;
typedef struct {
t_TypePiece case1 :3; t_TypePiece case2 :3;
t_TypePiece case3 :3; t_TypePiece case4 :3;
t_TypePiece case5 :3; t_TypePiece case6 :3;
t_TypePiece case7 :3; t_TypePiece case8 :3;
t_TypePiece case9 :3; t_TypePiece case10:3;
// 2bits libres (alignement tous les 32 bits)
t_TypePiece case11:3; t_TypePiece case12:3;
t_TypePiece case13:3; t_TypePiece case14:3;
t_TypePiece case15:3; t_TypePiece case16:3;
t_TypePiece case17:3; t_TypePiece case18:3;
t_TypePiece case19:3; t_TypePiece case20:3;
// 2bits libres
t_TypePiece case21:3; t_TypePiece case22:3;
t_TypePiece case23:3; t_TypePiece case24:3;
t_TypePiece case25:3; t_TypePiece case26:3;
t_TypePiece case27:3; t_TypePiece case28:3;
t_TypePiece case29:3; t_TypePiece case30:3;
// 2bits libres
t_TypePiece case31:3; t_TypePiece case32:3;
t_TypePiece case33:3; t_TypePiece case34:3;
t_TypePiece case35:3; t_TypePiece case36:3;
t_TypePiece case37:3; t_TypePiece case38:3;
t_TypePiece case39:3; t_TypePiece case40:3;
// 2bits libres
t_TypePiece case41:3; t_TypePiece case42:3;
t_TypePiece case43:3; t_TypePiece case44:3;
t_TypePiece case45:3; t_TypePiece case46:3;
t_TypePiece case47:3; t_TypePiece case48:3;
t_TypePiece case49:3; t_TypePiece case50:3;
//reste 2 bits pour stocker autre chose et que le tout tienne sur 160 bits = 20 octets
t_Couleur couleurDevantJouer :1;
unsigned int partieGagnee :1;
} t_Damier;
void setCase(t_Damier * damier, t_TypePiece newPiece, int iCase)
{
assert(iCase >= 1 && iCase <= 50);
switch(iCase)
{
case 1: (*damier).case1 = newPiece; break; case 2: (*damier).case2 = newPiece; break;
case 3: (*damier).case3 = newPiece; break; case 4: (*damier).case4 = newPiece; break;
case 5: (*damier).case5 = newPiece; break; case 6: (*damier).case6 = newPiece; break;
case 7: (*damier).case7 = newPiece; break; case 8: (*damier).case8 = newPiece; break;
case 9: (*damier).case9 = newPiece; break; case 10: (*damier).case10 = newPiece; break;
case 11: (*damier).case11 = newPiece; break; case 12: (*damier).case12 = newPiece; break;
case 13: (*damier).case13 = newPiece; break; case 14: (*damier).case14 = newPiece; break;
case 15: (*damier).case15 = newPiece; break; case 16: (*damier).case16 = newPiece; break;
case 17: (*damier).case17 = newPiece; break; case 18: (*damier).case18 = newPiece; break;
case 19: (*damier).case19 = newPiece; break; case 20: (*damier).case20 = newPiece; break;
case 21: (*damier).case21 = newPiece; break; case 22: (*damier).case22 = newPiece; break;
case 23: (*damier).case23 = newPiece; break; case 24: (*damier).case24 = newPiece; break;
case 25: (*damier).case25 = newPiece; break; case 26: (*damier).case26 = newPiece; break;
case 27: (*damier).case27 = newPiece; break; case 28: (*damier).case28 = newPiece; break;
case 29: (*damier).case29 = newPiece; break; case 30: (*damier).case30 = newPiece; break;
case 31: (*damier).case31 = newPiece; break; case 32: (*damier).case32 = newPiece; break;
case 33: (*damier).case33 = newPiece; break; case 34: (*damier).case34 = newPiece; break;
case 35: (*damier).case35 = newPiece; break; case 36: (*damier).case36 = newPiece; break;
case 37: (*damier).case37 = newPiece; break; case 38: (*damier).case38 = newPiece; break;
case 39: (*damier).case39 = newPiece; break; case 40: (*damier).case40 = newPiece; break;
case 41: (*damier).case41 = newPiece; break; case 42: (*damier).case42 = newPiece; break;
case 43: (*damier).case43 = newPiece; break; case 44: (*damier).case44 = newPiece; break;
case 45: (*damier).case45 = newPiece; break; case 46: (*damier).case46 = newPiece; break;
case 47: (*damier).case47 = newPiece; break; case 48: (*damier).case48 = newPiece; break;
case 49: (*damier).case49 = newPiece; break; case 50: (*damier).case50 = newPiece; break;
}
}
t_TypePiece getCase(t_Damier * damier, int iCase)
{
assert(iCase >= 1 && iCase <= 50);
switch(iCase)
{
case 1: return (*damier).case1; case 2: return (*damier).case2; case 3: return (*damier).case3; case 4: return (*damier).case4; case 5: return (*damier).case5; case 6: return (*damier).case6; case 7: return (*damier).case7; case 8: return (*damier).case8; case 9: return (*damier).case9; case 10: return (*damier).case10; case 11: return (*damier).case11; case 12: return (*damier).case12; case 13: return (*damier).case13; case 14: return (*damier).case14; case 15: return (*damier).case15; case 16: return (*damier).case16; case 17: return (*damier).case17; case 18: return (*damier).case18; case 19: return (*damier).case19; case 20: return (*damier).case20; case 21: return (*damier).case21; case 22: return (*damier).case22; case 23: return (*damier).case23; case 24: return (*damier).case24; case 25: return (*damier).case25; case 26: return (*damier).case26; case 27: return (*damier).case27; case 28: return (*damier).case28; case 29: return (*damier).case29; case 30: return (*damier).case30; case 31: return (*damier).case31; case 32: return (*damier).case32; case 33: return (*damier).case33; case 34: return (*damier).case34; case 35: return (*damier).case35; case 36: return (*damier).case36; case 37: return (*damier).case37; case 38: return (*damier).case38; case 39: return (*damier).case39; case 40: return (*damier).case40; case 41: return (*damier).case41; case 42: return (*damier).case42; case 43: return (*damier).case43; case 44: return (*damier).case44; case 45: return (*damier).case45; case 46: return (*damier).case46; case 47: return (*damier).case47; case 48: return (*damier).case48; case 49: return (*damier).case49; case 50: return (*damier).case50;
}
return -5; //On ne passe jamais ici, cela evite juste d'avoir un 'Warning'
}
void initialiserDamier(t_Damier * damier)
{
int iCase;
// Les pions Noirs
for (iCase =1; iCase <=20; iCase ++)
setCase(damier, PION_NOIR,iCase );
// Les cases vides
for (iCase =21; iCase <=30; iCase ++)
setCase(damier, CASE_VIDE,iCase );
// Les pions Blancs
for (iCase =31; iCase <=50; iCase ++)
setCase(damier, PION_BLANC,iCase );
}
|
y'a pas grand chose à expliquer, j'ai tapé ca cet apres midi, je vous laisse voir. En fait, au niveau temps de calcul, lors de la construction/evaluation de l'arbre, ca risque de pas etre super rapide. Mais mon prof m'a dit de limiter la place memoire, donc j'essaie de lui faire plaiz' ! |