coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 12 déc. 2004 à 22:45
j'ai posté ça il y a longtemps, ce code est foireux... si tu veux plus de détails et un code plus simle, tu peux lire mon jeu d'échec réseau en php...
morpilo
Messages postés5Date d'inscriptiondimanche 12 décembre 2004StatutMembreDernière intervention21 mars 20051 12 déc. 2004 à 22:14
Merc bcp
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 18 juil. 2004 à 00:43
j'ai pas voulu tester ton jeu, j'ai juste regardé un peu les sources, il n'y a pas d'ia ...
J'ai pas très bien compris ta phrase dans ce qu'il reste a améliorer... tu cherches les règles du fou, ce que le fou a le droit de faire ?
Le fou avance uniquement en diagonale, regarde ce que ça donne pour le code :
if (piece==4){
/*si la pièce déplacée est un fou... Les fous vont en diagonales*/
printf("il y a un fou en (%d, %d)\n", a, b);
if ((x-a==y-b)||(x-a==-y+b)){
/*calcule t la taille du déplacement (le nombre de case traversée par le fou)*/
d=0;
if (a<x){
t=x-a;
}
else{
t=a-x;
}
for (i=1;i<t;i++){
/*Pour les quelques lignes suivantes, les coordonées des différentes cases traversés par le fou sont
calculés et placés dans e et f*/
if (a<x && b<y){
e=a+i;
f=b+i;
}
if (a<x && b>y){
e=a+i;
f=b-i;
}
if (a>x && b<y){
e=a-i;
f=b+i;
}
if (a>x && b>y){
e=a-i;
f=b-i;
}
printf("a=%d b=%d, a'=%d, b'=%d)\n", a, b, e, f);
if (*(ca+e*8+f)==0){
/*si la case est vide alors d augmente de 1, donc si a la fin, d est égal au nombre de case traversés,
alors le coup est légal.*/
d++;
}
}
if (d==t-1){
if (xd==100){
xd=a;
yd=b;
printf("coup legal!!!\n");
droit++;
printf("le fou va de (%d, %d) en (%d, %d)\n", a, b, xd, yd);
}else if(xd==a){
yd=b;
printf("coup legal!!!\n");
droit++;
printf("le fou va de (%d, %d) en (%d, %d)\n", a, b, x, y);
}else{
printf("ce fou n'est pas au bon endroit...\n");
}
}
}else{
printf("vous n'avancez pas en diagonales...\n");
}
}
J'ai pas fait gaffe aux noms de variables de ton fichier, j'éspère que tu t'y retrouvera (c'est un bout d'un jeu d'échec que j'ai créé, j'ai pas mis d'ia non plus, je la cherchais chez toi, pour m'inspirer de ton code, mais t'en a pas mis non plus...)
BlackGoddess
Messages postés338Date d'inscriptionjeudi 22 août 2002StatutMembreDernière intervention14 juin 2005 11 déc. 2003 à 13:53
Le code paraît bien documenté :)
par contre, essaye de moins mélanger c et c++ : tu as des includes c++, tu utilises cout, les fstream + surcharges d'opérateur, mais par contre la structure de ton programme relève du c : pas de classes, utilisations des struct comme stockage d'informations uniquement, puis les #define : le c++ essaye d'eviter au maximum l'utilisation du préprocesseur donc #define MAX_CAR_NOM 50 => const int MAX_CAR_NOM = 50; et essayer de l'englober dans une classe (class MaClass { static const int MAX_CAR_NOM = 50; }; )
garslouche
Messages postés583Date d'inscriptionmardi 26 novembre 2002StatutMembreDernière intervention29 mai 20151 11 déc. 2003 à 09:07
Quelques remarques :
1) La capture d'écran me paraissait un tout petit peu plus jolie ;)
2) Tu utilises bcp d'informations en double. Par exemple, chaque case est libre ou non, est blanche ou noire, contient un type de piece, d'une certain couleur. Soit un booleén (4 octets) et 3 int (4 octets chacun). Tu pourrais définir une piece qui s'appellerait VIDE et dire que si la piece est VIDE c'est que la case est VIDE et sinon elle n'est pas vide ! Pareil pour la couleur : tu pourrais faire des pieces de type CAVALIER_BLANC CAVALIER_NOIR, ... Bref tu pourrais gagner de la place.
3) Ce programme est incroyablement peu pratique à utiliser ... :(
Mais c'est pas mal pour comprendre un peu les progs en C et les opérations sur les fichiers.
12 déc. 2004 à 22:45
12 déc. 2004 à 22:14
18 juil. 2004 à 00:43
J'ai pas très bien compris ta phrase dans ce qu'il reste a améliorer... tu cherches les règles du fou, ce que le fou a le droit de faire ?
Le fou avance uniquement en diagonale, regarde ce que ça donne pour le code :
if (piece==4){
/*si la pièce déplacée est un fou... Les fous vont en diagonales*/
printf("il y a un fou en (%d, %d)\n", a, b);
if ((x-a==y-b)||(x-a==-y+b)){
/*calcule t la taille du déplacement (le nombre de case traversée par le fou)*/
d=0;
if (a<x){
t=x-a;
}
else{
t=a-x;
}
for (i=1;i<t;i++){
/*Pour les quelques lignes suivantes, les coordonées des différentes cases traversés par le fou sont
calculés et placés dans e et f*/
if (a<x && b<y){
e=a+i;
f=b+i;
}
if (a<x && b>y){
e=a+i;
f=b-i;
}
if (a>x && b<y){
e=a-i;
f=b+i;
}
if (a>x && b>y){
e=a-i;
f=b-i;
}
printf("a=%d b=%d, a'=%d, b'=%d)\n", a, b, e, f);
if (*(ca+e*8+f)==0){
/*si la case est vide alors d augmente de 1, donc si a la fin, d est égal au nombre de case traversés,
alors le coup est légal.*/
d++;
}
}
if (d==t-1){
if (xd==100){
xd=a;
yd=b;
printf("coup legal!!!\n");
droit++;
printf("le fou va de (%d, %d) en (%d, %d)\n", a, b, xd, yd);
}else if(xd==a){
yd=b;
printf("coup legal!!!\n");
droit++;
printf("le fou va de (%d, %d) en (%d, %d)\n", a, b, x, y);
}else{
printf("ce fou n'est pas au bon endroit...\n");
}
}
}else{
printf("vous n'avancez pas en diagonales...\n");
}
}
J'ai pas fait gaffe aux noms de variables de ton fichier, j'éspère que tu t'y retrouvera (c'est un bout d'un jeu d'échec que j'ai créé, j'ai pas mis d'ia non plus, je la cherchais chez toi, pour m'inspirer de ton code, mais t'en a pas mis non plus...)
11 déc. 2003 à 13:53
par contre, essaye de moins mélanger c et c++ : tu as des includes c++, tu utilises cout, les fstream + surcharges d'opérateur, mais par contre la structure de ton programme relève du c : pas de classes, utilisations des struct comme stockage d'informations uniquement, puis les #define : le c++ essaye d'eviter au maximum l'utilisation du préprocesseur donc #define MAX_CAR_NOM 50 => const int MAX_CAR_NOM = 50; et essayer de l'englober dans une classe (class MaClass { static const int MAX_CAR_NOM = 50; }; )
11 déc. 2003 à 09:07
1) La capture d'écran me paraissait un tout petit peu plus jolie ;)
2) Tu utilises bcp d'informations en double. Par exemple, chaque case est libre ou non, est blanche ou noire, contient un type de piece, d'une certain couleur. Soit un booleén (4 octets) et 3 int (4 octets chacun). Tu pourrais définir une piece qui s'appellerait VIDE et dire que si la piece est VIDE c'est que la case est VIDE et sinon elle n'est pas vide ! Pareil pour la couleur : tu pourrais faire des pieces de type CAVALIER_BLANC CAVALIER_NOIR, ... Bref tu pourrais gagner de la place.
3) Ce programme est incroyablement peu pratique à utiliser ... :(
Mais c'est pas mal pour comprendre un peu les progs en C et les opérations sur les fichiers.