Aide en langage c
Répondre à la discussion
Affichage des résultats 1 à 11 sur 11

Aide en langage c



  1. #1
    ineedhelpls

    Aide en langage c


    ------

    Bonjour, j'ai un projet à rendre en langage c mais je suis bloqué sur plusieurs aspets. Je voulais savoir si c'était possible de m'aider.


    Je dois afficher une matrice avec différents obstacles et un personnage qui bouge, cependant le personnage ne peut pas aller sur les cases I. Je n'arrive pas à coder pour que le personnage n'aille pas sur les coordonnees des obstacles I et qu'il, du coup, ne puisse pas bouger.

    Code:
    void afficherMatrice(struct Element *S, struct Element *C1, struct Element *C2, struct Element *C3, struct Element *C4,
                         struct Element *O1, struct Element *O2, struct Element *O3, struct Element *O4,
                         struct Element *I1, struct Element *I2, struct Element *I3, struct Element *I4) {
        system("cls");
    
    
        for (int i = 0; i < LARGEUR; i++) {
            for (int j = 0; j < LONGUEUR; j++) {
                if(i==0|| i==9){ // contour pour les lignes 0 et 9
                    printf("-");
                }
                else if (j==0 || j==19){ // contour pour les colonnes 0 et 19
                    printf("|");
                }
                else if (i==3 && j==9){
                    printf("%c",bc1);
                }
                else if (i==3 && j==11 ){
                    printf("%c",bc2);
                }
                else if (i==5 && j==9){
                    printf("%c",bc3);
                }
                else if (i==5 && j==11){
                    printf("%c",bc4);
                }
                else if (i==4 && j==8 || i==4 && j==12 || i==3 && j==10 || i==5 && j==10){
                    printf("%c",bi1);
                }
                else if (i==1 && j==1){
                    printf("%c",oiseau1);
                }
                else if (i==1 && j==18){
                    printf("%c",oiseau2);
                }
                else if (i==8 && j==1){
                    printf("%c",oiseau3);
                }
                else if (i==8 && j==18){
                    printf("%c",oiseau4);
                }
                else if (S->x == C1->x && S->y == C1->y) {
                    bc1 = ' ';
                }
                else if (S->x == C2->x && S->y == C2->y){
                    bc2 = ' ';
                }
                else if (S->x == C3->x && S->y == C3->y){
                    bc3 = ' ';
                }
                else if (S->x == C4->x && S->y == C4->y){
                    bc4 = ' ';
                }
                else if (S->x == O1->x && S->y == O1->y){
    
                    oiseau1 = ' ';
                }
                else if (S->x == O2->x && S->y == O2->y){
    
                    oiseau2 = ' ';
                }
                else if (S->x == O3->x && S->y == O3->y){
    
                    oiseau3 = ' ';
                }
                else if (S->x == O4->x && S->y == O4->y){
    
                    oiseau4 = ' ';
                }
                else if (S->x == I1->x && S->y == I1->y ){
                    printf("S");
    
    
                }
                else if (S->x == I2->x && S->y == I2->y ){
                    printf("S");
    
    
                }
                else if (S->x == I3->x && S->y == I3->y ){
                    printf("S");
    
    
                }
                else if (S->x == I4->x && S->y == I4->y ){
                    printf("S");
    
    
                }
                else {
                    if(i==S->x && j==S->y){ // emplacement initial de Snoopy
                        printf("S");
    
    
                    }
                    else
                        printf(" ");
                }
            }
            printf("\n");
        }
    }
    Mon deuxieme probleme est que je n'arrive pas à afficher la matrice et le timer en meme temps. On m'a dit d'utiliser la fonction thread mais je suis débutant et j'aimerai bien de l'aide là dessus

    Code:
    void timerSnoopy(int s) {                                            //SOUS PROGRAMME DU TIMER
    
    
        int sec;
    
    
        for (sec = 1200; sec >= 0; sec--)                                 // pour compter en dixième de seconde de 1200 à 0
        {
            float secondes = sec / 10.0;                              // puis convertir ces dixièmes en secondes
    
    
            printf(" \t *** Timer : %.1f s *** \r", secondes);
            usleep(1); //usleep(100000) 1s     // attendre 100 000 micro secondes (0.1 secondes)
        }
    
    
    }
    Merci d'avance

    -----
    Dernière modification par gienas ; 12/11/2023 à 13h03. Motif: ajouté les balises code obligatoires pour les programmes

  2. #2
    umfred

    Re : Aide en langage c

    comment tu fais bouger ton personnage ? c'est à ce moment-là que tu dois regarder les cases voisines (surtout la case sur laquelle devrait aller le personnage suite au déplacement demandé) de l'emplacement du personnage pour savoir si il peut s'y rendre, si la case cible est un obstacle, on ne fait pas le déplacement.

  3. #3
    Ikhar84
    Animateur Informatique

    Re : Aide en langage c

    Peut être vaudrait-il mieux dissocier les traitements (mouvements, tests de collision, et aussi Timer) de l'affichage ?
    J'ai glissé Chef !

  4. #4
    Paraboloide_Hyperbolique

    Re : Aide en langage c

    Bonjour,

    Pour ce qui de l'utilisation de threads en C, voir par exemple https://franckh.developpez.com/tutor...osix/pthreads/

  5. A voir en vidéo sur Futura
  6. #5
    Ikhar84
    Animateur Informatique

    Re : Aide en langage c

    Je ne suis pas sûr que le threading ce soit la bonne solution vue l'approche et le niveau du demandeur ici ?
    J'ai glissé Chef !

  7. #6
    Paraboloide_Hyperbolique

    Re : Aide en langage c

    Citation Envoyé par Ikhar84 Voir le message
    Je ne suis pas sûr que le threading ce soit la bonne solution vue l'approche et le niveau du demandeur ici ?
    Bonne remarque. Cela pourrait potentiellement lui être utile plus tard (ils sont d'habitude assez pédagogiques sur developpez.com).

  8. #7
    pm42

    Re : Aide en langage c

    Citation Envoyé par Ikhar84 Voir le message
    Je ne suis pas sûr que le threading ce soit la bonne solution vue l'approche et le niveau du demandeur ici ?
    En effet. Et encore moins avec une appli qui affiche à coup de printf.

  9. #8
    polo974

    Re : Aide en langage c

    On voit des bouts de fonctions, dont une avec une affreuse boucle printf usleep(1)...

    Mais on ne connaît pas les entrées (et sorties).

    Ni s'il y a un environnement (graphique) avec une ioloop.

    Bref, il faut soit:
    * des threads (bombe atomique) avec les pb de synchronisation, à minima pour les printf).
    * un truc avec un ioloop "of the shelf" (arme lourde).
    * travailler avec un select (ou plus moderne) comportant un timout (la b... et le couteau).

    Ah, et puis, comme ça fait appel à des fonctions système, ce serait bon de savoir sur quoi ça doit tourner.

    Bref, manque cruel d'informations.
    Jusqu'ici tout va bien...

  10. #9
    Ikhar84
    Animateur Informatique

    Re : Aide en langage c

    À mon humble avis, réfléchir à une solution qui ne mélangerait pas traitements et affichage (même en pseudo code, ou même en bon françoys) devrait être la priorité !
    J'ai glissé Chef !

  11. #10
    pm42

    Re : Aide en langage c

    Citation Envoyé par Ikhar84 Voir le message
    À mon humble avis, réfléchir à une solution qui ne mélangerait pas traitements et affichage (même en pseudo code, ou même en bon françoys) devrait être la priorité !
    Oui mais c'est dur pour les débutants.

  12. #11
    Flyingbike
    Modérateur*

    Re : Aide en langage c

    @AchroZaure, bricoler et balancer des "solutions" n'est pas une démarche constructive, surtout pour le demandeur.
    Les réponses qui ont été données ne donnent effectivement pas de "solutions" mais ont le mérite de faire réfléchir, ce qui est utile.

    Merci de cesser les enfantillages.
    La vie trouve toujours un chemin

Discussions similaires

  1. Aide au langage C+
    Par invitea02c9b6c dans le forum Programmation et langages, Algorithmique
    Réponses: 5
    Dernier message: 17/04/2016, 15h24
  2. aide langage C
    Par invitee90b7a46 dans le forum Électronique
    Réponses: 10
    Dernier message: 09/03/2015, 16h52
  3. demande d'aide en langage C
    Par invitee2e61ccb dans le forum Programmation et langages, Algorithmique
    Réponses: 17
    Dernier message: 15/09/2011, 14h53
  4. aide langage c en pic
    Par invitec8c13b53 dans le forum Électronique
    Réponses: 1
    Dernier message: 17/08/2010, 19h16
  5. Aide Langage C/C++
    Par invite55fe29e6 dans le forum Électronique
    Réponses: 2
    Dernier message: 29/05/2007, 20h14