|
|
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.
Temas - Alfonsos1
1
« 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>)...
2
« 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'
3
« 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); }
4
« 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); }
5
« 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?
6
« 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
7
« 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?
8
« 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
9
« 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
10
« 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)
11
« 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?
12
« 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?
13
« en: Jueves 20 de Enero de 2011, 00:10 »
cuando pruevo este codigo me aparece en pantalla "-110", cuando me deberia de aparecer "143" #include <stdio.h> #include <cstdlib> int main() { char runa3[4][4]; runa3[0][3]=146; printf("%d n",runa3[0][3]); system("pause"); return 0; }
14
« en: Martes 18 de Enero de 2011, 01:00 »
Quiero hacer un programa donde se escriva en un archivo los balores de un array
el array seria este:
int miarray[4]; miarray[0]=412; miarray[1]=21; miarray[2]=5324; miarray[3]=44522;
el archivo estaria en la misma carpeta del programa
¿como seria el codigo?
15
« en: Domingo 16 de Enero de 2011, 22:12 »
quiero crear archivos lo mas livianos poslibles (q ocupen poca memoria)
nesesito crear un archivo que almacene valores consecutivos, pero esos valores solo pueden variar entre 0 a 31, por lo que lo mas eficiente seria almacenar un valores cada 5 bites.
por eso quiero ordenar la informacion de a 5 bits en lugar de 8.
en internet solo encuentro funciones para trabajar en modo texto, pero yo nesesitaria hacerlo en modo binario.
Hay funciones que me permitan leer y escrivir los bites de un archivo?
16
« en: Sábado 15 de Enero de 2011, 20:42 »
en la funcion: fopen("R000.txt", "r"); nesesito que el numero (000) dependa de un array: char miarray[4]="000";
osea que quede algo asi: fopen("R"+miarray+".txt", "r");
¿como hago eso?
17
« en: Sábado 15 de Enero de 2011, 17:59 »
este codigo
char linea[5]; fgets(linea,5,f);
hace que "linea" contengo una linea de un archivo de texto, lo que yo quiero es pasar los 3 primeros caracteres de "linea" a otro array llamado "miarray"
char miarray[3]
18
« en: Viernes 14 de Enero de 2011, 19:15 »
si no me equivoco, 1 byte puede almacenar 256 valores distintos, por ejemplo del 0 al 255
supongamos que queremos guardar en un archivo 100 numeros, cada uno con valores entre 0 y 255, en ese caso nesesitariamos como minimo 100 bytes.
pero ahora supongamos que los numeros siempre estaran en orden de menor a mayor. En teoria, vastaria con menos de 100 bytes, pero en la practica no sarbria como hacerlo con menos de 100 bytes.
¿Cren que sea posible? ¿Cuanto es el minimo de memoria?
19
« en: Viernes 14 de Enero de 2011, 19:05 »
tengo un archivo de texto que contiene numeros de 3 sifras, por ejemplo asi: 078 008 670 801 etc...
el siguiente codigo lo que deve hacer es hacer que un array llamado "miarray" registre los valores (en caso de que no hallan mas lineas en el txt, le debe asignar un valor de 1000 al resto de valores del array), pero cuando chequeo el array "miarray" este tiene un valor de 0 en todas sus posiciones
FILE *f = fopen("Archivo.txt", "r"); char linia[3]; int miarray[60]; for(int i=0;i<60;i++) { if(fgets(linia,3,f)!=NULL) miarray=atoi(linia); else miarray=1000; } fclose(f);
20
« en: Domingo 9 de Enero de 2011, 19:56 »
me dijieron que si tiengo windows y compilo un programa en C++, ese programa no andará en otros SO
eso es verdad?
uso dev-cpp
21
« en: Martes 19 de Octubre de 2010, 22:45 »
mi idea seria:
1) las personas se registran por internet 2) descargan el juego (el cual yo debo programar) 3) abren el programa 4) buscan una partida o crean una partida propia y esperan a que otro jugador acceda
algo asi como el poker star, pero son solo dos jugadores por partida
imaginemos que el juego consistiera en un sensillo "piedra papel o tijera", en el cual los jugadores pueden apostar dinero ficticio.
el PC del jugador que cree la partida sera el que llevara acabo el juego, este devera hacer lo siguiente: 1) acceder a los datos (dinero ficticio) de los jugadores que se encuentran en un servidor en internet 2) checar cual es la jugada de cada jugador (piedra, papel o tijera; y la cantidad de dinero apostado) 3) checar cual es el ganador 4) modificar la cantidad de dinero de cada jugador 5) mostrar en pantalla los resultados de la partida a cada jugador (que eligio el jugador contrario, cuanto dinero gano o perdio)
bueno, no tengo absolutamente nada hecho aun, y quisiera que me orienten, por donde empiezo? el unico lenguaje que se el C++, que otros lenguajes tengo que aprender? que devo aprender? quisiera que me orienen plis
22
« en: Domingo 10 de Octubre de 2010, 23:05 »
nesesito que al hacer las cuentas halla presicion
por ejemplo int asd=floor(1/3+1/3+3/7);
nesesito que este codigo le de un valor de 1 a asd, pero el valor que le da es 0
se que eso se deve a que las divisiones se hacen de manera entera, pero no se como solucionar mi problema
23
« en: Sábado 9 de Octubre de 2010, 00:58 »
si elimino la linea 21 del implementacion.cpp, no me sale error, pero no se cual es el problema con esa linea. este es el code: main.cpp #include <allegro.h> #include "declaracion.h" int main() { init(); while(!key[KEY_ESC]) { dibujar(); } deinit(); return 0; } END_OF_MAIN()
implementacion.cpp #include <allegro.h> BITMAP *buffer; void init() { int depth, res; allegro_init(); set_color_depth(32); set_gfx_mode(GFX_AUTODETECT_WINDOWED, 600, 600, 0, 0); install_timer(); install_keyboard(); install_mouse(); install_timer(); } void deinit() {clear_keybuf();} void dibujar() { clear_bitmap(buffer); }
declaracion.h void init(); void deinit(); void dibujar();
no es un error de compilacion, sino que cuando se ejecuta el programa me sale error "proyecto1 ha detectado un error y debe cerrarce"
24
« en: Domingo 3 de Octubre de 2010, 02:05 »
apenas estoy comensando a programar un programa (llevo 300 lineas), y ya me esta costando entender y ubicarme entre tanto codigo mirando la interfas del DevCpp vi que todo el codigo que escrivi estaba dentro de una pestaña, quisiera saver si puedo dividir el codigo en varias pestañas, si se puede diganme como
25
« en: Sábado 2 de Octubre de 2010, 22:09 »
uso la libreria allegro.h, si hace falta de alguna otra abisenme (en lo posible que sea estandard)
quiero poder generar numeros aleatorios, que me recomiendan?
....
se que hay bastante de esto en google, pero no estoy seguro de cual usar, ya que lei que algunas funciones no devuelven numeros exactamente aleatorios...
|
|
|