Boucle for qui n'est pas prise en compte / jeu d'echecs
Résolu
Louis
-
Louis -
Louis -
Bonsoir,
J'essaye de coder un jeu d'echecs en C et je rencontre un probleme.
avec plateau le plateau d'echecs de taille variable
verification_pion fonctionne bien mais pas verification_fou, meme si les boucle if fonctionnent bien, les boucle for qui suivent ne sont tout simplement pas prises en compte... Elles servent a verifier qu'il n'y a pas de pieces sur le trajet du fou (qui se deplace en diagonale de tous les côtés).
Merci de votre aide !
le code :
Merci d'y penser dans tes prochains messages.
J'essaye de coder un jeu d'echecs en C et je rencontre un probleme.
avec plateau le plateau d'echecs de taille variable
verification_pion fonctionne bien mais pas verification_fou, meme si les boucle if fonctionnent bien, les boucle for qui suivent ne sont tout simplement pas prises en compte... Elles servent a verifier qu'il n'y a pas de pieces sur le trajet du fou (qui se deplace en diagonale de tous les côtés).
Merci de votre aide !
le code :
void deplacement(int l_depart, int c_depart, int l_arrivee, int c_arrivee, int * *plateau) {
plateau[l_arrivee][c_arrivee] = plateau[l_depart][c_depart];
plateau[l_depart][c_depart] = 0;
}
int verification_pion(int l_depart, int c_depart, int l_arrivee, int c_arrivee, int * *plateau) {
if (l_depart - l_arrivee == 1 && c_arrivee - c_depart == 0) {
if (plateau[l_arrivee][c_arrivee] != 0) {
return 2; // probleme quand une piece est sur la case
} else {
return 1; // tout va bien
}
}
if (l_depart - l_arrivee == 2 && c_arrivee - c_depart == 0 ){
}
else {
if (l_arrivee == l_depart + 1 || c_arrivee == c_depart + 1 || c_arrivee == c_depart - 1 && plateau[l_arrivee][c_arrivee] != 0) {
if (plateau[l_arrivee][c_arrivee] < 0 ) {
return 1; // tout va bien
} else {
return 4; // probleme de deplacement
}
}
}
return 4; //probleme de déplacement
}
int verification_fou(int l_depart, int c_depart, int l_arrivee, int c_arrivee, int * *plateau) {
if ((c_arrivee - c_depart) != (l_arrivee - l_depart) && -(l_arrivee - l_depart) != (c_arrivee - c_depart)) {
return 3;
}
if (c_arrivee - c_depart > 0 && l_arrivee - l_depart > 0) {
printf("\n cas 1");
for (int z = 0; z == (l_arrivee - l_depart); z++) {
if (plateau[l_depart + z][c_depart + z] == 0) {
return 5;
}
}
}
if (c_arrivee - c_depart > 0 && l_arrivee - l_depart < 0) {
printf("\n cas 2");
for (int i = 1; i == l_arrivee - l_depart; i++) {
if (plateau[l_depart + i][c_depart - i] != 0) {
return 5;
}
}
return 1;
}
if (c_arrivee - c_depart < 0 && l_arrivee - l_depart < 0) {
printf("\n cas 3");
for (int i = 0; i == l_depart - l_arrivee; i++) {
if (plateau[l_depart - i][c_depart - i] != 0) {
return 5;
}
}
return 1;
}
if (c_arrivee - c_depart < 0 && l_arrivee - l_depart > 0) {
printf("\n cas 4");
for (int i = 1; i == l_depart - l_arrivee; i = i + 1) {
if (plateau[l_depart - i][c_depart + i] != 0) {
return 5;
}
}
return 1;
}
return 0;
}
void initialisation_coup(int * *plateau){
int l_depart, c_depart, l_arrivee, c_arrivee;
printf("Quelle piece voulez vous bouger ? (ligne colonne) ");
scanf("%d %d", &l_depart, &c_depart);
printf("Ou voulez vous la deplacer ? (ligne colonne) ");
scanf("%d %d", &l_arrivee, &c_arrivee);
printf("donc on part de %d %d a %d %d", l_depart, c_depart, l_arrivee, c_arrivee);
printf("%d",*&plateau[l_depart][c_depart]);
switch(*&plateau[l_depart][c_depart]){
case 1 :
switch(verification_pion(l_depart, c_depart, l_arrivee, c_arrivee, *&plateau)) {
case 1 :
deplacement(l_depart, c_depart, l_arrivee, c_arrivee, *&plateau);
break;
case 2 :
printf("une piece est deja sur la case\n");
break;
case 4 :
printf("probleme de deplacement\n");
break;
default :
printf("erreur\n");
}
break;
case 3 :
switch(verification_fou(l_depart, c_depart, l_arrivee, c_arrivee, *&plateau)) {
case 1 :
deplacement(l_depart, c_depart, l_arrivee, c_arrivee, *&plateau);
break;
case 2 :
printf("une piece est deja sur la case fou\n");
break;
case 5 :
printf("prob\n");
break;
case 3 :
printf("deplacement impossible\n");
break;
case 0 :
printf("erreur 1");
break;
default :
printf("erreur 2\n");
}
break;
default :
deplacement(l_depart, c_depart, l_arrivee, c_arrivee, *&plateau);
}
}
| EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI Merci d'y penser dans tes prochains messages. |
Merci d'y penser dans tes prochains messages.
Configuration: Windows / Chrome 101.0.4951.67
A voir également:
- Boucle for qui n'est pas prise en compte / jeu d'echecs
- Downloader for pc - Télécharger - Téléchargement & Transfert
- Comment savoir qui regarde mon compte facebook - Guide
- Créer un compte google - Guide
- Installer windows 10 sans compte microsoft - Guide
- Créer un compte gmail - Guide
2 réponses
yg_be
Messages postés
24281
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 585
bonjour,
As-tu envisagé, avant et dans les boucles, de faire printf() avec les valeurs des variables importantes?
Cela ne t'aiderait-il pas à progresser dans la compréhension du comportement du code que tu as écrit?
As-tu envisagé, avant et dans les boucles, de faire printf() avec les valeurs des variables importantes?
Cela ne t'aiderait-il pas à progresser dans la compréhension du comportement du code que tu as écrit?
yg_be
Messages postés
24281
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 585
Merci d'utiliser les balises de code quand tu partages du code: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
merci quand même !