|
|
Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.
Mensajes - Alfonsos1
2
« en: Domingo 22 de Mayo de 2011, 03:56 »
lo unico que quiero hacer es imprimir unos rectangulos en pantalla
quiero que me recomienden una libreria sensilla y si es posible que tenga documentacion en internet
NO PUEDE SER ALLEGRO!!! he intentado usar allegro pero me da problemas
(estoy usando las librerias <windows.h> <mmsystem.h>)...
3
« en: Domingo 22 de Mayo de 2011, 03:53 »
el problema si tiene que ver con allegro, si no inclullo las librerias de allegro, no me tira esos errores...
si conosco las funciones de sonido de allegro pero yo presiso algo de menor nivel.
TALVES LO MEJOR SEA USAR OTRA LIBRERIA PARA LA PARTE GRAFICA
4
« en: Sábado 21 de Mayo de 2011, 18:39 »
si ya habia intentado eso, pero me dice que no reconoce las siguientes funciones: #include <allegro.h> #include <winalleg.h> #include <windows.h> #include <mmsystem.h> #include <stdio.h> #include <math.h> #include <time.h> #define BUFFER 880 #define FREC 44100 #define NOTAS 30 #define TIEMPO 10 #define TAMNOTA0 5400 WAVEFORMATEX WaveFormat; HWAVEOUT HWaveOut; DWORD WaveBufSize; WAVEHDR WaveHeader[3]; int posbuffer=0; unsigned char onda[NOTAS][TAMNOTA0*2]; int spc[NOTAS];//Samples por ciclo unsigned char nota=5; int volumen=0; void CALLBACK WaveOutProc(HWAVEOUT waveOut, UINT uMsg, DWORD dwInstance, DWORD dwParam1, DWORD dwParam2) { if(uMsg==MM_WOM_DONE) { (*(WAVEHDR *)dwParam1).lpData=(char *)onda[nota]+posbuffer; waveOutWrite(HWaveOut, (WAVEHDR *)dwParam1, sizeof(WAVEHDR)); waveOutSetVolume(HWaveOut,volumen); posbuffer=(BUFFER+posbuffer)%spc[nota]; } } int main() { allegro_init(); install_keyboard(); set_color_depth(32); set_gfx_mode(GFX_AUTODETECT_WINDOWED, 1024, 256, 0, 0); BITMAP *buffer = create_bitmap(1024, 256); clear_to_color(buffer, makecol(0,0,0)); blit(buffer, screen, 0, 0, 0, 0,1024, 256); readkey(); destroy_bitmap(buffer); return 0; } END_OF_MAIN();
el error es este: [Linker error] undefined reference to `waveOutWrite@12' [Linker error] undefined reference to `waveOutSetVolume@8'
5
« en: Sábado 21 de Mayo de 2011, 04:22 »
Podrias esplicar eso un poco mas ssaammuu?
nunca habia usado namespace ademas del tipico using namespace sdt;
6
« en: Martes 17 de Mayo de 2011, 21:02 »
la libreria que me causa creo que es mmsystem
esta libreria aparentemente tambien tiene su propia defincicion de bITMAP
7
« en: Martes 17 de Mayo de 2011, 20:15 »
NO, no reconoce las funciones de winsow si hago eso...
8
« en: Martes 17 de Mayo de 2011, 18:55 »
Estoy usando una libreria de windows para el sonido, y allegro para la parte grafica
el problema es que en ambas librerias esta declarada la estructura "BITMAP" y no me permite compilar
que hago?
el error: Dev-Cppincludeallegrosystem.h conflicting declaration 'struct BITMAP' Dev-Cppincludewingdi.h 'BITMAP' has a previous declaration as `typedef struct tagBITMAP BITMAP'
9
« en: Lunes 16 de Mayo de 2011, 05:22 »
Miren el siguiente codigo, lo que tiene que hacer es dejar sonando un tono, La frecuencia del tono esta determinada por la variable samples_por_ciclo, cuanto mas baja sea esta variable es mas agudo el sonido Anda bien con valores 8, 16, 32, 64, 128 (los valores tienen q ser potencia de 2 para que suene agradable), pero si pongo un numero mas grande (como 256) no suena nada. ¿saben porque? miren la linea 33, prueben el programa con samples_por_ciclo=128, y luego con samples_por_ciclo=256 #include <windows.h> #include <stdio.h> #include <mmsystem.h> #include <math.h> #define BUFFER 2048 #define FREC 44100 WAVEFORMATEX WaveFormat; HWAVEOUT HWaveOut; DWORD WaveBufSize; WAVEHDR WaveHeader[2]; void CALLBACK WaveOutProc(HWAVEOUT waveOut, UINT uMsg, DWORD dwInstance, DWORD dwParam1, DWORD dwParam2) { if(uMsg==MM_WOM_DONE) waveOutWrite(HWaveOut, (WAVEHDR *)dwParam1, sizeof(WAVEHDR)); } int main(int argc, char **argv) { WaveFormat.nSamplesPerSec = FREC; WaveFormat.wBitsPerSample = 8; WaveFormat.nChannels = 1; WaveFormat.cbSize = 0; WaveFormat.wFormatTag = WAVE_FORMAT_PCM; WaveFormat.nBlockAlign = (WaveFormat.wBitsPerSample /8) * WaveFormat.nChannels; WaveFormat.nAvgBytesPerSec = WaveFormat.nBlockAlign * WaveFormat.nSamplesPerSec; WaveBufSize=BUFFER; float PI=3.14159265358979323846; unsigned char onda[BUFFER]; for(int i=0;i<BUFFER;i++) { int samples_por_ciclo=128;//ACA onda[i]=int(sin( i*2*PI/(samples_por_ciclo) )*127)+127; } waveOutOpen(&HWaveOut, WAVE_MAPPER, &WaveFormat, (DWORD)WaveOutProc, 0, CALLBACK_FUNCTION); WaveHeader[0].dwBufferLength=WaveBufSize; WaveHeader[1].dwBufferLength=WaveBufSize; WaveHeader[0].lpData=(char *)onda; WaveHeader[1].lpData=(char *)onda; waveOutSetVolume(HWaveOut,0x1101); waveOutPrepareHeader(HWaveOut, &WaveHeader[0], sizeof(WAVEHDR)); waveOutPrepareHeader(HWaveOut, &WaveHeader[1], sizeof(WAVEHDR)); waveOutWrite(HWaveOut, &WaveHeader[0], sizeof(WAVEHDR)); waveOutWrite(HWaveOut, &WaveHeader[1], sizeof(WAVEHDR)); while(GetKeyState(0x31)>=0) printf("");//Esta linea detiene el hasta que se aprete la tecla "1" waveOutUnprepareHeader(HWaveOut, &WaveHeader[1], sizeof(WAVEHDR)); waveOutUnprepareHeader(HWaveOut, &WaveHeader[0], sizeof(WAVEHDR)); waveOutReset(HWaveOut); waveOutClose(HWaveOut); }
10
« en: Sábado 14 de Mayo de 2011, 23:06 »
Lo que debe hacer el siguiente codigo es reproducir un sonido constante, pero cada un segundo aprox, hay un molesto ruido que no se a que se debe. Como quito ese ruido? como verán quiero hacer esto con doble buffer #include <windows.h> #include <stdio.h> #include <mmsystem.h> #include <math.h> WAVEFORMATEX WaveFormat; HWAVEOUT HWaveOut; DWORD WaveBufSize; WAVEHDR WaveHeader[2]; unsigned char onda[1024]; void CALLBACK WaveOutProc(HWAVEOUT waveOut, UINT uMsg, DWORD dwInstance, DWORD dwParam1, DWORD dwParam2) { if(uMsg==MM_WOM_DONE) waveOutWrite(HWaveOut, (WAVEHDR *)dwParam1, sizeof(WAVEHDR)); } int main(int argc, char **argv) { //Creo la onda float PI=3.14159265358979323846; for(int i=0;i<1024;i++) onda[i]=int(sin(i*2*PI/16.0)*128)+127; //Establesco los parametros de sonido WaveFormat.nSamplesPerSec = 26000; WaveFormat.wBitsPerSample = 8; WaveFormat.nChannels = 1; WaveFormat.cbSize = 0; WaveFormat.wFormatTag = WAVE_FORMAT_PCM; WaveFormat.nBlockAlign = (WaveFormat.wBitsPerSample /8) * WaveFormat.nChannels; WaveFormat.nAvgBytesPerSec = WaveFormat.nBlockAlign * WaveFormat.nSamplesPerSec; //Pongo el driver a sonar waveOutOpen(&HWaveOut, WAVE_MAPPER, &WaveFormat, (DWORD)WaveOutProc, 0, CALLBACK_FUNCTION); WaveBufSize=1024; WaveHeader[0].lpData=(char *)onda; WaveHeader[1].lpData=(char *)onda; WaveHeader[0].dwBufferLength=WaveBufSize; WaveHeader[1].dwBufferLength=WaveBufSize; waveOutPrepareHeader(HWaveOut, &WaveHeader[0], sizeof(WAVEHDR)); waveOutPrepareHeader(HWaveOut, &WaveHeader[1], sizeof(WAVEHDR)); waveOutWrite(HWaveOut, &WaveHeader[0], sizeof(WAVEHDR)); waveOutWrite(HWaveOut, &WaveHeader[1], sizeof(WAVEHDR)); while(GetKeyState(0x31)>=0) printf("");//Esta linea solo detiene el programa para que no se cierre waveOutReset(HWaveOut); waveOutUnprepareHeader(HWaveOut, &WaveHeader[1], sizeof(WAVEHDR)); waveOutUnprepareHeader(HWaveOut, &WaveHeader[0], sizeof(WAVEHDR)); waveOutClose(HWaveOut); }
11
« en: Martes 26 de Abril de 2011, 18:42 »
Estoy intentando entender como se usa la funcion play_audio_stream, pero no logro que funcione. Intente lo siguiente, pero no pasa nada... #include <allegro.h> int main() { allegro_init(); install_keyboard(); install_sound(DIGI_AUTODETECT, MIDI_AUTODETECT, NULL); //Creo el flujo de audio "stream" AUDIOSTREAM *stream = play_audio_stream(1024, 8, FALSE, 22050, 255, 128); //Luego creo el sample "archivo" cargando un wav SAMPLE *archivo=load_wav("wav.wav"); while(!key[KEY_ESC]){ void *mem_chunk; mem_chunk = get_audio_stream_buffer(stream); //Cuando no halla nada en el buffer del flujo de audio "stream" if (mem_chunk != NULL){ //Se coloca en el buffer el sample "archivo" mem_chunk=&archivo; //Se indica que el buffer ya ha sido cargado free_audio_stream_buffer(stream); } } } END_OF_MAIN();
mire la descripcion de la funcion en este sitio pero no consigo entender... http://www.allegro.cc/manual/4/api/audi ... dio_stream¿como se usa la funcion play_audio_stream de allegro?
12
« en: Martes 26 de Abril de 2011, 18:41 »
si te refieres a las librerias que vienen con los compiladores todas las librerias son asi o solo las "estandar" yo queria acceder al codigo de la libreria allegro (la cual no me vino con el comilador)
13
« en: Lunes 25 de Abril de 2011, 21:01 »
quiero saber si se puede acceder al codigo des las librerias
cuando se usa un "#include <libreria.h>" este une al codigo de mi programa el codigo de la libreria, pero yo quiero ver el codigo de la libreria, COMO LO HAGO?
uso el dev-cpp y windows xp
14
« en: Viernes 22 de Abril de 2011, 21:46 »
Intente lo siguiente, pero cuando lo ejecuto no pasa nada: #include <allegro.h> int main() { allegro_init(); install_keyboard(); install_sound(DIGI_AUTODETECT, MIDI_AUTODETECT, NULL); //Creo el flujo de audio "stream" AUDIOSTREAM *stream = play_audio_stream(1024, 8, FALSE, 22050, 255, 128); //Luego creo el sample "archivo" cargando un wav SAMPLE *archivo=load_wav("wav.wav"); while(!key[KEY_ESC]){ void *mem_chunk; mem_chunk = get_audio_stream_buffer(stream); //Cuando no halla nada en el buffer del flujo de audio "stream" if (mem_chunk != NULL){ //Se coloca en el buffer el sample "archivo" mem_chunk=&archivo; //Se indica que el buffer ya ha sido cargado free_audio_stream_buffer(stream); } } } END_OF_MAIN();
En el codigo deje comentarios que esplican lo que yo pretendia hacer con este codigo. Pero como ya les dije, no pasa nada cuando ejecuto este codigo, ¿alguien sabe que estoy hacendo mal?
15
« en: Viernes 22 de Abril de 2011, 20:29 »
Windows XP es el SO
16
« en: Jueves 21 de Abril de 2011, 22:45 »
Supongamos que quiero hacer un teclado de 10 notas, para ello deberia tener 10 archivos de sonido: nota1.wav nota2.wav ... nota10.wav
si se presiona una tecla deberia sonar una nota: tecla "1" --- nota1.wav tecla "2" --- nota2.wav ... tecla "0" --- nota 10.wav
Esto es fasil de programar, yo lo hice con la libreria allegro de C++. Pero no anda bien cuando empiezo a tocar notas rapido. Por ejemplo si toco una misma nota varias veses a una velocidad rapida (por ejmplo 6 veces por seg) empieza a saltearce notas (como si no le diera la capasidad para hacer sonar todas las notas), probe achicando el tamaño de los archivos wav pero no se soluciono el problema.
Supongo que C++ al ser un lenguaje de bajo nivel es bueno para programar este tipo de cosas, sin embargo no se si allegro sea una buena opcion.
¿allegro es una libreria eficiente o buena para programar lo que quiero?, sino que libreria puedo usar? ¿saben el porque de mi problema o la solucion?
17
« en: Jueves 21 de Abril de 2011, 05:27 »
estoy haciendo un programa lo que quiero es que si se oprime "Z", "X", o "C" tiene que sonar un sonido wav pero si oprimo rapido las teclas el sonido empieca a "saltear tecleadas". este es el codigo fuente: #include <allegro.h> int main() { allegro_init(); install_keyboard(); install_sound(DIGI_AUTODETECT, MIDI_AUTODETECT, NULL); SAMPLE *archivo=load_wav("wav.wav"); int teclaZ=0; int teclaX=0; int teclaC=0; while(!key[KEY_ESC]) { if(key[KEY_Z] && teclaZ==0)//Si se preciona "Z" suena el sonido { stop_sample(archivo); play_sample(archivo, 255, 0, 1000, 0); } if(key[KEY_Z]) teclaZ=1; else teclaZ=0; if(key[KEY_X] && teclaX==0)//Si se preciona "X" suena el sonido { stop_sample(archivo); play_sample(archivo, 255, 0, 1000, 0); } if(key[KEY_X]) teclaX=1; else teclaX=0; if(key[KEY_C] && teclaC==0)//Si se preciona "C" suena el sonido { stop_sample(archivo); play_sample(archivo, 255, 0, 1000, 0); } if(key[KEY_C]) teclaC=1; else teclaC=0; } return 0; } END_OF_MAIN();
a que se debe eso? tiene solucion? si uso otra libreria en lugar de allegro puedo evitar este problema? el archivo wav es un pequeño archivo de solo 244 bytes, que dura unas pocas decimas de segundo
18
« en: Miércoles 23 de Febrero de 2011, 18:22 »
y como leer los pixeles 1 a 1?
19
« en: Miércoles 23 de Febrero de 2011, 17:29 »
quiero hacer un array llamado mapa: bool mapa[1000][1000] si una poscion del array contiene un 0 significa blanco, si una poscion del array contiene un 1 significa negro. y tengo una imagen bmp de 1000*1000 pixeles que es toda blanca, con algunas partes en negro. lo que quiero hacer es checar si el pixel (0,0) es blanco, en ese caso que el array mapa tenga un 0 en la posicion - [0], de lo contrario que contenga un 1.
y asi para todas las posiciones del array. en otras palabras quiero trasladoar una imagen bmp que tiene solo 2 colores a un array --------------------------- supongo que ba a depender mucho de que libreria balla a usar para leer las imagenes, yo uso allegro, pero si hace falta otra libreria diganme cual
20
« en: Lunes 14 de Febrero de 2011, 17:39 »
"Error al iniciar la aplicacion porque no se encontro alleg42.dll. La reinstalacion de la aplicacion puede solucionar el problema."
pense que al complar, ya se incluia la libreria, la primer linia de codigo es esta: #include <allegro.h>
21
« en: Lunes 14 de Febrero de 2011, 15:57 »
postie esto en otro foro y e dijieron que no les anda, esta echo en c++...
¿porque no les andar?
(le cambie la terminacion al archivo para poder subirlo, es un .exe)
22
« en: Lunes 24 de Enero de 2011, 15:01 »
gracias por la respuesta!!!
23
« en: Domingo 23 de Enero de 2011, 01:20 »
uso la libreria allegro, y en las funciones de mostrar texto me pide que espesifique el argumento fuente, en el que yo siempre coloco la palabra "font"
si yo quiero que mi programa mustre los textos en arial 12 o 8 que tengo que hacer?
arial es una fuente que todas las computadoras deben de tener, ¿verdad?, por lo que no tengo que incluir nungun archivo de fuente junto al ejecutable, ¿verdad?
24
« en: Viernes 21 de Enero de 2011, 00:25 »
el metodo iniciar no tiene el mismo nombre de tu clase fue sin querer gracias por la respuesta
25
« en: Jueves 20 de Enero de 2011, 23:19 »
si se le da el mismo nombre a una funcion miembro que a su clase, cuando se creea un objeto la funcion mismbro se ejecuta automaticamente. quisiera saber si esto ocurre cuando declaro un array de objetos por ejemplo: class cosa { public: int peso; void iniciar(); };
void cosa::iniciar() { peso=1; }
//y luego el array:
cosa miscosas[10][10]; en ese ejemplo todos los objetos de miscosas tendrian la variable peso con un valor de 1, ¿no?
|
|
|