CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[C] Déplacement d'un char

mersalaayitten
mersalaayitten
Niveau 10
01 octobre 2015 à 19:00:50

Bonjour j'ai un petit devoir en classe ou je doit déplacer une lettre d'un endroit à un autre.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#define NB_LIN 43
#define NB_COL 90
 
char (*make2DArray())[NB_LIN][NB_COL];
char (*afficheMatrice())[NB_LIN][NB_COL];
 
int main () {
 
    char (*matrice)[NB_LIN][NB_COL] = afficheMatrice();
    free(matrice);
 
    return 0;
}
 
char (*make2DArray())[NB_LIN][NB_COL] {
 
    /* NB_LIN de NB_COL */
    char (*matrice)[NB_LIN][NB_COL] = malloc(sizeof (*matrice));
    int i = 0, j = 0;
 
    for (i = 0; i < NB_LIN; i++) {
            if(i == 20) {
                for (j = 0; j < 19; j++) {
                    (*matrice)[i][j] = 205;
                }
            }
 
            else if(i == 18 || i == 22) {
                for(j = 0; j < 10; j++) {
                    (*matrice)[i][j] = 196;
                }
            }
 
            else {
            }
    }
 
    return matrice;
}
 
char (*afficheMatrice())[NB_LIN][NB_COL] {
 
    char (*matrice)[NB_LIN][NB_COL] = make2DArray();
    int i = 0, j = 0;
 
    for (i = 0; i < NB_LIN; i++) {
            if(i == 20) {
                for (j = 0; j < 19; j++) {
                    printf("%c",(*matrice)[i][j]);
                }
            }
 
            else if(i == 18 || i == 22) {
                for(j = 0; j < 10; j++) {
                    printf("%c ",(*matrice)[i][j]);
                }
            }
 
            else {
            }
 
            printf("\n");
    }
 
    return matrice;
}

Vous pouvez voir dans mon code j'ai crée une route à double sens et mon objectif est de faire par ex :

==========

A

==========

et finir par :

==========

--------------- A (sans les tirets)

==========

En voyant chaque étape.

J'ai donc pensé à faire à faire un system(clear) à chaque étape et on m'a parlé d'une fonction sleep mais je ne vois pas par ou commencer. Merci de votre aide

Candystand
Candystand
Niveau 10
01 octobre 2015 à 19:34:18

On t'avais donné un exemple de code dans ton précédent topic, ça a donné quoi?

mersalaayitten
mersalaayitten
Niveau 10
01 octobre 2015 à 19:38:11

ça n'a pas marché c'est pourquoi je vous passe mon code en entier si vous pouvez m'aidé :)

Candystand
Candystand
Niveau 10
01 octobre 2015 à 19:44:26

Ca bugait à quel moment?

mersalaayitten
mersalaayitten
Niveau 10
01 octobre 2015 à 19:50:03

J'obtient ça à l'exécution :
https://image.noelshack.com/fichiers/2015/40/1443721798-test.jpg

Candystand
Candystand
Niveau 10
01 octobre 2015 à 19:51:05

Met system("cls") à la place de system("clear")

mersalaayitten
mersalaayitten
Niveau 10
01 octobre 2015 à 19:58:15

https://image.noelshack.com/fichiers/2015/40/1443722280-test2.jpg

J'ai plus les erreurs mais j'ai que le début pas la fin

Candystand
Candystand
Niveau 10
01 octobre 2015 à 20:08:29

C'est bon j'ai trouvé, modifie la ligne printf("\n%c\n", letter); par printf("%c\n", letter);

mersalaayitten
mersalaayitten
Niveau 10
01 octobre 2015 à 20:16:00

Merciiiiii si je veux passer ce programme sous linux je change le system le sleep et quoi d'autre stp ?

Candystand
Candystand
Niveau 10
01 octobre 2015 à 20:23:28

Tu changes juste le cls en clear

mersalaayitten
mersalaayitten
Niveau 10
02 octobre 2015 à 06:58:22

J'ai presque finit mon devoir je voulais savoir comment faire dans l'autre sens genre a partir de :

=========
---------------A
=========

à

==========
A
==========

Je devais changer quoi dans le code ?

Candystand
Candystand
Niveau 10
02 octobre 2015 à 11:09:30
void printChars(char c, int nbTimes)
{
   for (int i = 0; i < nbTimes; i++)
      printf("%c", c);
}

int main(void)
{
   int lineLength = 15;
   char letter = 'A';

   for (int i = 0; i < lineLength; i++)
   {
      system("clear");

      printChars('=', lineLength);
      printf("\n");
      printChars(' ', i);
      printf("%c\n", letter);
      printChars('=', lineLength);
      printf("\n");

      sleep(2);
      if (i == lineLenght - 1) {
        while (i >= 0) {
          system("clear");

      printChars('=', lineLength);
      printf("\n");
      printChars(' ', i);
      printf("%c\n", letter);
      printChars('=', lineLength);
      printf("\n");
      i--;
     sleep(2);
      }
    }
   }

   return 0;
}

Normalement ça devrait tourner en boucle en faisant des aller retour

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Internet
  • Macintosh
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment