I'm kinda confused about how is the use of PlaySound() with a resource file, 'cause, reading here and testing all the things, I can't accomplish get the wav file sounds in a console prompt u_u. So, if you can help me, I'll be very grateful. $
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include "resources.h"
#pragma comment(lib, "Winmm.lib")
int main () {
srand (time(NULL));
int secreto, num, s1, s2, s3, d1, d2, d3, toque, fama, computer, ntoques, nfamas, fin, pc;
PlaySound(MAKEINTRESOURCE(sound), NULL, SND_RESOURCE | SND_ASYNC | SND_LOOP);
printf ("\n\n\t\t***************************************\n\n");
printf ("\n\n\t\t** Bienvenido al juego: Toque y Fama **\n\n"); //momento donde se inicia el juego
printf ("\n\n\t\t***************************************\n\n");
secreto = (rand()%899+100); //funcion que permitira aleatoriamente elegir un numero secreto
printf ("\n\n\n\tEn este juego tienes que adivinar el numero que estoy pensando! \n\n\t\t\tSeras capaz de lograrlo?\n\n\n");
printf ("\nPor favor, ingrese un numero de tres cifras\n\n");
scanf ("\n%d",&num); //aqui el jugador digita un numero con el fin de adivinar el de su rival
while ((num<000)||(num<=011)||(num>=1000)) {
printf ("\n\nLos digitos ingresados no son de tres cifras");
printf ("\n\nIngrese un nuevo numero: \n\n");
scanf ("%d",&num);
}
while (num != secreto) { //se produciran iteraciones siempre que el numero que se digite sea distinto al numero secreto del rival
s1= secreto/100;
s2= (secreto%100-secreto%100%10)/10; //aqui se hace la division del numero secreto para poder hacer las combinaciones
s3= secreto%100%10;
d1= num/100;
d2= (num%100-num%100%10)/10; //lo mismo se hace con el numero dado por el rival
d3= num%100%10;
toque = 0;
fama = 0;
if ((d1==s1)||(d2==s2)||(d3==s3)||(d1==s2)||(d1==s3)||(d2==s1)||(d2==s3)||(d3==s1)||(d3==s2)) { //aca se ven las combinaciones posibles de toques y famas
if (d1==s1){
fama=fama+1;
}
if (d2==s2){
fama=fama+1;
}
if (d3==s3){
fama=fama+1;
}
if (d1==s2){
toque=toque+1;
}
if (d1==s3){
toque=toque+1;
}
if (d2==s1){
toque=toque+1;
}
if (d2==s3){
toque=toque+1;
}
if (d3==s1){
toque=toque+1;
}
if (d3==s2){
toque=toque+1;
}
if (toque==1){
printf ("Tu tienes un toque\n");
}
if (toque==2||toque==3){
printf ("Tu tienes %d toques\n",toque);
}
if (fama==1){
printf ("Tu tienes una fama\n");
}
if (fama==2||fama==3){
printf ("Tu tienes %d famas\n",fama);
}
}
computer = (rand()%899+100); //esta funcion permitira generar el numero que cumplira la funcion de adivinar el secreto rival
printf ("\n\t\t\t*******************\n\n");
printf ("\n\t\t\tTurno de la Maquina\n\n");
printf ("\n\t\t\t*******************\n\n");
printf ("\n\nNo has acertado, estos son mis numeros: \n\n");
printf ("%d\n\n",computer);
printf ("\nIngrese cantidad de toques acertados\n\n");
scanf ("\n%d",&ntoques);
while ((ntoques<0)||(ntoques>=4)) {
printf ("\nLos toques ingresados no son correctos. Favor ingresar nuevamente\n\n");
scanf ("\n%d",&ntoques);
}
printf ("\nIngrese cantidad de famas acertadas\n\n");
scanf ("\n%d",&nfamas);
while ((nfamas<0)||(nfamas>=4)) {
printf ("\nLas famas ingresadas no son correctas. Favor ingresar nuevamente\n\n");
scanf ("\n%d",&nfamas);
}
if (nfamas==3) {
pc = 1;
fin = secreto;
num = fin;
}
else {
printf ("\n\t\t\t*****************\n\n");
printf ("\n\t\t\tTurno del Jugador\n\n"); //se vuelve a la iteracion si no se ha adivinado el numero
printf ("\n\t\t\t*****************\n\n");
printf ("\n\nIngresa un nuevo numero: \n\n");
scanf ("\n%d",&num);
while ((num<000)||(num<=011)||(num>=1000)) {
printf ("\nLos digitos ingresados no son de tres cifras");
printf ("\n\nIngrese un nuevo numero: \n\n");
scanf ("\n%d",&num);
}
}
}
if (pc==1) {
printf ("\n\nTe he derrotado\n\n"); //si se adivina, sale de la iteracion y escribe la derrota del jugador
printf ("\n\nEl juego ha concluido\n\n");
}
else {
printf ("\n\nMe has derrotado\n\n"); //si el jugador adivina el secreto rival, el ordenador escribira esta frase
printf ("\n\nEl juego ha concluido\n\n");
}
return 0;
}
My resource file says the following line
sound WAVE "eric johnson - 017 eric johnson - cliffs of dover441.wav"
And, the header file (resources.h), simply
#ifndef RESOURCE_H_INCLUDED
#define RESOURCE_H_INCLUDED
#define sound 1001
#endif // RESOURCE_H_INCLUDED
Compiling, I add the flags -lwinmm and -mwindows and the program compiles, but, when I execute it, I don't get any sound or response from the rest of the program, only consumes memory, but, nothing else.
Thanks for everything :3.
You are passing in an argument but the program is not using it. Change as follows
int main(int argc, const char* argv[])
...
PlaySound(TEXT(argv[1]), NULL, SND_FILENAME);
This will pick up the filename that you are passing in and play it.
Edit1 Check if this works
PlaySound((LPCTSTR) SND_ALIAS_SYSTEMSTART, NULL, SND_ALIAS_ID);
You should get the startup sound - that basically proves that PlaySound basically works. If you don't get any sound at all then there is possibly something else that is wrong. Note that whatever tune you load must fit in memory.
If that works, try
PlaySound(TEXT("SystemStart"), NULL, SND_ALIAS);
If that works, copy \windows\media\chimes.wav to your current directory and try
PlaySound(TEXT(".\\chimes.wav"), NULL, SND_FILENAME);
If that doesn't work, work out which is the runtime directory. Once you get that working, try it with your .wav file. If that works, try a full pathname
PlaySound(TEXT("\\Windows\\Media\\Windows Logoff Sound.wav"), NULL, SND_FILENAME);
If that works, try it with the full path of your WAV file.