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 - SPARTANVS

#16
Programación gráfica / Eventos y SDL_LoadBMP en SDL
19 de Abril de 2008, 12:11:50 PM
Me has dado una respuesta rapida, bien explicada y precisa, PROFESIONAL.

muchas gracias ya me carga el grafico desde la carpeta.

respecto a los venetos, me interesa mas la segunda forma claro, pero no me funciona, aunque la verdad es que no he llamado la funcion SDL_PumpEvents(); ¿Cual es el prototipo? o mejor dicho..¿como funciona? ¿donde la llamo? ¿para que sirve? he buscado en google pero o encuentro paginas que no explican nada o estan en ingles.

MUCHAS GRACIAS

por cierto si lo consigo hacer (el juego) te lo dedicare por la ayuda.
#17
Programación gráfica / Eventos y SDL_LoadBMP en SDL
19 de Abril de 2008, 09:30:17 AM
Ola, tengo 2 problemas, empiezo por el que me parece mas importante.

Estoy haciendo un jueguecito, eres un cañoncito y disparas a los aviones enemigos mediante unas teclas disparas y mueves el cañon de derecha a izquierda. como estoy empezando con SDL, pues estoy haciendo mis pruebas con graficos simples y programas muy pequeñitos.

El problema que tengo con los eventos es que cuando pulsas una tecla si, la imagen se mueve, pero si la dejas pulsada no sigue miviendose. Imaginaos un jueguecito de aviones (como el 1942) en el que tubierais que pulsar la tecla de disparo acada medio segundo para que disparara continuamente, no creo que fuera muy divertido.

aqui esta el codigo que uso para los eventos:

while (SDL_PollEvent (&event))
{
if (event.type == SDL_KEYDOWN)
{
if (event.key.keysym.sym == SDLK_ESCAPE)
{
done = 1;
}

if (event.key.keysym.sym == SDLK_u)
{
x = x + 5;
}
}
}


tambien he porvado esta otra forma:

keys=SDL_GetKeyState(NULL);

if (keys[SDLK_u] == 1)
{
x = x + 0,1;
}



El segundo problema es que me gustaria para mi juego uqe estubiera dividido en distintas carpetas para las distintas imgenes de enemigos y niveles. Pero no se como cargar la imagen desde una carpeta, sino que pongo la imagen en el mismo directorio que el ejecutable y ya esta, pero no es lo que busco.

esta es la funcion que uso para cargar imagenes:



image = SDL_LoadBMP("grafico.bmp");
if (image == NULL)
{
printf("No se pudo cargar la imagen: %s\n", SDL_GetError());
}


image es simplemente la varibale que contiene la superficie. COmo vereis, entre comillas he puesto grafico.bmp, he porvado poner nombrecarpeta\grafico.bmp, pero no me lo caraga ya que esa barra la coge como una secuencia de escape.

gracias por todo.
PD: al que me contesto el hilo de las tablas, gracias tambien que no he podido conectarme y ahora no encuentro el hilo.
#18
General Programadores / Inicializar tablas
24 de Marzo de 2008, 09:31:06 PM
tengo la siguiente estructura:

struct habitacion
{
char text[150];
int norte;
int sur;
int este;
int oeste;
} habitaciones[50];


esa tabla "habitaciones quiero ponerla entera a 0, todos sus aparatados.

¿hay alguna forma a parte de inicializarlas todas 1 a 1 o esta?:

for (i=1; i<=50; i++)
{
habitaciones[i].text="x";
habitaciones[i].norte=0;
habitaciones[i].sur=0;
habitaciones[i].este=0;
habitaciones[i].oeste=0;
}



la mejor que me ha parecido es la del for, pero si hay una forma mas correcta o mas facil de inicializar pues mejor saberla.

GRACIAS
#19
Programación gráfica / Problemas controlando GluLookAt
03 de Febrero de 2008, 12:29:32 AM
Cita de: "Martinez"Pues para la programacion grafica un poquillo de coordenadas y operaciones con matrices no viene mal. Y saber trabajar con vectores

http://es.wikipedia.org/wiki/Trigonometr%C3%ADa#Razones_trigonom.C3.A9tricas
http://es.wikipedia.org/wiki/Coordenadas_cartesianas
http://es.wikipedia.org/wiki/Coordenadas_polares
http://es.wikipedia.org/wiki/Vector_%28geometr%C3%ADa%29


Mirate por encima eso.

ha se me olvidaba muchas gracias por los links  :P  :P
#20
Programación gráfica / Problemas controlando GluLookAt
03 de Febrero de 2008, 12:28:24 AM
Cita de: "Martinez"
Cita de: "tamat"«¡Y os aseguro que vendré a castigar con gran venganza y furiosa cólera a aquéllos que pretendan ser gamedevelopers y no conozcan las matemáticas! ¡Y tú sabrás que mi nombre es Carmack cuando mi venganza caiga sobre tí!»

Eso no es algo parecido al sermon de Jules Winnfield(Samuel L jackson) en Pulp Fiction???

Jeje muy buena frase, me encanta

si es verdad, pero por lo menos por mi parte se lo que tengo que aprender para adentrarme en programacion, pero no en las matematicas. No hay el tipico (o no lo encuentro) que te diga, pues se debe empezar por aqui, despues haces cuentas de esto despues lo otro....
#21
Programación gráfica / Problemas controlando GluLookAt
02 de Febrero de 2008, 09:24:24 PM
gracias por las respuestas, que bien explicado jeje. aunq1ue antes de hacer el programita voy a tener que investigar el sin/cos ese y los radianes. No es k no se me den las mates, es que estoy en un nivel bajito.

GRACIAS
#22
Programación gráfica / Problemas controlando GluLookAt
01 de Febrero de 2008, 09:37:44 PM
Ola, quiero hacer un programa en el que hay unas etetras y tu con la letra "d" rotas sobre ti mismo para la derecha y con la s a la izquierda. Lo hago moviendo el objetivo de GluLookAt alrededor de la camara. He hecho mis calculos y eso y aunque creo que es una manera muy novata de rotar sobre si mismo, tendria que funcianar. No se que falla en el programa, si mis calculos, si el mismo programa o lo que yo creo: los vectores de GluLookAt, que no se como controlarlos. (no quiero hacerlo con rotaciones a toda la escena, sino con GluLookAt).

El programa se ejecuta, y rota al principio bien, pero de repente cuando he rotado un poco se desvia y no sigue rotando bien.

#include <gl/glut.h>
#include <stdio.h>
#include <stdlib.h>

int i;

short cont=1;

float rotx=1.0;
float rotz=0.0;



void display (void)
{
glClear(GL_COLOR_BUFFER_BIT);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();

gluPerspective(20.0f, 1.0f, 1.0f, 10.0f);

gluLookAt(0.0, 10.0, 0.0,
rotx, 0.0, rotz,
0.0, 1.0, 0.0);

glMatrixMode(GL_MODELVIEW);
glLoadIdentity();


for (i=0; i<10; i++)
{
glPushMatrix();
glRotatef(i * 360 / 10, 0.0f, 1.0f, 0.0f);
glTranslatef(1.5f, 0.0f, 0.0f);
glutWireTeapot(0.25);
glPopMatrix();
}


glFlush();
glutSwapBuffers();
}



void teclado(unsigned char key, int x, int y)
{
switch (key)
{
case 27:
exit(0);
return;

case 'd':
if (rotz==0.0, rotx==1.0)
{
cont=1;
}

if (rotz==1.0, rotx==0.0)
{
cont=2;
}

if (rotz==0.0, rotx==-1.0)
{
cont=3;
}

if (rotz==-1.0, rotx==0.0)
{
cont=4;
}


switch (cont)
{
case 1:
rotx=rotx-0.01;
rotz=rotz+0.01;
break;

case 2:
rotx=rotx-0.01;
rotz=rotz-0.01;
break;

case 3:
rotx=rotx+0.01;
rotz=rotz-0.01;
break;

case 4:
rotx=rotx+0.01;
rotz=rotz+0.01;
break;
}

display();

return;

case 's':
if (rotz==0.0, rotx==1.0)
{
cont=1;
}

else if (rotz==1.0, rotx==0.0)
{
cont=2;
}

else if (rotz==0.0, rotx==-1.0)
{
cont=3;
}

else if (rotz==-1.0, rotx==0.0)
{
cont=4;
}


switch (cont)
{
case 1:
rotx=rotx+0.01;
rotz=rotz-0.01;
break;

case 2:
rotx=rotx+0.01;
rotz=rotz+0.01;
break;

case 3:
rotx=rotx-0.01;
rotz=rotz+0.01;
break;

case 4:
rotx=rotx-0.01;
rotz=rotz-0.01;
break;
}
display();
return;
}
}

void rescaler(GLsizei w, GLsizei h)
{
glMatrixMode (GL_PROJECTION);
glLoadIdentity ();
gluPerspective(90.0, (float)w/(float)h, 2.0, 7.0);
glViewport (0, 0, w, h);
glMatrixMode (GL_MODELVIEW);
}



void main(void)
{
glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGB);
glutInitWindowSize(800, 800);
glutInitWindowPosition(100, 100);
glutCreateWindow("Moviendo camara");
glutReshapeFunc(rescaler);
glutKeyboardFunc (teclado);

glutDisplayFunc(display);

glutMainLoop();
}





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.