Allegro Una librería para programar videojuegos


Support This Project
Albergado en: dotsrc.org
dotsrc.org

  

FAQ de Allegro
Si la respuesta no esta aquí, pregunte y será añadida...


Contenido


Problemas triviales



Lea readme.txt.



De cualquier mirror de SimTel (http://alleg.sourceforge.net/mirrors.html), en el directorio gnu/djgpp/v2tk/, o desde la página web de Allegro, http://alleg.sourceforge.net/.



Lea allegro.txt.


La licencia giftware

La licencia de Allegro es absolutamente clara excepto si es abogado. No obstante está escrita de forma bastante informal, así que este mini-FAQ intenta clarificar algunas cosas.



No. Todo colaborador de Allegro mantiene el copyright del código que ha escrito. Esto significa que esta persona le da permiso para usarlo para cualquier propósito. Pero el hecho de que el colaborador mantiene su copyright significa que por ejemplo, no puede decir que usted escribió el código.



Si.



Dado que la licencia de Allegro no tiene restricciones sobre su uso, puede combinar Allegro con cualquier licencia que desee.



Vea la pregunta anterior. Dado que Allegro es compatible con cualquier licencia, también es compatible con la OSI. Es claramente compatible con todos los puntos de la OSD (open source definition). Puede realizar una búsqueda en los archivos de la lista de correo OSI por la palabra "Allegro" para ver que la OSI comparte este punto de vista. (No obstante, los oficiales de la OSI son todavía reacios a aprobar esta licencia, y sugieren que usemos una licencia existente como la MIT.)



Puede modificar Allegro y distribuir un Allegro modificado bajo cualquier licencia que desee, pero las partes originales no modificadas seguirán estando bajo la licencia de Allegro. Si ofrece sus modificaciones para que sean incluidas en la distribución oficial de Allegro (por ejemplo, enviándolas a la lista de correo de desarrolladores de Allegro) está aceptando automáticamente que estas modificaciones usen la licencia de Allegro.


Cogí vuestro código. ¿Me vais a denunciar? Vuestra librería destruyó mi PC. ¿A quién denuncio?

Somos programadores, no abogados. Este documento representa nuestro entendimiento actual de la ley de copyright (o leyes de copyright en diferentes países). Pero dada la licencia, que permite cualquier cosa, y la nota que indica que no nos responsabilizamos de nada, realmente no sabemos cómo podría haber algún problema.


Problemas con DJGPP



Make es parte de la distribución estándar de djgpp, en v2gnu/mak*b.zip (el numero de la ultima versión). Puede obtenerlo de http://www.delorie.com/djgpp/.



¿Está seguro de que tiene djgpp instalado correctamente? Revise las instrucciones del fichero de djgpp readme.1st, y en particular cuide haber ajustado la variable de entorno de DJGPP y añada el directorio djgpp\bin a su path.



¿Está seguro de estar usando el programa make de GNU, en vez de algún otro como el de Borland? Si no lo sabe, ejecute make -v y compruebe que visualiza el mensaje de copyright de GNU.



¡No debería ejecutar make desde el explorador de Win95! Abra una sesión de DOS, vaya al directorio de Allegro, y ejecute make desde la línea de comandos.



¿Seguro que tiene la fecha del sistema ajustada correctamente? Alternativamente, quizás haya descargado un fichero recientemente hecho por alguien en una zona temporal al este. En este caso puede esperar unas horas, adelantar su reloj temporalmente, o usar una utilidad como touch para modificar la marca temporal de los ficheros.



Tal y como el mensaje de error sugiere, necesita liberar más memoria para el compilador. El programa go32-v2 le dirá cuanta tiene disponible. Si está en DOS, intente liberar espacio de disco duro para los ficheros temporales. Bajo win95, incremente el límite de memoria DPMI en las propiedades de su sesión DOS a 65535 (tendrá que escribir esto a mano, ya que la lista desplegable sólo llega hasta 16384).



Tal y como el mensaje de error sugiere, hay un conflicto entre la nueva versión del gcc y versiones antiguas de la libc. Debe actualizar su paquete djdevxxx.zip a la última actualización (fecha 11 de Agosto del 2002) de DJGPP-2.03 o posterior.



C:\TEMP\ccdaaaaa(.text+0x9):x.c: undefined reference to `allegro_init'
C:\TEMP\ccdaaaaa(.text+0xe):x.c: undefined reference to `install_keyboard'

No ha leído los manuales, ¿lo hizo? :-) Necesita enlazar su programa con la biblioteca de funciones, liballeg.a. Primero, asegúrese de que ha instalado todo correctamente (ejecutar make install debería hacer esto por usted). Segundo, si esta compilando desde la línea de comandos o desde un makefile, añada -lalleg al final de su línea de comando de gcc, o si esta usando Rhide, vaya al menú Options/Libraries, entonces teclee alleg en la primera línea vacía, y asegúrese de que la caja al lado está marcada.



No, lo siento. Para empezar, liballeg.a ocupa unos 450k, pero probablemente querrá varias utilidades como el grabber, la configuración de sonido, etc. ¿Y que hay de los programas de ejemplo? Si incluyese la versión compilada de todo, la distribución binaria sobrepasaría las 7 megas: ¡demasiado grande para ser práctico! Pero seriamente, no hay ninguna razón por la que no pueda compilar la librería usted mismo. El compilado de un programa es un proceso determinista: dado un fichero de entrada particular y una línea de comando, siempre producirá la misma salida. Si esto no funciona, o tiene ficheros de entrada incorrectos (su copia de Allegro esta estropeada en algún sentido), o la línea de comandos es incorrecta (es difícil que eso suceda, ya que solo tiene que teclear make...) o su compilador está estropeado, por ejemplo, si no instala djgpp correctamente. Necesita solucionar el problema en vez de ocultarlo bajo la alfombra consiguiendo que otro compile Allegro por usted...



Las herramientas GNU escriben los mensajes de error a stderr. Desafortunadamente, command.com es demasiado estúpido para redirijir el flujo, pero afortunadamente DJ fue suficientemente listo para evitar esto, por lo que puede usar su programa redir para capturar los mensajes de salida, por ejemplo

         redir -eo make > logfile.txt
      


Problemas en DOS



Las respuestas pueden variar. Algunas personas dicen que hay problemas, mientras que otras dicen que todo funciona bien. Use la versión Windows de Allegro si quiere hacer programas para Windows. Si quiere ejecutar programas para DOS, ¡use DOS!



Si, pero con problemas. Si está usando la versión OpenDOS de EMM386, debe desactivar su implementación DPMI (especifica DPMI=OFF en la línea del driver EMM386.EXE de tu config.sys). También debería acordarse de activar la bandera PIC=OFF, pero ese es el estado por defecto, por lo que no habría problemas con ello a no ser que lo haya cambiado antes.



No puede. El límite está impuesto por el hardware de la VGA, no por Allegro. Para acceder a más de 256k de memoria de vídeo necesita usar un modo SVGA, lo cual significa cambiar a una resolución mayor o conseguir una copia del programa SciTech Display Doctor, el cual provee algunos modos SVGA de baja resolución.



Para algunas personas si, pero no para otras. El problema es que Creative Labs se niega a revelar información interna sobre la tarjeta, por lo que no podemos escribir un driver para ella. Quéjese a ellos, o compre una tarjeta de un fabricante diferente más razonable.



Esto puede ser porque tiene el volúmen muy bajo: pruebe modificarlo desde el programa setup. Además, Allegro mezcla varios sonidos en un solo buffer de salida, a diferencia del reproductor de sonidos de Windows que sólo reproduce un sonido a la vez, por lo que cada sonido individual sólo puede obtener un porcentaje del volumen total de salida. Este es el precio que hay que pagar por el mezclado múltiple de canales. Si no le gusta, use el programa setup para alterar el número de canales: el número puede ser una potencia de dos menor o igual a 64, y cuanto menor sea, mayor será el volúmen del sonido. Alternativamente, use set_volume_per_voice(), tal y como se describe en la documentación. Esto le permite ajustar el volumen general de la salida de sonido digital de Allegro.



Pruebe usar un driver FreeBE/AF (http://www.talula.demon.co.uk/freebe/), o el programa comercial SciTech Display Doctor (http://www.scitechsoft.com). Si sigue sin funcionar, publique una descripción de su problema a la lista de correo de Allegro, junto con una copia de la salida que producen los programas afinfo y vesainfo.



La interfaz VBE/AF ya proporciona eso para los drivers de vídeo: compruebe el proyecto FreeBE/AF en http://www.talula.demon.co.uk/freebe/. Para cosas más generales como las rutinas de sonido, VESA, y las rutinas del modo-X, esto sería terriblemente difícil de conseguir debido a que los drivers dependen mucho de las rutinas de ayuda del núcleo de la biblioteca. El formato DXE no es lo suficientemente flexible como para soportar esto, y no queremos que Allegro dependa de otros paquetes de enlazado dinámico.



Bueno pues, entonces necesita incrementar el tamaño de su entorno :-) Puede hacer esto alterando la configuración de su sesión DOS (haga click en el menú de sistema y seleccione "propiedades"), o en el arranque de su config.sys (ej: añada shell=c:\command.com /e:8192).


Problemas en Windows



Bueno pues, entonces necesita incrementar el tamaño de su entorno :-) Puede hacer esto alterando la configuración de su sesión DOS (haga click en el menú de sistema y seleccione "propiedades"), o en el arranque de su config.sys (ej: añada shell=c:\command.com /e:8192).



Asegúrese de que no tiene un punto y coma al final de la variable MSVCDIR si está usando MSVC, al final de la variable MINGDIR si está usando MingW o al final de la variable BCC32DIR si está usando BCC. Además ejecute make -v desde la línea de comando para asegurarse de que está usando el programa make de GNU y no el de Borland o Microsoft.



Necesita indicarle a su compilador dónde encontrar los ficheros de cabecera y librerías de DirectX: ponga las rutas de los directorios /include y /lib del kit de desarrollo DirectX en la ruta de su compilador/enlazador. Alternativamente, si no quiere modificar nada de su configuración, puede copiar directamente esos ficheros del kit de desarrollo de DirectX a los directorios correspondientes de su compilador.



Necesita actualizarse a una versión más reciente del SDK de DirectX, como mínimo versión 5, que puede obtener de la web del desarrollador de Microsoft.



Si tiene software antivirus (por ejemplo de Norton o McAfee) trabajando en segundo plano en su ordenador, pruebe a desactivarlo temporalmente.



Necesita escribir END_OF_MAIN() justo tras su función main(). Allegro usa esto, junto con algo de magia del preprocesador, para convertir su función main() normal en un punto de entrada WinMain() al estilo Windows.



Asegúrese de que está creando una aplicación GUI para Windows, y no una aplicación de consola para Windows. Esto es un parámetro cuando crea el projecto con MSVC, Dev-C++ o Borland C++ Builder. Alternativamente, esto se especifica desde la línea de comando con la opción -subsystem:windows del enlazador de MSVC, -Wl,--subsystem,windows para el compilador MinGW o -tW para el compilador Borland C++. En cualquier caso, defina el símbolo de preprocesador ALLEGRO_USE_CONSOLE antes de incluír las cabeceras de Allegro si necesita realmente un programa de consola.

Alternatively, esto se especifica con el parámetro '-tW' para el compilador de línea de comando de Borland C++, o '-subsystem:console' para el enlazador de MSVC. Haga eso, o #defina USE_CONSOLE al comienzo de su programa antes de incluir los ficheros de cabecera de Allegro si necesita crear un programa de consola.



Si su programa incluye de forma directa ficheros de cabecera de la API Win32, compruebe la sección específica de windows de la documentación.

Si su programa sólo incluye ficheros de cabecera de la librería estándar de C++, es posible que esté intentando compilar con gcc 3.x para MingW; en este caso, defina el símbolo __GTHREAD_HIDE_WIN32API en la línea de comando:

         g++ -D__GTHREAD_HIDE_WIN32API program.cpp -lalleg
      



Desactive la actualización directa del driver de ventana de DirectX usando la variable específica de configuración. Mire la sección 'Rutinas de configuración' en la documentación y el fichero plantilla allegro.cfg para más detalles.



Desactive la actualización directa del driver de ventana de DirectX usando la variable específica de configuración. Mire la sección 'Rutinas de configuración' en la documentación y el fichero plantilla allegro.cfg para más detalles.


Probelmas Unix



Necesita escribir END_OF_MAIN() justo tras su función main(). Allegro usa esto, junto con algo de magia del preprocesador, para obtener una copia de sus parámetros argv[] (los necesita para varias cosas internas).



Probablemente está usando un sistema Darwin/MacOS X. Si es así, verifique que el símbolo USE_CONSOLE no está definido en su programa: es un símbolo deprecado que debe ser reemplazado por ALLEGRO_USE_CONSOLE. Tenga en cuenta además que la función main no puede ser desactivada en esta plataforma: no puede definir el símbolo ALLEGRO_NO_MAGIC_MAIN en un programa que enlace con Allegro.



Necesita redirigir stderr a un fichero, para poder verlo luego. El métido para hacer esto depende del intérprete de comandos: si está usando un intérprete al estilo Bourne, como bash, pruebe make 2> logfile.txt.


Cuando ejecuto un programa Allegro obtengo "error while loading shared libraries: liballeg.so.4.1: cannot open shared object file: No such file or directory".

Necesita enseñar a su enlazador dinámico dónde encontrar la librería dinámica de Allegro. Lea docs/build/unix.txt, al final de la sección 'Instalando Allegro'.



Hay dos posibles razones: 1) DGA2 puede soportar diferentes resoluciones/profundidades de color que X, ejecute el programa gfxinfo para saber qué combinaciones puede usar, 2) Puede tener una instalación DGA2 con fallos, lea la siguiente pregunta.



Probablemente esté usando un servidor XFree86 con una implementación DGA2 errónea, como la 4.0.3 (empaquetada con Red Hat 7.1 por ejemplo). Actualizarse a la 4.1.0 probablemente solucionará su problema. Puede obtenerla de ftp://ftp.xfree86.org/pub/XFree86/4.1.0/binaries/ tras seleccionar el directorio apropiado para su plataforma según indican las instrucciones del fichero Install.


Problemas generales



El grabber debe ser enlazado con el código en datedit.c. Pero no se debería preocupar por hacer esto a mano: simplemente ejecute make y eso recompilará todo para usted.


Cuando compilo Allegro, el make falla con algo como `Error: operands given don't match any known 386 instruction' o `Error: no such instruction `maskmovq %mm3, %mm1''.

Necesita actualizar su versión de GNU binutils. Lea readme.txt para descubrir la versión mínima requerida que necesita.



No a no ser que <foobar> esté mencionado en readme.txt como una de las plataformas soportadas. Usted podría adaptar Allegro a ese compilador, pero eso suele significar mucho trabajo. Si <foobar> es un compilador de 16 bits para DOS como Borland C, puede olvidar inmediatamente la idea :-)



WIP significa "work in progress" (versión en desarrollo), y se refiere a los cambios más recientes en Allegro desde la última versión oficial. Las versiones WIP de Allegro pueden obtenerse como parches de la página web de Allegro (http://alleg.sourceforge.net/), y normalmente son bastante estables, aunque no tan bien comprobadas como una versión final.



¿Tiene una copia de patch.exe? Si no, vaya a conseguirla del mismo lugar que consiguió el resto de djgpp: es una herramienta estándar de la distribución del compilador. De forma similar, puede obtener la versión compilada con Mingw de http://sourceforge.net/projects/gnuwin32/.

Si tiene el programa patch pero no funciona correctamente, asegurese de que está instalando el parche encima de la versión no modificada de Allegro que esté intentando actualizar. (esta normalmente es la versión oficial más reciente antes de la WIP, pero compruebe el fichero de texto que viene con la WIP para estar seguro).



Este fichero se distribuye por separado en las versiones WIP. Está en: http://alleg.sourceforge.net/wip.es.html. (alldata.zip)


¿Cómo puedo dibujar diferentes imágenes el mismo tiempo? Cuando dibujo la siguiente, ésta estropea la paleta de colores de la primera.

Por supuesto: ¡así es como funciona el hardware de video! Sólo puede haber una paleta de colores usada en un mismo momento. O convierte sus imágenes para que usen la misma paleta o cambia a un modo gráfico truecolor.



Busque en la página web de Allegro.cc (http://www.allegro.cc/) algunas utilidades, como por ejemplo FixPal y Smacker.



El hardware de la VGA solo usa 6 bits para cada componente del color, lo que significa que los valores de los colores rojo, verde y azul van desde 0 a 63 en la paleta de colores, sin llegar a 255. Esto le da un potencial de 2^18 = 262144 colores diferentes o 64 tonos de gris. Si necesitas más, puede usar la función de la VESA 0x4F08 para seleccionar un ancho de DAC de 8 bits, pero Allegro no soporta esto directamente, y no se si esto se podría hacer en diferentes ordenadores con hardware diferente.



Cuando está en un modo de 256 colores, la tarjeta VGA muestra el color #0 alrededor del área de visualización (en modos truecolor usa el color negro). El color desaparecerá en cuanto cambie la entrada #0 de su paleta de colores para que sea negra.



Con gran difficultad :-) No existe un truco tan sencillo como alterar la paleta de colores, por lo que tendrá que redibujar la pantalla más clara u oscura. Podría dibujar rectángulos negros translúcidos sobre la pantalla para oscurecerla, o usar draw_lit_sprite() para colorear el bitmap mientras lo copia a la pantalla, pero tenga la certeza que estas operaciones son costosas y requieren un PC rápido.

También, eche un vistazo a los paquetes de extensión de http://www.allegro.cc (notablemente FBlend v0.5) que hacen esta operación lo más rápido posible.



fade_in() y fade_out() sólo funcionan en modos de 8-bits con paleta. Uno de los modos para hacer un fundido de bitmap es recorrer todos los pixels y cambiarlos individualmente. Una alternativa es dibujar muchos recuadros negros translúcidos sobre la pantalla. No obstante, estos métodos pueden ser lentos. El ejemplo exxfade.c demuestra cómo hacer fundidos entre dos bitmaps. Puede modificarlo para que haga fundidos de/hacia una pantalla negra. Lea también la pregunta anterior.



Mire en la página web de Allegro (http://alleg.sourceforge.net/) y busque algunas utilidades, como por ejemplo DTA y Smacker. También puede usar ASE (Allegro Sprite Editor, http://ase.sourceforge.net), el cual permite dibujar/editar cada frame de la animación y salvarla como FLI. O puede usar The GIMP (http://www.gimp.org/) junto con su plugin GFli, usando capas como frames, y salvando su trabajo como file.fli. The GIMP también le permite editar ficheros FLI existentes.


¿Cómo puedo hacer partes de mis sprites transparentes en modos truecolor? No entiendo la documentación cuando dice "rosa fucsia"...

En su programa de dibujo favorito, busque las barras de desplazamiento RGB y arrastre las barras roja y azul tan alto como pueda (normalmente hasta 255, pero depende de las unidades que use el software), y la barra verde a cero. Esto creará una sombra de rosa fucsia, o como otras personas prefieren llamarlo, magenta.



Recuerde que las posiciones de los vértices son almacenadas en formato de punto fijo, debe usar la macro itofix() para desplazar sus coordenadas 16 bits a la izquierda.



Recuerde que el ángulo de rotación es almacenado en formato de punto fijo, por lo que debe usar la macro itofix() o desplazar sus coordenadas 16 bits a la izquierda. Por ejemplo, rotate_sprite(bmp, spr, x, y, itofix(32)) rotará el gráfico 45 grados.



Probablemente está intentando inicializar la estructura de diálogo con un puntero a su bitmap, ¿verdad? Eso no funcionará porque el diálogo es creado en tiempo de compilación, pero el bitmap es cargado en tiempo de ejecución, por lo que el compilador todavía no sabe dónde estará localizado. Necesita rellenar la estructura de diálogo con un puntero nulo, y entonces copiar el puntero del bitmap real en el campo dp como parte de su código de inicialización, tras haber cargado el bitmap en la memoria.



Depende de lo que esté haciendo. Si sus imágenes son totalmente opacas, no habrá ventaja al usar un sprite RLE, y probablemente será más rápido si usa la función blit(). Si su gráfico tiene áreas transparentes, un sprite RLE será casi siempre más rápido y pequeño que la función draw_sprite(). Los sprites compilados son por regla general un poco más rápidos que las otras funciones para imágenes transparentes y bastante más rápidas para gráficos opacos, pero esto puede variar. Se usan mejor con sprites pequeños en máquinas antiguas en modo-x, y podrían ser más lentos que blit() si los usas en modos de vídeo SVGA en un pentium (el gran tamaño de los sprites compilados afecta severamente la efectividad del cache).



Debe asegurarse que la lógica de su juego se actualiza a una velocidad constante, pero se salta el refresco de la pantalla de vez en cuando si el ordenador es muy lento. Esto puede hacerse instalando un temporizador que incrementará una variable global a la velocidad de la lógica de su juego, eg:

      volatile int speed_counter = 0;

      void increment_speed_counter()
      {
         speed_counter++;
      }

      END_OF_FUNCTION(increment_speed_counter)

      void play_the_game()
      {
         LOCK_VARIABLE(speed_counter);
         LOCK_FUNCTION(increment_speed_counter);

         install_int_ex(increment_speed_counter, BPS_TO_TIMER(60));

         while (!game_over) {
            while (speed_counter > 0) {
               update_game_logic();
               speed_counter--;
            }

            update_display();
         }
      }



Añada una llamada a save_bitmap() en alguna parte del código. Lea en la documentación de save_bitmap() una explicación de uno de los fallos más comunes al usar la función, y un poco de código fuente.



Llame srandom(time(NULL)) al principio de su programa, y entonces use random()%límite para obtener un número pseudo-aleatorio entre 0 y límite-1.



No hay necesidad de hacerlo. El enlazador sólo incluye partes de la biblioteca que realmente usa, por lo que si no llama ninguna de las rutinas de mapeado de texturas o reproducción de FLICs, éstas no se añadirán a su ejecutable. Esto no funciona perfectamente porque hay mucho código de Allegro que usa tabla de punteros a funciones que hacen que rutinas innecesarias se enlacen con tu código, por lo que la mayoría de las funciones de gráficos serán incluidas en cada ejecutable, pero he intentado reducir esto al mínimo. Mire allegro.txt para más información sobre métodos precisos para quitar algunos controladores de gráficos y sonido.



No. Creo que este tipo de soporte hardware sería mucho más util como parte de un API 3D, cosa que Allegro no es (y nunca será). Si quiere trabajar en esto, la biblioteca MESA (una implementación libre de OpenGL) es en mi opinión el lugar a mirar.

No obstante, si está interesado en usar OpenGL para los gráficos y Allegro para todo lo demas, puede probar varias librerías que extienden Allegro enlazadas desde http://www.allegro.cc/, como AllegroGL.



Ya existen varias muy buenas actualmente, por ejemplo el paquete JGMOD. Siga los enlaces de la página web de Allegro.cc (http://www.allegro.cc/). No se le permite que sugiera que alguna de las bibliotecas existentes sea incluída en Allegro, porque este tema ha sido discutido hasta la muerte en la lista de correo y ya estamos cansados de él.



Hay varios paquetes de soporte de red actualmente en desarrollo o flotando por la red, y en nuestra opinión este tipo de código es más útil como biblioteca externa que como parte de Allegro.



Unisys tiene la patente en el algoritmo de compresión LZW que es usado en el formato GIF. Queremos que Allegro sea totalmente libre y sin restricciones, lo que significa que no podemos incluir ningún código que haya que licenciar o pagar por derechos de autor.



Quizás. Intente aislar el fragmento de código mas pequeño que es capaz de reproducir el problema, y lo miraremos. Si puede mandarnos un programa de 10 líneas, lo solucionaremos. Probablemente podríamos solucionar uno de 100 líneas. 1000, y no tenemos posibilidad alguna :-)



Claro. Lea las condiciones giftware en readme.txt. No me importa lo que haga con él, yno hay problemas con el uso comercial.



¡Cuando este acabado! Los ánimos son bienvenidos, pero no tenemos fechas fijas de lanzamiento y no vamos a hacer una para usted. Tan pronto como este hecho, será liberado.



Grabber puede importarlas directamente de ficheros .fnt con formato GRX o BIOS, o puede dibujarlas usted en una imagen .pcx con cualquier programa. Busque en la página de Allegro una utilidad (ttf2pcx) que convierte fuentes Windows TrueType a formato .pcx.



En la página web de Allegro (http://alleg.sourceforge.net/) hay algunos enlaces. Puede usar los patches de la Gravis (formato .pat), o ficheros SoundFont 2.0 (.sf2), pero éstos últimos deberán ser convertidos a un fichero patches.dat con la utilidad pat2dat.



Necesita la utilidad de conversión makertf (http://www.giffer.com/public/win/pwflemgt/Files/MKRTF104.ZIP), y el compilador de Ayuda Windows (ftp://ftp.microsoft.com/Softlib/MSLFILES/HC505.EXE). Cree un directorio temporal, copie ahí el fichero allegro.txi del directorio allegro/docs, y ejecute los comandos makertf --no-warn allegro.txi -o allegro.rtf -J allegro.hpj seguido de hcp allegro.hpj. El segundo comando dará muchos errores, pero pueden ser ignorados con tranquilidad.



El fichero allegro.rtf puede ser leído directamente por Microsoft Word e impreso desde ahí, pero debería pinchar con el botón derecho y actualizar los cambos de la tabla de contenido e índice para que primero sean rellenados con datos correctos. Alternativamente puede instalar el pack TeX y usar los programas tex y dvips para contertir allegro.txi en formato Postscript.



Mire la página web de Allegro.cc, http://www.allegro.cc/. Si tiene algo que añadir a esto, ¡por favor, mándeme la URL!


¿Por qué se considera buena práctica en programación el definir PI como una constante en vez de usar el valor 3.141592 en mi código?

Es la forma mas simple de actualizar su programa, en caso de que haya que cambiar el valor de PI. Esto también hará su programa más portable a otros compiladores que usen otros valores de PI.



Un número de tarjetas gráficas tienen versiones erróneas o incompletas de la implementación VESA, y a menudo la función vsync() no está implementada. Para ver ejemplos de dibujado sin parpadeos, mire el código del juego demo, el cual usa varios métodos para dibujarse.



Si el código funciona sin optimizaciones, podría ser un fallo de su compilador. Puede intentar forzar al compilador a hacer lo que desea mediante el siguiente ejemplo:

      while (!key[KEY_ENTER])
         rest(0);
En este caso, no obstante, sería mejor usar readkey() en su lugar. O considerar actualizar o desactualizar su compilador.



Probablemente está declarando el uso de un dominio de nombres (namespace) antes de incluir las cabeceras de Allegro. Por ejemplo:

      #include <iostream>
      using namespace std;

      #include <allegro.h>

Mueva la declaración `using' después de las directivas `include' de los ficheros de cabecera de Allegro:

      #include <iostream>
      #include <allegro.h>

      using namespace std;



Mire en http://alleg.sourceforge.net/maillist.es.html.