PROBLEME DE FREEZE // LE JEU DE LA VIE // C++ - SFML
Fermé
Adrenokrome
Messages postés
4
Date d'inscription
dimanche 13 juin 2021
Statut
Membre
Dernière intervention
13 juin 2021
-
Modifié le 13 juin 2021 à 04:20
Adrenokrome Messages postés 4 Date d'inscription dimanche 13 juin 2021 Statut Membre Dernière intervention 13 juin 2021 - 13 juin 2021 à 18:53
Adrenokrome Messages postés 4 Date d'inscription dimanche 13 juin 2021 Statut Membre Dernière intervention 13 juin 2021 - 13 juin 2021 à 18:53
A voir également:
- PROBLEME DE FREEZE // LE JEU DE LA VIE // C++ - SFML
- Pc freeze - Guide
- 94 jeu - Télécharger - Puzzle & Réflexion
- Jeu zuma - Télécharger - Jeux vidéo
- Jeux de moto: jeu de course 3d - Télécharger - Course
- Deep freeze windows 10 - Télécharger - Sécurité
5 réponses
Phil_1857
Messages postés
1872
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
168
13 juin 2021 à 10:15
13 juin 2021 à 10:15
Bonjour,
Pas facile de jeter un coup d'oeil sur une image !
merci de copier/coller ici ton code complet avec les balises de code
mode d'emploi:
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Visuellement, ça doit ressembler à ceci (avec la coloration syntaxique) :
Pas facile de jeter un coup d'oeil sur une image !
merci de copier/coller ici ton code complet avec les balises de code
mode d'emploi:
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Visuellement, ça doit ressembler à ceci (avec la coloration syntaxique) :
#include <iostream> int main(){ std::cout << "Hello World!"; return 0; }
Adrenokrome
Messages postés
4
Date d'inscription
dimanche 13 juin 2021
Statut
Membre
Dernière intervention
13 juin 2021
Modifié le 13 juin 2021 à 19:15
Modifié le 13 juin 2021 à 19:15
static sf::RenderWindow grille(sf::VideoMode(largeurGrille, hauteurGrille), "___Le jeu de la vie___"); initialiser_rectangle_fond_grille(&fondGrille); //OUVERTURE DE LA FENETRE while (grille.isOpen()) { sf::Event evenement; while (grille.pollEvent(evenement)) { // Boucle du jeu if (evenement.type == sf::Event::Closed) { grille.close(); } if (sf::Mouse::isButtonPressed(sf::Mouse::Left)) { positionSouris = sf::Mouse::getPosition(grille); std::cout << "souris_x: " << positionSouris.x << " souris_y: " << positionSouris.y << std::endl; } // AFFICHE LE TABLEAU for (int i = 0; i < nombreColonnesTableau; i++) { for (int j = 0; j < nombreLignesTableau; j++) { grille.draw((*(ptr_tableauCellules+i*nombreColonnesTableau+j)).get_rectangleCellule()); } } regles_jeu_de_la_vie(ptr_tableauCellules, ptr_tableauTamponCellules); copier_tableau_cellules(ptr_tableauCellules, ptr_tableauTamponCellules); sf::sleep(sf::milliseconds(10)); /* grille.draw(fondGrille); */ grille.display(); grille.clear(); // Fin de la boucle du jeu } }
Dalfab
Messages postés
706
Date d'inscription
dimanche 7 février 2016
Statut
Membre
Dernière intervention
2 novembre 2023
101
13 juin 2021 à 12:15
13 juin 2021 à 12:15
Bonjour,
ton code dis :
- s'il y a un événement quelconque, essayer de le traiter, puis dessiner la grille et la faire vivre.
- si pas d'événement alors ne rien faire et recommencer. Donc pas de nouvelle image.
ton code dis :
- s'il y a un événement quelconque, essayer de le traiter, puis dessiner la grille et la faire vivre.
- si pas d'événement alors ne rien faire et recommencer. Donc pas de nouvelle image.
Phil_1857
Messages postés
1872
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
168
13 juin 2021 à 18:01
13 juin 2021 à 18:01
tu n'as pas bien lu le tuto, ton code ne ressemble pas à l'exemple que je t'ai donné ...
Adrenokrome
Messages postés
4
Date d'inscription
dimanche 13 juin 2021
Statut
Membre
Dernière intervention
13 juin 2021
13 juin 2021 à 18:53
13 juin 2021 à 18:53
Je ne comprends pas, j'ai cette fois bien mis le code complet de mon main et pourtant, ça ne donne pas le résultat escompté. Pourtant, comme le C++ ne fait partie des valeurs du menu déroulant j'ai bien mis la balise <code>
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Adrenokrome
Messages postés
4
Date d'inscription
dimanche 13 juin 2021
Statut
Membre
Dernière intervention
13 juin 2021
Modifié le 13 juin 2021 à 19:16
Modifié le 13 juin 2021 à 19:16
Phil_1857: Effectivement, je pensais que mon code était bien entre les balises < code> et qu'il n'y avait pas la coloration syntaxique car je n'y avais intégré qu'un bout de code et non la totalité du main. Je remets l'intégralité de mon main pour voir si ça marche :)!
Dalfab: Merci pour ton retour, surtout qu'il est suffisamment clair pour m'aider à trouver la solution sans pour autant me la servir sur un plateau: c'était exactement ce que je cherchais.
Dalfab: Merci pour ton retour, surtout qu'il est suffisamment clair pour m'aider à trouver la solution sans pour autant me la servir sur un plateau: c'était exactement ce que je cherchais.
#include <iostream> #include <string> #include <SFML/Graphics.hpp> #include <cstdlib> #include <cstdio> #include "Cellule.h" #include <vector> // VARIABLES int nombreColonnesTableau = 0; int nombreLignesTableau = 0; int largeurCellule = 0; int hauteurCellule = 0; int hauteurGrille = 0; int largeurGrille = 0; /* sf::RenderWindow grille; */ sf::RectangleShape fondGrille; sf::Vector2i positionSouris; int couleurCelluleDead[3] = {0}; int *ptr_ccd = &couleurCelluleDead[0]; int couleurCelluleAlive[3] = {0}; int *ptr_cca = &couleurCelluleAlive[0]; // COULEURS (R,G,B) int noir[3] = { 0,0,0 }; int *ptr_noir = &noir[0]; int rouge[3] = { 255,0,0 }; int *ptr_rouge = &rouge[0]; int jaune[3] = { 255,255,0 }; int *ptr_jaune = &jaune[0]; int orange[3] = { 255,128,64 }; int *ptr_orange = &orange[0]; int rose[3] = { 255,0,255 }; int *ptr_rose = &rose[0]; // FONCTIONS // SAISIE DES DIMENSIONS INITIALES + COULEURS INITIALES void saisir_les_valeurs_initiales(int *ptr_nct, int *ptr_nlt, int *ptr_lc, int *ptr_hc, int *ptr_lg, int *ptr_hg, int *ptr_cd, int *ptr_ca) { int choix_couleur = 0; std::cout << "Veuillez saisir le nombre de colonnes de votre tableau (largeur): "; std::cin >> *ptr_nct; std::cout << "Veuillez saisir le nombre de lignes de votre tableau (hauteur): "; std::cin >> *ptr_nlt; std::cout << "Veuillez saisir la largeur des cellules (en pixels): "; std::cin >> *ptr_lc; std::cout << "Veuillez saisir la hauteur des cellules (en pixels): "; std::cin >> *ptr_hc; std::cout << "\n" << std::endl; *ptr_lg = *ptr_lc * *ptr_nct; *ptr_hg = *ptr_hc * *ptr_nlt; std::cout << "Veuillez saisir la couleur d'une cellule morte:\n-1 noir\n-2 rouge\n-3 jaune\n-4 orange\n-5 rose\n"; std::cin >> choix_couleur; std::cout << "choix couleur - couleur dead: " << choix_couleur << std::endl; switch (choix_couleur) { case 1: for (int i = 0; i < 3; i++) { *(ptr_ccd + i) = *(ptr_noir + i);} break; case 2: for (int i = 0; i < 3; i++) { *(ptr_ccd + i) = *(ptr_rouge + i);} break; case 3: for (int i = 0; i < 3; i++) { *(ptr_ccd + i) = *(ptr_jaune + i);} break; case 4: for (int i = 0; i < 3; i++) { *(ptr_ccd + i) = *(ptr_orange + i);} break; case 5: for (int i = 0; i < 3; i++) { *(ptr_ccd + i) = *(ptr_rose + i);} break; default: for (int i = 0; i < 3; i++) { *(ptr_ccd + i) = *(ptr_noir + i); } std::cout << "votre choix ne correspond a aucune couleur. La cellule a ete initialise a NOIR\n" << std::endl; break; } std::cout << "Veuillez saisir la couleur d'une cellule vivante:\n-1 noir\n-2 rouge\n-3 jaune\n-4 orange\n-5 rose\n"; std::cin >> choix_couleur; std::cout << "choix couleur - couleur alive: " << choix_couleur << std::endl; switch (choix_couleur) { case 1: for (int i = 0; i < 3; i++) { *(ptr_cca + i) = *(ptr_noir + i); } break; case 2: for (int i = 0; i < 3; i++) { *(ptr_cca + i) = *(ptr_rouge + i); } break; case 3: for (int i = 0; i < 3; i++) { *(ptr_cca + i) = *(ptr_jaune + i); } break; case 4: for (int i = 0; i < 3; i++) { *(ptr_cca + i) = *(ptr_orange + i); } break; case 5: for (int i = 0; i < 3; i++) { *(ptr_cca + i) = *(ptr_rose + i); } break; default: for (int i = 0; i < 3; i++) { *(ptr_cca + i) = *(ptr_rouge + i); } std::cout << "votre choix ne correspond a aucune couleur. La cellule a ete initialise a NOIR\n" << std::endl; break; }}// ____________FT - AFFICHAGE DES DIMENSIONS INITIALESvoid afficher_les_valeurs_initiales(int *ptr_nct, int *ptr_nlt, int *ptr_lc, int *ptr_hc, int *ptr_lg, int *ptr_hg) { std::cout << "Largeur du tableaux: " << *ptr_nct << " cellules" << std::endl; std::cout << "Hauteur du tableaux: " << *ptr_nlt << " cellules" << std::endl; std::cout << "Largeur de la cellule: " << *ptr_lc << " pixels" << std::endl; std::cout << "Hauteur de la cellule: " << *ptr_hc << " pixels" << std::endl; std::cout << "Largeur de la grille: " << *ptr_lg << " pixels" << std::endl; std::cout << "Hauteur de la grille: " << *ptr_hg << " pixels" << std::endl; std::cout << std::endl;}// ____________FT - INITIALISE LE RECTANGLE POUR LE FOND DE LA GRILLEvoid initialiser_rectangle_fond_grille(sf::RectangleShape *fg) { (*fg).setFillColor(sf::Color(255, 128, 64)); (*fg).setPosition(0, 0); (*fg).setSize(sf::Vector2f((float)largeurGrille, (float)hauteurGrille));}// INITIALISER LES VALEURS DES ATTRIBUTS D'UNE CELLULE - A DEADvoid initialiser_cellule(Cellule *ptr_cel, int pc_X, int pc_Y) { (*(ptr_cel)).set_largeurCellule(largeurCellule); (*(ptr_cel)).set_hauteurCellule(hauteurCellule); (*(ptr_cel)).set_etatCellule(dead); (*(ptr_cel)).set_positionCellule_X(pc_X * largeurCellule); (*(ptr_cel)).set_positionCellule_Y(pc_Y * hauteurCellule); (*(ptr_cel)).set_couleur_dead(ptr_ccd); (*(ptr_cel)).set_couleur_alive(ptr_cca); (*(ptr_cel)).set_nombreVoisinsCellule(0); (*(ptr_cel)).initialiser_rectangle((*(ptr_cel)).get_etatCellule());}// SWITCHER L'ETAT D'UNE CELLULEvoid switcher_cellule(Cellule *ptr_cel) { if ((*ptr_cel).get_etatCellule() == dead) { (*ptr_cel).set_couleur_alive(ptr_cca); (*ptr_cel).set_etatCellule(alive); (*ptr_cel).initialiser_rectangle((*ptr_cel).get_etatCellule()); } else if ((*ptr_cel).get_etatCellule() == alive) { (*ptr_cel).set_couleur_alive(ptr_ccd); (*ptr_cel).set_etatCellule(dead); (*ptr_cel).initialiser_rectangle((*ptr_cel).get_etatCellule()); }}// SWITCHER L'ETAT DE TOUTES LES CELLULES D'UN TABLEAUvoid switcher_tableau_cellules(Cellule *ptr_tabCel) { for (int i = 0; i < nombreColonnesTableau; i++) { for (int j = 0; j < nombreLignesTableau; j++) { switcher_cellule(&(*(ptr_tabCel + i * nombreColonnesTableau + j))); } }}// INITIALISER LES VALEURS DES ATTRIBUTS DE CHAQUE CELLULE D'UN TABLEAU DE CELLULESvoid initialiser_tableau_cellules(Cellule *ptr_tabCel, int nct, int nlt) { for (int i = 0; i < nct; i++) { for (int j = 0; j < nlt; j++) { initialiser_cellule( &(*(ptr_tabCel + i * nct + j)) ,i,j); } }}// REMPLIR ALEATOIREMENT L'ETAT D'UNE CELLULEvoid remplir_aleatoirement_cellule(Cellule *ptr_cel) { int etatAleatoire = (int)(rand()%10); if (etatAleatoire%2 == alive) { (*ptr_cel).set_couleur_alive(ptr_cca); (*ptr_cel).set_etatCellule(alive); (*ptr_cel).initialiser_rectangle((*ptr_cel).get_etatCellule()); } else if (etatAleatoire % 2 == dead) { (*ptr_cel).set_couleur_alive(ptr_ccd); (*ptr_cel).set_etatCellule(dead); (*ptr_cel).initialiser_rectangle((*ptr_cel).get_etatCellule()); }}// REMPLIR ALEATOIREMENT UN TABLEAU DE CELLULEvoid remplir_aleatoirement_tableau(Cellule *ptr_tabCel) { for (int i = 0; i < nombreColonnesTableau; i++) { for (int j = 0; j < nombreLignesTableau; j++) { remplir_aleatoirement_cellule(&(*(ptr_tabCel + i * nombreColonnesTableau + j))); } }}// SCANNE LE NOMBRE DE VOISINS VIVANTS D'UNE CELLULE DONNEE DANS UN TABLEAU DONNEint scanne_tableau_cellules(Cellule *ptr_tabCel, int xCel, int yCel) { int compteur_alive = 0; // CAS 0,0 if (xCel == 0 && yCel == 0) { //std::cout << " CAS 0,0 " << std::endl; for (int i = xCel; i <= xCel + 1; i++) { for (int j = yCel; j <= yCel + 1; j++) { if ((*(ptr_tabCel + i * nombreColonnesTableau + j)).get_etatCellule() == alive) { compteur_alive++; } //std::cout << "i: " << i << " / j: " << j << " / Compteur_alive: " << compteur_alive << std::endl; } } } // CAS 1,0 else if (xCel == nombreColonnesTableau - 1 && yCel == 0) { //std::cout << " CAS 1,0 " << std::endl; for (int i = xCel - 1; i <= xCel + 1; i++) { for (int j = yCel; j <= yCel + 1; j++) { if ((*(ptr_tabCel + i * nombreColonnesTableau + j)).get_etatCellule() == alive) { compteur_alive++; } } } } // CAS 0,1 else if (xCel == 0 && yCel == nombreLignesTableau - 1) { //std::cout << " CAS 0,1 " << std::endl; for (int i = xCel; i <= xCel + 1; i++) { for (int j = yCel - 1; j <= yCel; j++) { if ((*(ptr_tabCel + i * nombreColonnesTableau + j)).get_etatCellule() == alive) { compteur_alive++; } } } } // CAS 1,1 else if (xCel == nombreColonnesTableau - 1 && yCel == nombreLignesTableau - 1) { //std::cout << " CAS 1,1 " << std::endl; for (int i = xCel - 1; i <= xCel; i++) { for (int j = yCel - 1; j <= yCel; j++) { if ((*(ptr_tabCel + i * nombreColonnesTableau + j)).get_etatCellule() == alive) { compteur_alive++; } } } } // CAS LIGNE GAUCHE else if (xCel == 0 && yCel >= 1 && yCel <= nombreLignesTableau - 2) { //std::cout << " CAS LIGNE GAUCHE " << std::endl; for (int i = xCel; i <= xCel + 1; i++) { for (int j = yCel - 1; j <= yCel + 1; j++) { if ((*(ptr_tabCel + i * nombreColonnesTableau + j)).get_etatCellule() == alive) { compteur_alive++; } } } } // CAS LIGNE DROITE else if (xCel == nombreColonnesTableau - 1 && yCel >= 1 && yCel <= nombreLignesTableau - 2) { //std::cout << " CAS LIGNE DROITE " << std::endl; for (int i = xCel - 1; i <= xCel; i++) { for (int j = yCel - 1; j <= yCel + 1; j++) { if ((*(ptr_tabCel + i * nombreColonnesTableau + j)).get_etatCellule() == alive) { compteur_alive++; } } } } // CAS LIGNE DESSUS else if (yCel == 0 && xCel >= 1 && xCel <= nombreColonnesTableau - 2) { //std::cout << " CAS LIGNE DESSUS " << std::endl; for (int i = xCel - 1; i <= xCel + 1; i++) { for (int j = yCel; j <= yCel + 1; j++) { if ((*(ptr_tabCel + i * nombreColonnesTableau + j)).get_etatCellule() == alive) { compteur_alive++; } } } } // CAS LIGNE DESSOUS else if (yCel == nombreLignesTableau - 1 && xCel >= 1 && xCel <= nombreColonnesTableau - 2) { //std::cout << " CAS LIGNE DESSOUS " << std::endl; for (int i = xCel - 1; i <= xCel + 1; i++) { for (int j = yCel - 1; j <= yCel; j++) { if ((*(ptr_tabCel + i * nombreColonnesTableau + j)).get_etatCellule() == alive) { compteur_alive++; } } } } // CAS GENERAL else if (xCel >= 1 && xCel <= nombreColonnesTableau - 2 && yCel >= 1 && yCel <= nombreLignesTableau - 2) { //std::cout << " CAS GENERAL " << std::endl; for (int i = xCel - 1; i <= xCel + 1; i++) { for (int j = yCel - 1; j <= yCel + 1; j++) { if ((*(ptr_tabCel + i * nombreColonnesTableau + j)).get_etatCellule() == alive) { compteur_alive++; } } } } //RETOUR DU NOMBRE DE VOISINS if ((*(ptr_tabCel + xCel * nombreColonnesTableau + yCel)).get_etatCellule() == alive) { return (compteur_alive - 1); } else { return compteur_alive; }}// INITIALISE LE NOMBRE DE VOISINS DANS LE TABLEAUvoid initialiser_nombre_voisins_tableau(Cellule *ptr_tabCel) { for (int i = 0; i < nombreColonnesTableau; i++) { for (int j = 0; j < nombreLignesTableau; j++) { int nv = scanne_tableau_cellules(ptr_tabCel, i, j); (*(ptr_tabCel + i * nombreColonnesTableau + j)).set_nombreVoisinsCellule(nv); } }}// COPIE UN TABLEAU DE CELLULE DANS UN AUTREvoid copier_tableau_cellules(Cellule *ptr_tabCel_1, Cellule *ptr_tabCel_2) { for (int i = 0; i < nombreColonnesTableau; i++) { for (int j = 0; j < nombreLignesTableau; j++) { *(ptr_tabCel_1 + i * nombreColonnesTableau + j) = *(ptr_tabCel_2 + i * nombreColonnesTableau + j); } }}// SCANNE LE NOMBRE DE VOISINS DU TABLEAU ET REMPLIT LE TAMPON EN FONCTIONvoid regles_jeu_de_la_vie(Cellule *ptr_tabCel, Cellule *ptr_tabTamCel) { for (int i = 0; i < nombreColonnesTableau; i++) { for (int j = 0; j < nombreLignesTableau; j++) { if ((*(ptr_tabCel + i * nombreColonnesTableau + j)).get_etatCellule() == alive && (*(ptr_tabCel + i * nombreColonnesTableau + j)).get_nombreVoisinsCellule() != 2 && (*(ptr_tabCel + i * nombreColonnesTableau + j)).get_nombreVoisinsCellule() != 3) { (*(ptr_tabTamCel + i * nombreColonnesTableau + j)).set_etatCellule(dead); (*(ptr_tabTamCel + i * nombreColonnesTableau + j)).initialiser_rectangle(dead); } else if ((*(ptr_tabCel + i * nombreColonnesTableau + j)).get_etatCellule() == dead && (*(ptr_tabCel + i * nombreColonnesTableau + j)).get_nombreVoisinsCellule() == 3) { (*(ptr_tabTamCel + i * nombreColonnesTableau + j)).set_etatCellule(alive); (*(ptr_tabTamCel + i * nombreColonnesTableau + j)).initialiser_rectangle(alive); } else { *(ptr_tabTamCel + i * nombreColonnesTableau + j) = *(ptr_tabCel + i * nombreColonnesTableau + j); } } } initialiser_nombre_voisins_tableau(ptr_tabTamCel);}// INITIALISE LES RECTANGLES DES CELLULES D'UN TABLEAUvoid initialise_rectangles_tableau(Cellule *ptr_tabCel) { for (int i = 0; i < nombreColonnesTableau; i++) { for (int j = 0; j < nombreLignesTableau; j++) { (*(ptr_tabCel + i * nombreColonnesTableau + j)).initialiser_rectangle((*(ptr_tabCel + i * nombreColonnesTableau + j)).get_etatCellule()); } }}// REMPLISSAGE TABLEAU - MODELE CANONvoid modele_1(Cellule *ptr_modele) { for (int i = 0; i < nombreColonnesTableau; i++) { for (int j = 0; j < nombreLignesTableau; j++) { (*(ptr_modele + 24 * nombreColonnesTableau + 0)).set_etatCellule(alive); (*(ptr_modele + 24 * nombreColonnesTableau + 0)).initialiser_rectangle(alive); (*(ptr_modele + 22 * nombreColonnesTableau + 1)).set_etatCellule(alive); (*(ptr_modele + 22 * nombreColonnesTableau + 1)).initialiser_rectangle(alive); (*(ptr_modele + 24 * nombreColonnesTableau + 1)).set_etatCellule(alive); (*(ptr_modele + 24 * nombreColonnesTableau + 1)).initialiser_rectangle(alive); (*(ptr_modele + 12 * nombreColonnesTableau + 2)).set_etatCellule(alive); (*(ptr_modele + 12 * nombreColonnesTableau + 2)).initialiser_rectangle(alive); (*(ptr_modele + 13 * nombreColonnesTableau + 2)).set_etatCellule(alive); (*(ptr_modele + 13 * nombreColonnesTableau + 2)).initialiser_rectangle(alive); (*(ptr_modele + 20 * nombreColonnesTableau + 2)).set_etatCellule(alive); (*(ptr_modele + 20 * nombreColonnesTableau + 2)).initialiser_rectangle(alive); (*(ptr_modele + 21 * nombreColonnesTableau + 2)).set_etatCellule(alive); (*(ptr_modele + 21 * nombreColonnesTableau + 2)).initialiser_rectangle(alive); (*(ptr_modele + 34 * nombreColonnesTableau + 2)).set_etatCellule(alive); (*(ptr_modele + 34 * nombreColonnesTableau + 2)).initialiser_rectangle(alive); (*(ptr_modele + 35 * nombreColonnesTableau + 2)).set_etatCellule(alive); (*(ptr_modele + 35 * nombreColonnesTableau + 2)).initialiser_rectangle(alive); (*(ptr_modele + 11 * nombreColonnesTableau + 3)).set_etatCellule(alive); (*(ptr_modele + 11 * nombreColonnesTableau + 3)).initialiser_rectangle(alive); (*(ptr_modele + 15 * nombreColonnesTableau + 3)).set_etatCellule(alive); (*(ptr_modele + 15 * nombreColonnesTableau + 3)).initialiser_rectangle(alive); (*(ptr_modele + 21 * nombreColonnesTableau + 3)).set_etatCellule(alive); (*(ptr_modele + 21 * nombreColonnesTableau + 3)).initialiser_rectangle(alive); (*(ptr_modele + 20 * nombreColonnesTableau + 3)).set_etatCellule(alive); (*(ptr_modele + 20 * nombreColonnesTableau + 3)).initialiser_rectangle(alive); (*(ptr_modele + 34 * nombreColonnesTableau + 3)).set_etatCellule(alive); (*(ptr_modele + 34 * nombreColonnesTableau + 3)).initialiser_rectangle(alive); (*(ptr_modele + 35 * nombreColonnesTableau + 3)).set_etatCellule(alive); (*(ptr_modele + 35 * nombreColonnesTableau + 3)).initialiser_rectangle(alive); (*(ptr_modele + 0 * nombreColonnesTableau + 4)).set_etatCellule(alive); (*(ptr_modele + 0 * nombreColonnesTableau + 4)).initialiser_rectangle(alive); (*(ptr_modele + 1 * nombreColonnesTableau + 4)).set_etatCellule(alive); (*(ptr_modele + 1 * nombreColonnesTableau + 4)).initialiser_rectangle(alive); (*(ptr_modele + 10 * nombreColonnesTableau + 4)).set_etatCellule(alive); (*(ptr_modele + 10 * nombreColonnesTableau + 4)).initialiser_rectangle(alive); (*(ptr_modele + 16 * nombreColonnesTableau + 4)).set_etatCellule(alive); (*(ptr_modele + 16 * nombreColonnesTableau + 4)).initialiser_rectangle(alive); (*(ptr_modele + 20 * nombreColonnesTableau + 4)).set_etatCellule(alive); (*(ptr_modele + 20 * nombreColonnesTableau + 4)).initialiser_rectangle(alive); (*(ptr_modele + 21 * nombreColonnesTableau + 4)).set_etatCellule(alive); (*(ptr_modele + 21 * nombreColonnesTableau + 4)).initialiser_rectangle(alive); (*(ptr_modele + 0 * nombreColonnesTableau + 5)).set_etatCellule(alive); (*(ptr_modele + 0 * nombreColonnesTableau + 5)).initialiser_rectangle(alive); (*(ptr_modele + 1 * nombreColonnesTableau + 5)).set_etatCellule(alive); (*(ptr_modele + 1 * nombreColonnesTableau + 5)).initialiser_rectangle(alive); (*(ptr_modele + 10 * nombreColonnesTableau + 5)).set_etatCellule(alive); (*(ptr_modele + 10 * nombreColonnesTableau + 5)).initialiser_rectangle(alive); (*(ptr_modele + 14 * nombreColonnesTableau + 5)).set_etatCellule(alive); (*(ptr_modele + 14 * nombreColonnesTableau + 5)).initialiser_rectangle(alive); (*(ptr_modele + 16 * nombreColonnesTableau + 5)).set_etatCellule(alive); (*(ptr_modele + 16 * nombreColonnesTableau + 5)).initialiser_rectangle(alive); (*(ptr_modele + 17 * nombreColonnesTableau + 5)).set_etatCellule(alive); (*(ptr_modele + 17 * nombreColonnesTableau + 5)).initialiser_rectangle(alive); (*(ptr_modele + 22 * nombreColonnesTableau + 5)).set_etatCellule(alive); (*(ptr_modele + 22 * nombreColonnesTableau + 5)).initialiser_rectangle(alive); (*(ptr_modele + 24 * nombreColonnesTableau + 5)).set_etatCellule(alive); (*(ptr_modele + 24 * nombreColonnesTableau + 5)).initialiser_rectangle(alive); (*(ptr_modele + 10 * nombreColonnesTableau + 6)).set_etatCellule(alive); (*(ptr_modele + 10 * nombreColonnesTableau + 6)).initialiser_rectangle(alive); (*(ptr_modele + 16 * nombreColonnesTableau + 6)).set_etatCellule(alive); (*(ptr_modele + 16 * nombreColonnesTableau + 6)).initialiser_rectangle(alive); (*(ptr_modele + 24 * nombreColonnesTableau + 6)).set_etatCellule(alive); (*(ptr_modele + 24 * nombreColonnesTableau + 6)).initialiser_rectangle(alive); (*(ptr_modele + 11 * nombreColonnesTableau + 7)).set_etatCellule(alive); (*(ptr_modele + 11 * nombreColonnesTableau + 7)).initialiser_rectangle(alive); (*(ptr_modele + 15 * nombreColonnesTableau + 7)).set_etatCellule(alive); (*(ptr_modele + 15 * nombreColonnesTableau + 7)).initialiser_rectangle(alive); (*(ptr_modele + 12 * nombreColonnesTableau + 8)).set_etatCellule(alive); (*(ptr_modele + 12 * nombreColonnesTableau + 8)).initialiser_rectangle(alive); (*(ptr_modele + 13 * nombreColonnesTableau + 8)).set_etatCellule(alive); (*(ptr_modele + 13 * nombreColonnesTableau + 8)).initialiser_rectangle(alive); } }}// ____________FT - INITIALISER LES VALEURS DES ATTRIBUTS D'UNE CELLULEvoid test_initialiser_cellule(Cellule *ptr_tabCel) { int xCel = 0; int yCel = 0; std::cout << "Saisir la valeur en X de la cellule: "; // !!! FAIRE UN TEST DE DEPASSEMENT DE TABLEAU std::cin >> xCel; std::cout << "Saisir la valeur en X de la cellule: "; std::cin >> yCel; std::cout << "Cellule [" << xCel << "][" << yCel << "]\n" << std::endl; std::cout << "\n ATTRIBUTS DE LA CELLULE AVANT INITIALISATION:" << std::endl; (*(ptr_tabCel + xCel * nombreColonnesTableau + yCel)).afficher_attributs_cellule(); initialiser_cellule(&(*(ptr_tabCel + xCel * nombreColonnesTableau + yCel)), xCel, yCel); std::cout << "\n ATTRIBUTS DE LA CELLULE APRES INITIALISATION:" << std::endl; (*(ptr_tabCel + xCel * nombreColonnesTableau + yCel)).afficher_attributs_cellule();}// ____________FT - INITIALISER LE NOMBRE DE VOISINS VIVANTS D'UNE CELLULEvoid test_initialiser_nombre_voisins_vivants(Cellule *ptr_tabCel) { int xCel = 0; int yCel = 0; std::cout << "Saisir la valeur en X de la cellule: "; // !!! FAIRE UN TEST DE DEPASSEMENT DE TABLEAU std::cin >> xCel; std::cout << "Saisir la valeur en X de la cellule: "; std::cin >> yCel; std::cout << "Cellule [" << xCel << "][" << yCel << "]\n" << std::endl; std::cout << "\n ATTRIBUTS DE LA CELLULE AVANT CALCUL DU NOMBRE DE VOISINS VIVANTS:" << std::endl; (*(ptr_tabCel + xCel * nombreColonnesTableau + yCel)).afficher_attributs_cellule(); int nv = scanne_tableau_cellules(ptr_tabCel, xCel, yCel); (*(ptr_tabCel + xCel * nombreColonnesTableau + yCel)).set_nombreVoisinsCellule(nv); std::cout << "\n ATTRIBUTS DE LA CELLULE APRES CALCUL DU NOMBRE DE VOISINS VIVANTS:" << std::endl; (*(ptr_tabCel + xCel * nombreColonnesTableau + yCel)).afficher_attributs_cellule();}// FONCTION PRINCIPALEint main(){ srand(time(NULL)); saisir_les_valeurs_initiales(&nombreColonnesTableau, &nombreLignesTableau, &largeurCellule, &hauteurCellule, &largeurGrille, &hauteurGrille, ptr_ccd, ptr_cca); afficher_les_valeurs_initiales(&nombreColonnesTableau, &nombreLignesTableau, &largeurCellule, &hauteurCellule, &largeurGrille, &hauteurGrille); std::vector<Cellule> tableauCellules(nombreColonnesTableau * nombreLignesTableau); Cellule *ptr_tableauCellules = &tableauCellules[0]; std::vector<Cellule> tableauTamponCellules(nombreColonnesTableau * nombreLignesTableau); Cellule *ptr_tableauTamponCellules = &tableauTamponCellules[0]; //test_initialiser_cellule(ptr_tableauCellules);// initialiser_tableau_cellules(ptr_tableauCellules, nombreColonnesTableau, nombreLignesTableau); initialiser_tableau_cellules(ptr_tableauTamponCellules, nombreColonnesTableau, nombreLignesTableau); //switcher_tableau_cellules(ptr_tableauCellules);// //remplir_aleatoirement_tableau(ptr_tableauCellules); modele_1(ptr_tableauCellules); //test_initialiser_nombre_voisins_vivants(ptr_tableauCellules);// initialiser_nombre_voisins_tableau(ptr_tableauCellules); //regles_jeu_de_la_vie(ptr_tableauCellules, ptr_tableauTamponCellules); //copier_tableau_cellules(ptr_tableauCellules, ptr_tableauTamponCellules); //initialise_rectangles_tableau(ptr_tableauCellules); //initialiser_nombre_voisins_tableau(ptr_tableauCellules); static sf::RenderWindow grille(sf::VideoMode(largeurGrille, hauteurGrille), "___Le jeu de la vie___"); initialiser_rectangle_fond_grille(&fondGrille); //OUVERTURE DE LA FENETRE while (grille.isOpen()) { sf::Event evenement; while (grille.pollEvent(evenement)) { // Boucle du jeu if (evenement.type == sf::Event::Closed) { grille.close(); } if (sf::Mouse::isButtonPressed(sf::Mouse::Left)) { positionSouris = sf::Mouse::getPosition(grille); std::cout << "souris_x: " << positionSouris.x << " souris_y: " << positionSouris.y << std::endl; } // AFFICHE LE TABLEAU for (int i = 0; i < nombreColonnesTableau; i++) { for (int j = 0; j < nombreLignesTableau; j++) { grille.draw((*(ptr_tableauCellules+i*nombreColonnesTableau+j)).get_rectangleCellule()); } } regles_jeu_de_la_vie(ptr_tableauCellules, ptr_tableauTamponCellules); copier_tableau_cellules(ptr_tableauCellules, ptr_tableauTamponCellules); sf::sleep(sf::milliseconds(10)); /* grille.draw(fondGrille); */ grille.display(); grille.clear(); // Fin de la boucle du jeu } } // FIN MAIN return 0;}