• Miércoles 1 de Abril de 2026, 09:00

Mostrar Mensajes

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

Páginas: [1] 2
1
C/C++ / Libreria grafica compatible con windows?
« 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
C/C++ / no me compila
« 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
C/C++ / Problema con sonido
« 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

Código: C++
  1. #include <windows.h>
  2. #include <stdio.h>
  3. #include <mmsystem.h>
  4. #include <math.h>
  5. #define BUFFER 2048
  6. #define FREC 44100
  7.  
  8. WAVEFORMATEX WaveFormat;
  9. HWAVEOUT    HWaveOut;
  10. DWORD       WaveBufSize;
  11. WAVEHDR     WaveHeader[2];
  12.  
  13. void CALLBACK WaveOutProc(HWAVEOUT waveOut, UINT uMsg, DWORD dwInstance, DWORD dwParam1, DWORD dwParam2)
  14. {
  15.     if(uMsg==MM_WOM_DONE) waveOutWrite(HWaveOut, (WAVEHDR *)dwParam1, sizeof(WAVEHDR));
  16. }
  17.  
  18. int main(int argc, char **argv)
  19. {
  20.     WaveFormat.nSamplesPerSec = FREC;
  21.     WaveFormat.wBitsPerSample = 8;
  22.     WaveFormat.nChannels = 1;
  23.     WaveFormat.cbSize = 0;
  24.     WaveFormat.wFormatTag = WAVE_FORMAT_PCM;
  25.     WaveFormat.nBlockAlign = (WaveFormat.wBitsPerSample /8) * WaveFormat.nChannels;
  26.     WaveFormat.nAvgBytesPerSec = WaveFormat.nBlockAlign * WaveFormat.nSamplesPerSec;
  27.     WaveBufSize=BUFFER;
  28.    
  29.     float PI=3.14159265358979323846;
  30.     unsigned char onda[BUFFER];
  31.     for(int i=0;i<BUFFER;i++)
  32.     {
  33.         int samples_por_ciclo=128;//ACA
  34.         onda[i]=int(sin( i*2*PI/(samples_por_ciclo) )*127)+127;
  35.     }
  36.     waveOutOpen(&HWaveOut, WAVE_MAPPER, &WaveFormat, (DWORD)WaveOutProc, 0, CALLBACK_FUNCTION);
  37.     WaveHeader[0].dwBufferLength=WaveBufSize;
  38.     WaveHeader[1].dwBufferLength=WaveBufSize;
  39.     WaveHeader[0].lpData=(char *)onda;
  40.     WaveHeader[1].lpData=(char *)onda;
  41.     waveOutSetVolume(HWaveOut,0x1101);
  42.     waveOutPrepareHeader(HWaveOut, &WaveHeader[0], sizeof(WAVEHDR));
  43.     waveOutPrepareHeader(HWaveOut, &WaveHeader[1], sizeof(WAVEHDR));
  44.     waveOutWrite(HWaveOut, &WaveHeader[0], sizeof(WAVEHDR));
  45.     waveOutWrite(HWaveOut, &WaveHeader[1], sizeof(WAVEHDR));
  46.     while(GetKeyState(0x31)>=0) printf("");//Esta linea detiene el hasta que se aprete la tecla "1"
  47.     waveOutUnprepareHeader(HWaveOut, &WaveHeader[1], sizeof(WAVEHDR));
  48.     waveOutUnprepareHeader(HWaveOut, &WaveHeader[0], sizeof(WAVEHDR));
  49.     waveOutReset(HWaveOut);
  50.     waveOutClose(HWaveOut);
  51. }
  52.  
  53.  

4
C/C++ / Sonido molesto, doble buffer
« 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

Código: C++
  1. #include <windows.h>
  2. #include <stdio.h>
  3. #include <mmsystem.h>
  4. #include <math.h>
  5.  
  6. WAVEFORMATEX WaveFormat;
  7. HWAVEOUT    HWaveOut;
  8. DWORD       WaveBufSize;
  9. WAVEHDR     WaveHeader[2];
  10. unsigned char onda[1024];
  11.  
  12. void CALLBACK WaveOutProc(HWAVEOUT waveOut, UINT uMsg, DWORD dwInstance, DWORD dwParam1, DWORD dwParam2)
  13. {
  14.     if(uMsg==MM_WOM_DONE) waveOutWrite(HWaveOut, (WAVEHDR *)dwParam1, sizeof(WAVEHDR));
  15. }
  16.  
  17. int main(int argc, char **argv)
  18. {
  19.     //Creo la onda
  20.     float PI=3.14159265358979323846;
  21.     for(int i=0;i<1024;i++) onda[i]=int(sin(i*2*PI/16.0)*128)+127;
  22.    
  23.     //Establesco los parametros de sonido
  24.     WaveFormat.nSamplesPerSec = 26000;
  25.     WaveFormat.wBitsPerSample = 8;
  26.     WaveFormat.nChannels = 1;
  27.     WaveFormat.cbSize = 0;
  28.     WaveFormat.wFormatTag = WAVE_FORMAT_PCM;
  29.     WaveFormat.nBlockAlign = (WaveFormat.wBitsPerSample /8) * WaveFormat.nChannels;
  30.     WaveFormat.nAvgBytesPerSec = WaveFormat.nBlockAlign * WaveFormat.nSamplesPerSec;
  31.     //Pongo el driver a sonar
  32.     waveOutOpen(&HWaveOut, WAVE_MAPPER, &WaveFormat, (DWORD)WaveOutProc, 0, CALLBACK_FUNCTION);
  33.     WaveBufSize=1024;
  34.     WaveHeader[0].lpData=(char *)onda;
  35.     WaveHeader[1].lpData=(char *)onda;
  36.     WaveHeader[0].dwBufferLength=WaveBufSize;
  37.     WaveHeader[1].dwBufferLength=WaveBufSize;
  38.     waveOutPrepareHeader(HWaveOut, &WaveHeader[0], sizeof(WAVEHDR));
  39.     waveOutPrepareHeader(HWaveOut, &WaveHeader[1], sizeof(WAVEHDR));
  40.     waveOutWrite(HWaveOut, &WaveHeader[0], sizeof(WAVEHDR));
  41.     waveOutWrite(HWaveOut, &WaveHeader[1], sizeof(WAVEHDR));
  42.     while(GetKeyState(0x31)>=0) printf("");//Esta linea solo detiene el programa para que no se cierre
  43.     waveOutReset(HWaveOut);
  44.     waveOutUnprepareHeader(HWaveOut, &WaveHeader[1], sizeof(WAVEHDR));
  45.     waveOutUnprepareHeader(HWaveOut, &WaveHeader[0], sizeof(WAVEHDR));
  46.     waveOutClose(HWaveOut);
  47. }
  48.  
  49.  

5
C/C++ / ¿como se usa la funcion play_audio_stream de allegro?
« 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>

Código: C++
  1. int main()
  2. {  
  3.     allegro_init();
  4.     install_keyboard();
  5.     install_sound(DIGI_AUTODETECT, MIDI_AUTODETECT, NULL);
  6.     //Creo el flujo de audio "stream"
  7.     AUDIOSTREAM *stream = play_audio_stream(1024, 8, FALSE, 22050, 255, 128);
  8.     //Luego creo el sample "archivo" cargando un wav
  9.     SAMPLE *archivo=load_wav("wav.wav");
  10.     while(!key[KEY_ESC]){
  11.         void *mem_chunk;
  12.         mem_chunk = get_audio_stream_buffer(stream);
  13.         //Cuando no halla nada en el buffer del flujo de audio "stream"
  14.         if (mem_chunk != NULL){
  15.             //Se coloca en el buffer el sample "archivo"
  16.             mem_chunk=&archivo;
  17.             //Se indica que el buffer ya ha sido cargado
  18.             free_audio_stream_buffer(stream);
  19.         }
  20.     }
  21. }
  22. END_OF_MAIN();
  23.  

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
C/C++ / acceder al codigo des las librerias
« 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
C/C++ / Que me recomiendan para programar un "piano"
« 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
C/C++ / c++ allegro sonido
« 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:
Código: C++
  1. #include <allegro.h>
  2.  
  3. int main()
  4. {   
  5.     allegro_init();
  6.     install_keyboard();
  7.     install_sound(DIGI_AUTODETECT, MIDI_AUTODETECT, NULL);
  8.     SAMPLE *archivo=load_wav("wav.wav");
  9.     int teclaZ=0;
  10.     int teclaX=0;
  11.     int teclaC=0;
  12.     while(!key[KEY_ESC])
  13.     {
  14.         if(key[KEY_Z] && teclaZ==0)//Si se preciona "Z" suena el sonido
  15.         {
  16.             stop_sample(archivo);
  17.             play_sample(archivo, 255, 0, 1000, 0);              
  18.         }
  19.         if(key[KEY_Z]) teclaZ=1;
  20.         else teclaZ=0;
  21.        
  22.         if(key[KEY_X] && teclaX==0)//Si se preciona "X" suena el sonido
  23.         {
  24.             stop_sample(archivo);
  25.             play_sample(archivo, 255, 0, 1000, 0);              
  26.         }
  27.         if(key[KEY_X]) teclaX=1;
  28.         else teclaX=0;
  29.        
  30.         if(key[KEY_C] && teclaC==0)//Si se preciona "C" suena el sonido
  31.         {
  32.             stop_sample(archivo);
  33.             play_sample(archivo, 255, 0, 1000, 0);              
  34.         }
  35.         if(key[KEY_C]) teclaC=1;
  36.         else teclaC=0;
  37.     }
  38.     return 0;
  39. }
  40. END_OF_MAIN();
  41.  
  42.  

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
C/C++ / de imagen a array
« 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
C/C++ / Les anda?
« 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
C/C++ / fuentes c++
« 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
C/C++ / duda con objetos
« 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:

Citar
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
C/C++ / porque pasa esto??????????
« 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;
}

 :brickwall:  :hitcomp:  :brickwall:  :hitcomp:  :brickwall:  :hitcomp:

14
C/C++ / escrivir valores en un archivo
« 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
C/C++ / archivos de 5 bits de unidad
« 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
C/C++ / concatenar texto
« 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
C/C++ / como paso el contenido de un char array a otro char array?
« 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
C/C++ / teoria vs practica
« 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
C/C++ / Problema leyendo texto
« 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
C/C++ / SO
« 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
Servidores / hacer un juego online
« 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
C/C++ / divisiones exactas
« 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
C/C++ / me da error con una funcion de allegro
« 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
Código: C++
  1. #include <allegro.h>
  2. #include "declaracion.h"
  3.  
  4. int main()
  5. {
  6.  init();
  7.  
  8.  while(!key[KEY_ESC])
  9.  {
  10.    dibujar();
  11.  }
  12.  
  13.  deinit();
  14.  return 0;
  15. }
  16. END_OF_MAIN()
  17.  

implementacion.cpp
Código: C++
  1. #include <allegro.h>
  2.  
  3. BITMAP *buffer;
  4.  
  5. void init()
  6. {
  7.  int depth, res;
  8.  allegro_init();
  9.  set_color_depth(32);
  10.  set_gfx_mode(GFX_AUTODETECT_WINDOWED, 600, 600, 0, 0);
  11.  install_timer();
  12.  install_keyboard();
  13.  install_mouse();
  14.  install_timer();
  15. }
  16.  
  17. void deinit() {clear_keybuf();}
  18.  
  19. void dibujar()
  20. {
  21.  clear_bitmap(buffer);
  22. }
  23.  

declaracion.h
Código: C++
  1. void init();
  2. void deinit();
  3. void dibujar();
  4.  

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
C/C++ / como organizar el code en Dev-Cpp
« 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  :wacko:

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
C/C++ / numeros aleatorios C++ Allegro
« 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...

Páginas: [1] 2