Projet langagec

Signaler
-
Messages postés
5456
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
17 janvier 2021
-
Bonjour, j'ai un devoir et je ne sais pas quoi faire pour les codes. La maquette j'ai réussi

La règle du jeu est simple : l’ordinateur va faire écouter au joueur une suite de sons choisis aléatoirement parmi les catégories proposées. Le joueur doit mémoriser l’ordre des sons pendant
l’écoute. L’objectif pour le joueur est de proposer un classement de sons, afin de retrouver exactement l’ordre dans lequel il avait écouter ces sons.
Pour choisir le son correspondant à un élément, il suffit de saisir son numéro puis taper la touche
entrée pour que l’élément s’ajoute au classement. Vous pouvez aussi modifier votre classement
en cours dans le cas où vous souhaiteriez replacer/supprimer le son d’un élément.
Une fois votre classement donné, l’ordinateur indiquera les bonnes et les mauvaises cases

c'est urgent svp

7 réponses

Messages postés
13931
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
17 janvier 2021
784
comment faire jouer aléatoirement les sons ? quel est le code ? je ne sais pas
Messages postés
5456
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
17 janvier 2021
921
Pour jouer aléatoirement des sons, ont peut par exemple :
  • stocker les N fichiers sons concernés dans un répertoire
  • stocker les chemins des fichiers sons dans un tableau de dimension N
  • tirer au sort, avec ou sans répétitions selon ce que l'énoncé demande en utilisant rand() préalablement initialisée
  • utiliser une fonction de l'API du système d'exploitation pour jouer le fichier son (le C ne contient pas, dans la spécification du langage, des fonctions permettant de jouer des sons)


Pour faire cela, sous Windows, on peut utiliser la fonction de l'API Windows PlaySound() par exemple : https://docs.microsoft.com/en-us/previous-versions/dd743680(v=vs.85)

Si on veut faire du code portable, on peut aussi installer une bibliothèque supportant ce type de fonctionnalités. Par exemple la SDL2, et ses fonctions Mix_LoadWAV() ou Mix_LoadMUS ()

https://www.libsdl.org/projects/SDL_mixer/docs/SDL_mixer_19.html
https://www.libsdl.org/projects/SDL_mixer/docs/SDL_mixer_55.html

Dal
merci ! comment faire stocker les fichiers sons dans le repertoires ?
ca m'affiche impossible
Messages postés
5456
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
17 janvier 2021
921
Bonjour Thomas,

Malheureusement, nous ne sommes pas voyants extralucides et nous ne sommes pas dans ta tête (heureusement).

Si ta question a un lien avec la programmation en langage C, alors poste le code qui génère une erreur en indiquant précisément le contexte d'exécution dans le lequel cette erreur se déclenche, en indiquant où cette erreur s'affiche et comment.

Si ta question n'a pas de lien avec la programmation en langage C et concerne juste l'utilisation de son système d'exploitation pour copier des fichiers à un certain endroit (lequel ?), alors tu n'est pas sur le bon forum.

Dans les deux cas, tu n'as pas fourni assez d'explications sur ce que tu essayes de faire, comment, dans quel répertoire, quand est-ce que le message d'erreur s'affiche (en faisant quoi très exactement), et tu ne donnes d'ailleurs pas le message d'erreur exact.

En bref, pour nous aussi il est "impossible" de te répondre.
je devais taper le code sudo apt install libsox* dans le terminal pour installer des sons mais ca ne fonctionne pas j'ai meme essaye sudo pat install sox et ca affiche play fail
Messages postés
5456
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
17 janvier 2021
921
Tu es donc sous Linux. Peux-tu préciser :
  • quelle est ta version de Linux (type Ubuntu, Debian, etc. et numéro ou nom de version) ?
  • est-ce que le son fonctionne sur ton système (ouvre une vidéo Youtube avec ton navigateur, etc.), entends tu le son ? Dans la négative, est-ce un PC dont tu disposes ou un ordinateur portable ? Est-il doté d'une carte son et la sortie son est-elle reliée à des hauts parleurs ou des écouteurs ?
  • quel est le format des fichiers sons que tu veux jouer à partir de ton programme .c (.wav, .ogg, .mp3, etc.) ?
j'ai ubuntu
oui le son fonctionne
je voudrais jouer le format mp3
Messages postés
5456
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
17 janvier 2021
921
OK, alors sous Linux Ubuntu, avec SDL2_mixer préalablement installée

sudo apt-get install libsdl2-mixer 


en supposant que tu as un fichier "signal.mp3" dans le même répertoire où se trouve le fichier playsound.c suivant :

#include "SDL2/SDL.h"
#include "SDL2/SDL_mixer.h"

int main(int argc, char **argv) {
    int result = 0;
    int flags = MIX_INIT_MP3;

    /* init SDL */
    if (SDL_Init(SDL_INIT_AUDIO) < 0) {
        printf("Failed to init SDL\n");
        exit(1);
    }

    /* init SDL_mixer */
    if (flags != (result = Mix_Init(flags))) {
        printf("Could not initialize mixer (result: %d).\n", result);
        printf("Mix_Init: %s\n", Mix_GetError());
        exit(1);
    }
    Mix_OpenAudio(22050, AUDIO_S16SYS, 2, 640);

    /* open a mp3 file and play it one time until the end */
    Mix_Music *music = Mix_LoadMUS("signal.mp3");
    Mix_PlayMusic(music, 1);
    while (Mix_PlayingMusic()) {
        SDL_Delay(100);
    }
    Mix_FreeMusic(music);

    /* done using SDL */
    SDL_Quit();
    return 0;
}

on compile playsound.c et on l'exécute :

$ gcc -oplaysound playsound.c `pkg-config --cflags --libs SDL2_mixer`
$ ./playsound 


Ce code devrait fonctionner exactement de la même manière sous Windows et les autres systèmes d'exploitation supportés par la SDL2. Il suffit d'installer la bibliothèque et de compiler avec les bonnes options.

La SDL2 permet de faire d'autres choses (gestion de l'écran, clavier, souris, etc.).

Si tu préfères une bibliothèque portable dédiée à la gestion du son, tu peux aussi voir du côté de FMOD, qui est plus complète.

Dal