Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Menu

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.

Mostrar Mensajes Menu

Mensajes - _16BITGuy_

#16
creo que me lo descargo al instalarlo(el VC++ Express), de todas formas ese sdk creo k hace falta para compilar cualquier cosa, y lo demas si lo puedo compilar, solo esto no.
#17
Buenas, estoy intentando hacer funcioanr la libreria en este IDE ya que me interesa usarlo aqui por serme mas comodo.

El caso es que al compilar me tira el siguente error:

LINK : fatal error LNK1104: no se puede abrir el archivo 'uuid.lib'

He hecho los siguientes paso, aver si algo he hecho mal:

1.Descargo y extraigo el rar preparado para vs, lo extraigo en C:\CRM32Pro.

2.Creo una Variable de entorno de usuario CRM32Pro con la ruta C:\CRM32Pro

3.En VC++ voy a herramientas>opciones>proyectos y soluciones>Directorios de VC++ y añado $(CRM32Pro) en la seccion de ejecutables, inclusion y bibliotecas.

4.Creo un proyecto de codigo existente para compilar el BasicCode.cpp

5.Añado las librerias al proyecto: CRM32Pro.lib y sdlmainIO.lib(tambien probe con sdlmain.lib)

El archivo BasicCode lo tuve que modificar, al parecer VC++ no tiene el archivo windows.h

Quedo asi:


// ---Includes---
#include <CRM32Pro.h>


// ---Prototypes---
void PrintHelp();

// ---Defines---
#define EXAMPLE_VERSION "Example 1: basic code"
#define GFX_RESOURCE "data/gfx.dpf"     // DPF with graphic resources
#define AUDIO_RESOURCE "data/audio.dpf" // DPF with sound resources

// -------------MAIN FUNCTION----------------
int main(int argc,char *argv[])
{
  Uint8       done = 0;
  SDL_Event   event;
  Uint32      cCursor;     // Cursor ID
  SDL_Surface*sBg;         // Background surface
  int         hndClick;    // Click sound

  // -Print help on a window-
  PrintHelp();

  // -Log system initialize-  
  ILogSystem.Init("BasicCode.log",LOG_FILE,LOG_NORMAL,EXAMPLE_VERSION);

  // -CRM32Pro and SDL initialize-
  if(CRM32Pro.Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_TIMER) < 0)
  {
     ILogSystem.Msg(LOG_NORMAL," · [LOG] - Couldn´t initialize CRM32Pro: %s\n",SDL_GetError());
     return 1;
  }

  // -Desired config-
  CRM32Pro.Config.Title = EXAMPLE_VERSION;
  CRM32Pro.Config.Icon = IImage->Load(GFX_RESOURCE,"icono");
  CRM32Pro.Config.bMTFriendly = 1;

  // -Graphics system initialize-  
  if(!CRM32Pro.SetVideoMode())
  {
     CRM32Pro.Quit();
     return 1;
  }
  ICursor->Init();
  cCursor = ICursor->Load(GFX_RESOURCE,"cursor");
  ICursor->Select(cCursor);

  // -Sound system initialize-  
  if(!ISoundFX->Init(44100, AUDIO_S16, 2, 4096))
  {
     ILogSystem.Msg(LOG_NORMAL," · [LOG Warning] - Couldn´t init sound system: %s\n",SDL_GetError());
  }

  // -Time system initialize-
  ITimeSystem->Init();
  ITimeSystem->SetRate(0,20);  // Optional: desired Rendering and Logic Frame Rate

  // -Your code...-
  // Load resources
  hndClick = ISoundFX->SoundLoad(AUDIO_RESOURCE,"click");
  sBg = IImage->Load(GFX_RESOURCE,"background");
  SDL_BlitSurface(sBg,NULL,CRM32Pro.screen,NULL);

  // -Main loop-
  while(!done)
  {
     // Main system update and events loop
     while(CRM32Pro.Update(&event))
     {
        switch(event.type)
        {
           case SDL_MOUSEBUTTONDOWN:
              ISoundFX->SoundPlay(1,hndClick,0);
              break;
           case SDL_QUIT:
              done = 1;
              break;
           case SDL_KEYDOWN:
  if(event.key.keysym.sym == SDLK_ESCAPE) done = 1;
  break;
default:
              break;
        }
     }
  }

  // -Print useful information-
  ITimeSystem->Info();
  ICursor->Info();
  CRM32Pro.VideoInfo();
  CRM32Pro.AudioInfo();

  // -Free resources and exit-
  ISoundFX->SoundFree(hndClick);
  CRM32Pro.FreeSurface(sBg);
  ICursor->Delete(cCursor);
  CRM32Pro.Quit();
  return 0;
}

// --------------------Help STUFF------------------------
// -Print help-
void PrintHelp()
{
char *sMsg;

// Create the message
sMsg = new char[1024];
   strcpy(sMsg,"-----------------------------------------------------------\n");
strcat(sMsg,"                     ");
strcat(sMsg,EXAMPLE_VERSION);
strcat(sMsg,"\n-----------------------------------------------------------\n\n");
strcat(sMsg," Press [ESCAPE] key to exit.\n");
strcat(sMsg,"\n To see further information, open 'BasicCode.log'.\n");
strcat(sMsg,"\n");

// Display the message
   
   #ifdef _LINUX
 printf("CRM32Pro SDK - HelpScreen\n%s",sMsg);
   #endif

// Free the message
delete sMsg;
}
¿Que puede ser?
#18
General Programadores / Problemas usando allegro
21 de Febrero de 2007, 08:27:55 PM
Muy buenas.

Tengo un problema con la libreria, o con el compilador, o ocn el ide..¿?

El caso es que programaba con DevC++ y el allegro instalado automaticamente con un DevPack, entonces por una recomendacion instale codeblocks, para probarlo y se me ocurrio de descargarle e instalarle el Allegro de la misma manera, (este tiene como el DevC++ de instalar librerias con devpacks) entocnes, ahora me ocurre una cosa, desde que hice esto, no puedo compilar la libreria junto a mi programa, osea, antes compilaba mi programa y ocupaba unos 840 KB por que incluia dentro allegro, para ser ejecutado. Ahora tengo que poner un archivo .dll me parece, para que el ejecutable funcione, puesto que solo ocupa 23KB va sin allegro. ¿Como puedo hacerlo como lo tenia antes?, estos son los parametros de linea de comandos del compilador/linker.

Compilador: -DALLEGRO_STATICLINK
Linker: -lalleg_s -lkernel32 -luser32 -lgdi32 -lcomdlg32 -lole32 -ldinput -lddraw -ldxguid -lwinmm -ldsound

Un saludo!
#19
Inteligencia Artificial / Problemas con allegro
21 de Febrero de 2007, 08:27:17 PM
joer me e ekivocado esto no va aqui, ni puedo borrarlo,

Lo siento :S
#20
Inteligencia Artificial / Problemas con allegro
21 de Febrero de 2007, 08:15:31 PM
Muy buenas.

Tengo un problema con la libreria, o con el compilador, o ocn el ide..¿?

El caso es que programaba con DevC++ y el allegro instalado automaticamente con un DevPack, entonces por una recomendacion instale codeblocks, para probarlo y se me ocurrio de descargarle e instalarle el Allegro de la misma manera, (este tiene como el DevC++ de instalar librerias con devpacks) entocnes, ahora me ocurre una cosa, desde que hice esto, no puedo compilar la libreria junto a mi programa, osea, antes compilaba mi programa y ocupaba unos 840 KB por que incluia dentro allegro, para ser ejecutado. Ahora tengo que poner un archivo .dll me parece, para que el ejecutable funcione, puesto que solo ocupa 23KB va sin allegro. ¿Como puedo hacerlo como lo tenia antes?, estos son los parametros de linea de comandos del compilador/linker.

Compilador: -DALLEGRO_STATICLINK
Linker: -lalleg_s -lkernel32 -luser32 -lgdi32 -lcomdlg32 -lole32 -ldinput -lddraw -ldxguid -lwinmm -ldsound

Un saludo!
#21
Inteligencia Artificial / Problemas raros con una IA muy basica
19 de Febrero de 2007, 10:07:52 PM
ya me di cuenta del fallo, la verdad es que e estado conjfundido con una cosa, la velocidad nunca habia aumentado, me parecia Asi, por que a la velocidad como normalmente se movia parecia la programada, y luego aumentaba, en realidad cuando aumentaba iba a su velocidad, el probrema era de reduccion de velocidad, por algun problema de la condicion en los if que le puse, creo que es por que la bola nunca llega a estar dentro del espacio del eje "y" que ocupa la raqueta en ciertos momentos y cuando esta se para, cuando no lo esta sigue y cuando esta de nuevo vuelve a pararse, produciendo esa reduccion de velocidad.
Tendre que pensar en otra formula, otra condicion me refiero, para que esto no ocurra.

Sobre lo de "debugear" o depurar, uso el DevC++ como IDE y lleva un depurador, pero este no me deja ver las variables cuando el programa esta en ejecucion, sino que solo me deja verlo cuando llego a un "break point" de esos, o pongo el modo paso por paso,pero asi no podre ver lo que realmente pasa por que no puedo ir jugando, o ir moviendo las raquetas para que vea que ocurre en cada caso. ¿Como podira hacer esto?
#22
Inteligencia Artificial / Problemas raros con una IA muy basica
16 de Febrero de 2007, 10:55:51 PM
dejo el codigo entero del procedimiento logico del juego, esto se ejecuta por cada ciclo del juego.

void logica()
{
   if(eJuego.j1puntos == 10 || eJuego.j2puntos == 10)
   {
       if(key[KEY_ENTER])eJuego.estado = EST_TERMINANDO;
       return;
   }
   
   if(eJuego.estado == EST_ESPERANDO_RESPUESTA)
   {
       if(key[KEY_SPACE])
       {
          sBola.vx = -4;
          sBola.vy = 0;
          eJuego.estado = EST_JUGANDO;
       }
   }
   if(eJuego.estado == EST_PUNTO_J1)
   {
       if(key[KEY_ENTER])
       {
           eJuego.estado = EST_JUGANDO;
           sBola.vx = -4;
           sBola.vy = 0;
       }
   }
   if(eJuego.estado == EST_PUNTO_J2)
   {
       if(key[KEY_ENTER])
       {
           eJuego.estado = EST_JUGANDO;
           sBola.vx = 4;
           sBola.vy = 0;
       }
   }
           
             
   //Recojer pulsaciones de teclado y ajustar la velocidad segun cada caso
   if(key[KEY_W]) sPaddle1.vy = -2;    
   if(key[KEY_S]) sPaddle1.vy = 2;
   if(eJuego.modo == MOD_DOSJUG)
   {
       if(key[KEY_O]) sPaddle2.vy = -2;
       if(key[KEY_L]) sPaddle2.vy = 2;
   }
   
   //INTELIGENCIA ARTIFICIAL DE CPU
   if(eJuego.modo == MOD_JUGVSCPU)//Si estamos en modo contra cpu
   {
       if((sBola.y > (sPaddle2.y + bPaddle->h)) && ((sBola.x + bBola->w) > SCREEN_W/3))
       {
           sPaddle2.vy = 2;
       }
       else if((sBola.y < sPaddle2.y) && ((sBola.x + bBola->w) > SCREEN_W/3))
       {
           sPaddle2.vy = -2;
       }
       else if((sBola.y > sPaddle2.y) && (sBola.y < (sPaddle2.y + bPaddle->h)) && ((sBola.x + bBola->w) > SCREEN_W/3))
       {
           sPaddle2.vy = 0;
       }
   }
   

   //Crear Movimiento
   //-Calcular vx y vy
   //--Para los Paddles(Raquetas)
   if(sPaddle1.y > (SCREEN_H - bPaddle->h) || sPaddle1.y < 0){
      if(sPaddle1.y > (SCREEN_H - bPaddle->h))
      {
           if(sPaddle1.vy == 2) sPaddle1.vy = 0;
      }
      if(sPaddle1.y < 0)
      {
           if(sPaddle1.vy == -2) sPaddle1.vy = 0;
      }
       
   }
   
   if(sPaddle2.y > (SCREEN_H - bPaddle->h) && sPaddle2.y < 0){
      if(sPaddle2.y > (SCREEN_H - bPaddle->h))
      {
           if(sPaddle2.vy == 2) sPaddle2.vy = 0;
      }
      if(sPaddle1.y < 0)
      {
           if(sPaddle2.vy == -2) sPaddle2.vy = 0;
      }
       
   }    
   
   //--Para la bola
   
   //--bola--eje x
   if(sBola.x >= SCREEN_W)
   {
       eJuego.j2puntos = eJuego.j2puntos + 1;
       eJuego.estado = EST_PUNTO_J1;
       nuevo_saque();
   }
   if(sBola.x + bBola->w <= 0)
   {
       eJuego.j1puntos = eJuego.j1puntos + 1;
       eJuego.estado = EST_PUNTO_J2;
       nuevo_saque();
   }
   //--bola--eje y
   if(sBola.y >= SCREEN_H - bBola->h)
   {
        sBola.vy = sBola.vy * -1;
   }
   if(sBola.y <= 0)
   {
        sBola.vy = sBola.vy * -1;
           
   }
   //COLISIONES
   //-Choque bola con Paddle 1
   
   
   if(sBola.x >= sPaddle1.x && sBola.x <= sPaddle1.x + bPaddle->w && sBola.y + bBola->h >= sPaddle1.y && sBola.y <= sPaddle1.y + bPaddle->h)
   {
       if(sBola.toque == 0)
       {
           sBola.vx = sBola.vx * -1;
           if(sBola.y + bBola->h >= sPaddle1.y && sBola.y <= sPaddle1.y + (bPaddle->h/3))
           {
               sBola.vy = -1;
           }
           if(sBola.y + bBola->h >= sPaddle1.y + (bPaddle->h/3) && sBola.y <= sPaddle1.y + 2*(bPaddle->h))
           {
               sBola.vy = 0;
           }
           if(sBola.y + bBola->h >= sPaddle1.y + 2*(bPaddle->h/3) && sBola.y <= sPaddle1.y + bPaddle->h)
           {
               sBola.vy = 1;
           }
           sBola.toque = 1;
       }
   }
   else{
       sBola.toque = 0;
   }
   //-Choque bola con Paddle 2
   
   if(sBola.x + bBola->w >= sPaddle2.x && sBola.x <= sPaddle2.x + bPaddle->w && sBola.y + bBola->h >= sPaddle2.y && sBola.y <= sPaddle2.y + bPaddle->h)
   {
       if(sBola.toque == 0)
       {
           sBola.vx = sBola.vx * -1;
           if(sBola.y + bBola->h >= sPaddle2.y && sBola.y <= sPaddle2.y + (bPaddle->h/3))
           {
               sBola.vy = -1;
           }
           if(sBola.y + bBola->h >= sPaddle2.y + (bPaddle->h/3) && sBola.y <= sPaddle2.y + 2*(bPaddle->h))
           {
               sBola.vy = 0;
           }
           if(sBola.y + bBola->h >= sPaddle2.y + 2*(bPaddle->h/3) && sBola.y <= sPaddle2.y + bPaddle->h)
           {
               sBola.vy = 1;
           }
           sBola.toque = 1;
       }
   }
   else{
       sBola.toque = 0;
   }
   //-Aplicar la velocidad a la posicion
   // Movemos la pelota con la velocidades vx y vy calculadas
   sBola.y = sBola.y + sBola.vy;
   sBola.x = sBola.x + sBola.vx;
   //--Para las raquetas
   if(sPaddle2.vy > 2) sPaddle2.vy = 2;
   if(sPaddle2.vy < -2) sPaddle2.vy = -2;
   sPaddle1.y = sPaddle1.y + sPaddle1.vy;
   sPaddle2.y = sPaddle2.y + sPaddle2.vy;
   //Reestableciendo el dato de velocidad una vez movidos los objetos
   /*
       Esto hace que al soltar los botones de direccion de las raquetas,
       las raquetas se paren, de lo contrario la velocidad segura siendo
       la misma aun soltando los botones
   */
       
   sPaddle1.vy = 0;
   sPaddle2.vy = 0;
   
   
   
}


Fijaros que hago una limitacion de la velocidad antes de aplicarsela a la posición de la paleta (sPaddle2.y), y nisiquiera eso funciona, da que pensar...
#23
Inteligencia Artificial / Problemas raros con una IA muy basica
16 de Febrero de 2007, 09:42:41 PM
pues no me resuelve el problema :S, de todas formas si hubiese sido de algo de eso, no hubiera aumentado la velocidad puesto k lo k se hace si se cumple la condicion es uan asignacion de velocidad no un aumento.

Un Saludo!
#24
Inteligencia Artificial / Problemas raros con una IA muy basica
16 de Febrero de 2007, 06:58:32 PM
Muy buenas, al fin me presento aqui en stratos, soy _16BITGuy_ como ya pone el nick xD tengo 16 años y me tendreis por aqui durante un buen rato jeje, bueno, el caso de por que posteo esto es que tengo un problema raro..

vereis, estoy desarrollando mi primer videojuego desde cero, con C y Allegro, un pong bastante simplon, pero para empezar me sirve ¿no? :P

El caso es que he desarrollado una IA, bueno casi ni es ia, es muy muy basica, simplemente se comprueba la posicion de la bola en eje y y si esta mas arriba que la raqueta del cpu, se asigna una velocidad vertical de -2, y si es al contrario (esta mas abajo) pues 2, en el caso de poder colisionar con la raqueta pues la velocidad es 0, de esta forma:
(sBola es la estructura de tipo OBJETO que contiene informacion de la bola, que es x,y,vx,vy. sPaddle1 y sPaddle2 son de las raquetas, de tipo OBJETO tambien, siendo sPaddle2 la estructura de la raqueta que controla el CPU)

//--Inteligencia artificial de CPU
   if(eJuego.modo == MOD_JUGVSCPU)//Si estamos en modo contra cpu
   {
       if(sBola.y > sPaddle2.y + bPaddle->h && sBola.x + bBola->w > SCREEN_W/3)
       {
           sPaddle2.vy = 2;
       }
       if(sBola.y < sPaddle2.y && sBola.x + bBola->w > SCREEN_W/3)
       {
           sPaddle2.vy = -2;
       }
       if(sBola.y > sPaddle2.y && sBola.y < sPaddle2.y + bPaddle->h && sBola.x + bBola->w > SCREEN_W/3)
       {
           sPaddle2.vy = 0;
       }
   }

Esto, pienso yo que deberia hacerlo sin problemas, pero lo que ocurre, es que cuando la raqueta de la cpu no llega a la bola, esta aumenta de velocidad, y yo para nada he programado eso! ¿como es posible?
Ojalá podais ayudarme, un saludo!





Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.