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

Temas - _16BITGuy_

#1
Me explico, tengo 2 fondos dibujandose a la vez y despues de estos se dibujan una nave y un texto. La nave esta puesto con aquello del canal alpha (aun no se muy bien como va), y resulta que la primera vez que se dibuja esto perfecto, pero los siguientes frames el area que seria transparente del archivo de imagen de la nave, no se vuelve a dibujar, de modo que es como si la nave se llevara un trozo del fondo, es como si este trozo no volviera a dibujarse siquiera al borrar la pantalla de color negro.
Este es el codigo del dibujo:

void dibujado(int bLogicUpdate)
{
SDL_FillRect(CRM32Pro.screen,
        &CRM32Pro.screen->clip_rect,
SDL_MapRGB(CRM32Pro.screen->format,0,0,0));
scrollLoop(bg,&sclBg);
scrollLoop(stars,&sclStars);
nave->Draw(CRM32Pro.screen);
fnt->PutString(CRM32Pro.screen,20,20,"Space Mercenaries \"Demo\"",NULL);

}

Los ajustes de la pantalla y demas estan asi:

CRM32Pro.Config.VideoWidth = 640;
CRM32Pro.Config.VideoHeight = 480;
CRM32Pro.Config.VideoBPP = 32;
CRM32Pro.Config.VideoAccel = ACCEL_HARDSMOOTH;
CRM32Pro.Config.VideoWindow = 1;
CRM32Pro.Config.Title = "Naves";
CRM32Pro.SetVideoMode();
CRM32Pro.SetRenderCallback(dibujado);


¿A que puede deberse esto?
#2
CRM32Pro / Fuentes.
28 de Mayo de 2007, 06:38:54 PM
Buenas,
¿alguen sabe, por que usando photoshop para hacer las fuentes, las letras al estar puestas con suavizado(enfocado) al cargarlas con CRM32Pro las acepta, y sin el suavizado no?
la imagen guarda los margenes y la separacion de las letras que pone en el manual.
#3
General Programadores / ¿Alguen sabe a que se debe esto?
25 de Mayo de 2007, 06:42:55 PM
Hola, buenas.

Estaba programando en vs y me encontre con un fallo un tanto extraño, vereis, tengo este codigo:


#include"cabecero.h"
char BG_PATH[128] = "data\\background\\";

int main(int argc, char *argv[])
{
// Declarando variables necesarias
SDL_Event   event;
SDL_Rect sclView;
int done = 0;
SDL_Surface *bg;
int camMoves[3];

// Configurando CRM32Pro, definiendo titulo de ventana tamaño y
// profundidad de color.
CRM32Pro.Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_TIMER);
CRM32Pro.Config.VideoWidth = 640;
CRM32Pro.Config.VideoHeight = 480;
CRM32Pro.Config.VideoBPP = 32;
CRM32Pro.Config.Title = "Naves";
CRM32Pro.SetVideoMode();

// Carga de imagenes
bg = IImage->LoadBMP(strcat(BG_PATH,"cleanspace.bmp"));

   for(int i = 0;i<=3;i++)
{
camMoves[i] = 0;
}

sclView.x = 0; sclView.y = 0;
sclView.w = CRM32Pro.screen->w; sclView.h = CRM32Pro.screen->h;



while(!done)
{
//Leer la entrada de teclado
while(CRM32Pro.Update(&event))
{
 switch(event.type)
 {
      case SDL_QUIT:
         done = 1;
         break;
  case SDL_KEYDOWN:
     if(event.key.keysym.sym == SDLK_ESCAPE) done = 1;
 if(event.key.keysym.sym == SDLK_UP) camMoves[MOVE_U] = 1;
 if(event.key.keysym.sym == SDLK_DOWN) camMoves[MOVE_D] = 1;
 if(event.key.keysym.sym == SDLK_LEFT) camMoves[MOVE_L] = 1;
 if(event.key.keysym.sym == SDLK_RIGHT) camMoves[MOVE_R] = 1;
 break;
  case SDL_KEYUP:
 if(event.key.keysym.sym == SDLK_UP) camMoves[MOVE_U] = 0;
 if(event.key.keysym.sym == SDLK_DOWN) camMoves[MOVE_D] = 0;
 if(event.key.keysym.sym == SDLK_LEFT) camMoves[MOVE_L] = 0;
 if(event.key.keysym.sym == SDLK_RIGHT) camMoves[MOVE_R] = 0;
  default:
                 break;
         }
       }


if(camMoves[MOVE_L])
{
sclView.x -= 2;
}
if(camMoves[MOVE_R])
{
sclView.x += 2;
}
if(camMoves[MOVE_U])
{
sclView.y -= 2;
}
if(camMoves[MOVE_D])
{
sclView.y += 2;
}

scroll(bg,&sclView);
}
SDL_FreeSurface(bg);
CRM32Pro.Quit();
return 0;
}

Pues resulta que al compilar todo va bien, el programa funciona bien, pero al cerrarlo sale este error:

Run-Time Check Failure #2 - Stack around the variable 'camMoves' was corrupted.

No se por que ocurre esto, luego probe a compilar este mismo codigo en DevC++ (MinGW), y no ocurre nada malo.

¿Alguen sabe por que?

Un Saludo!
#4
CRM32Pro / Resolucion
24 de Mayo de 2007, 07:37:08 PM
Hola amigos,
me preguntaba... ¿Como puedo cambiar la resolucion de la pantalla, que le estoy dando vueltas a la ayuda de referencia y no lo encuentro? Debo usar SDL, solo, para ello?
...una pregunta un poco tonta ahora que lo pienso bien, pero de todas formas, me gustaria saber si hay forma desde CRM32Pro.
#5
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?
#6
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!
#7
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!
#8
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.