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
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
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
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
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 !