Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Problema con Dev-C++

Iniciado por Harko, 20 de Septiembre de 2006, 08:41:15 PM

« anterior - próximo »

Harko

Bueno, al final he intentado esto:
void BorraPunt(int n){
 SDL_Surface *num;
 //num = new SDL_Surface();
 if(n==1)
   //SDL_FillRect(CRM32Pro.screen,punt1[p1],SDL_MapRGB(CRM32Pro.screen->format,0,0,0));
   num = punt1[p1]->GetSurface();
 if(n==2)
   //SDL_FillRect(CRM32Pro.screen,punt2[p2],SDL_MapRGB(CRM32Pro.screen->format,0,0,0));
   num = punt2[p2]->GetSurface();
 SDL_FillRect(num,NULL,SDL_MapRGB(num->format,0,0,0));
 SDL_BlitSurface(num,NULL,CRM32Pro.screen,NULL);
 CRM32Pro.FreeSurface(num);
}


Pero sigue sin funcionar :(. Basicamente crea la superficie de la puntuacion que le digan, luego la rellena de negro e intento pegarla en la superficie screen. Pero no me hace ni caso.

Los FillRect de los ifs son un intento fallido de colar un CSprite como un SDL_Rect, no hagais mucho caso :P.

Harko.
-=Harko´s Blog=-
Fui el primer civil en probar el "Lord of Creatures" y ademas usaban mis cascos. :D

-=Portfolio=-

Alguno de mis juegos:
-=Feed The Frog=-

Neroncity

Saracchini

Papito,tienes que usar un SDL_Rect para definir donde el placar ira ser deseñado.

segun la definicion del SDL de SDL_BlitSurface:


Citar
This performs a fast blit from the source surface to the destination surface.
Only the position is used in the dstrect (the width and height are ignored).
If either srcrect or dstrect are NULL, the entire surface (src or dst) is copied.
The final blit rectangle is saved in dstrect after all clipping is performed (srcrect is not modified).
The blit function should not be called on a locked surface.


define la posicion X e Y pela estructura SDL_rect e poñe qualquier valor en width and heigth.

E pudes usar Get_Surface para obter las informacions de la superficie utilzando os atributos de la classe SDL_surface que son:


Citar
flags - Surface flags
format - Pixel format
w, h  - Width and height of the surface
pitch - Length of a surface scanline in bytes
pixels - Pointer to the actual pixel data
clip_rect -  surface clip rectangle

Harko

JAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJA JAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJA

¡¡Lo sabia!! ¡¡No podia ser de otra manera!! Por supuesto, se me olvidaban las leyes de Murphy. Si un problema lleva mucho tiempo tocandote las narices la solucion sera la chorrada mas grande que te puedas imaginar. Al menos esta vez no ha sido un punto y coma o un parentesis XD.

Ya he solucionado el problema de los numeros y el que la pelota deje pegotes al rebotar mucho con una única linea de codigo :D

SDL_FillRect(CRM32Pro.screen,NULL,SDL_MapRGB(CRM32Pro.screen->format,0,0,0));

Esto puesto antes de los ->Draw() y todo arreglado, lo dicho una chorrada. Solo hacia falta borrar la pantalla :lol:  :P

Bueno, mañana me metere con las colisiones con la barra, creo que no tendre tantos problemas :D

Harko.

PD: Gracias Saracchini, me apuntare eso seguro que me viene bien ;)
-=Harko´s Blog=-
Fui el primer civil en probar el "Lord of Creatures" y ademas usaban mis cascos. :D

-=Portfolio=-

Alguno de mis juegos:
-=Feed The Frog=-

Neroncity

TheAzazel

bueno...borrar cada frame la pantalla no es muy optimo pero por ahora lo puedes hacer asi, cuando vayas mas avanzando, si quieres nos ponemos y te ayudo a implementar una solucion mas optima vale? Que dicho sea de paso, si el fondo es negro, lo podras solucionar con un SDL_FillRect() pasandole el rect que ocupo tu sprite, las coordenadas x e y serian las del sprite(con GetX() y GetY()) y el tamaño del rect te lo daria  GetOffset(int *,int*), asi que ya tienes la forma de hacerlo mucho mas optimo :)

ya sabes, cuelga una demo en cuanto puedas :)

Saludos

Harko

El Dev me dice que esa instruccion (GetOffset) existe, pero en la documentacion no aparece (solo aparece un GetOffset(), sin parametros, en CTile). Me puedes decir como funciona?

Harko.
-=Harko´s Blog=-
Fui el primer civil en probar el "Lord of Creatures" y ademas usaban mis cascos. :D

-=Portfolio=-

Alguno de mis juegos:
-=Feed The Frog=-

Neroncity

TheAzazel

Efectivamente, en la doc no aparece porque no pense que fuera util pero veo que si podria ser, hasta ahora estaba para que el EditorDPF lo utilizara pero vamos, si vas a CRM32Pro.h donde define la clase CSprite veras que estan al final y pone algo asi como "solo para EditorDPF", pues bien, voy a agregarlas a la doc y fuera, por el momento te digo como funciona:

int x,y:

mySprite->GetOffset(&x,&y);

y de ese modo, en x e y tendras el size del sprite :)

Saludos






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.