Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Para Un Juego De Naves

Iniciado por javiel, 22 de Marzo de 2004, 08:13:39 PM

« anterior - próximo »

javiel

 Hola a todos

Estoy trabajando en un juego de naves con SDL y C++. Quiero hacer algo, pero por ahora no se como, haber si me podéis ayudar dandome la idea de como implementarlo.

La idea es tener una nave que vaya dando vuelta y aparezca desde un lado de la pantalla y desaparezca por la otra. A ver si me explico mejor. La nave aparece por la derecha y va realizando vueltas en circulos hasta desaparecer.

Tengo 8 sprites de una nave en todas las direcciones. Norte, sur, este oeste, noreste, suroeste, etc... Como debería de implementar el código??

Tampoco es que me pongáis el código, sino tener la idea para poder desarrollarlo pq no se me ocurre como hacerlo

gracias a todos
uper-Tirititran: el superhéroe gaditano (http://www.super-tirititran.com)

AlexHdez

 Pues mira, la nave tienes dos coordenadas, "x" y "y". La pantalla tiene un ancho y un largo. La condicion seria que cuando las coordenadas de la nave en x sean mayores que el ancho de la pantalla (si la izquierda de la pantalla es 0 y la derecha es el ancho) redibuja la nave en la izquierda, y si es menor que 0, la redibujas en la derecha.

Un saludo

seryu

 yo calcularia el movimiento, bien espiral, o bien circular con desplazamiento horizontal (no se cual de ambos hacias referencia). Luego con la X,Y compararia las antiguas X,Y y segun la diferencia sabria si baja o sube de Y, o si se mueve a izqierda o derecha de X. Con eso ya se que sprite poner.

lo ideal seria tener el mismo sprite, y rotarlo segun el numero de grados qe lleve la nave.

tamat

 AlexHdez, permiteme que te corrija pero no es exactamente eso, lo que tiene que ahcer es que si la X es mayor que el ancho entonces la X vale cero y si la X es mejor que cero entonces la X vale el ancho de la pantalla. En realidad lo bueno es dejar un poco de margen por los lados, es decir, en lugar de decir si X > ancho_pantalla poner si X > ancho_pantalla + margen, el margen tiene que ser tan grande como el tamaño del sprite de la nave, de lo contrario la nave podría desaparecer estando todavía visible.

Varios apuntes más, no veo necesario tener 8 sprites con todos los angulos de la nave, es mucho mejor tener un solo sprite y rotarlo, así consigues todos los angulos posibles y da menos trabajo.

Has pensado en hacer el juego en 3D? es decir, juego de naves 2D pero pintado usando opengl, de ese modo irá muy rapido y podras hacer facilmente efectos como parallax o explosiones de particulas.
Por un stratos menos tenso

javiel

 Creo que no me he explicado bien.  No quiero que de vueltas paseando por la pantalla, lo que quiero que de vueltas fisicamente el avión. Así aparece por la derecha, hace un loop y sigue pa'lante hasta el final de la pantalla.

No se si me he explicado mejor.

Lo de rotar un sprite creo que no se puede hacer con SDL. Bueno, no lo se. He estado buscando y no he encontrado nada. Si me decoiis como se hace me hacéis un rey. La verdad que estaría muy bien

Con respecto a lo de Open GL, la verdad que me queda muy grande. Estoy empezando a programar videojuegos y no me quiero liar tanto.

Venga, gracias y un saludo

uper-Tirititran: el superhéroe gaditano (http://www.super-tirititran.com)

seryu

 sino usas una libreria adicional tendras que hacerlo tu. Es pura matematica.

Creo recordar que http://www.grinninglizard.com/kyra hacia ese tipo de cosas.

Mars Attacks

 Jejeje, no tiene mucho o nada que ver con el post, pero aquí tienes mi famoso "mataterrestres", con su código fuente y todo (opengl). No deberías ni siquiera usarlo como referencia, pero en fin, es algo parecido a lo que proponen por ahí arriba :)

http://www4.uji.es/~al024459/mataterrestres.rar

Saludines.

javiel

 tenéis alguna idea de como implementar una librería para rotar sprites???

He estado buscando en Kyra pero no he encontrado nada. Cual sería la idea para poder implementarla??

gracias
uper-Tirititran: el superhéroe gaditano (http://www.super-tirititran.com)

TheAzazel

 Veo que estas usando la libreria SDL... deberias pasarte por el apartado de librerias para SDL ya que amplian a casi cualquier tipo de funcionalidad, en concreto lo que buscas de rotaciones lo tienes aqui, el rotozoom se ha quedado anticuado y ahora lo continuan desarrollando en la gfx2 pero depende lo que quieras hacer te servira mejor uno u otro.

http://www.ferzkopp.net/~aschiffler/Softwa...-2.0/index.html
http://www.ferzkopp.net/~aschiffler/Softwa...zoom/index.html

tengo una libreria (CRM32Pro) que utiliza SDL que te vendria como anillo al dedo, la he utilizado en mis proyectos y tiene varios años de desarrollo y refinamiento.. a ver si me pongo con ella y la documento un poco para colgarla en la web y que todos los que quieran la usen... pero de momento... en esas dos direcciones tienes la clave para tus rotaciones :)

saludos

sés

 Con lo de rotar, espero que te refieras a 90º, porque cualquier otro ángulo, en 2D, queda como el culo ^_^

Si es por ahorrar gráficos, peudes hacer los de 0º a 90º y obtener el resto mediante rotaciones, pero no creo que merezca la pena.

Supongo que los gráficos de tus naves tendrán luces, sombras... y eso, al rotar... ^_^ queda fatal ver como cambian las sombras de sitio.

Yo haría todos los gráficos y me olvidaría de las rotaciones. Perderás algo de memoria, pero lo ganarás en velocidad y calidad.
Soy indeciso... ¿o no?

samsaga2

 Busca en la seccion librerias de la pagina web de las SDL (libsdl.org) y encontraras algunas librerias que podras usar para hacer un buen efecto de rotacion (si no recuerdo mal SDL_rotozoom era una).

AlexHdez

 
CitarAlexHdez, permiteme que te corrija pero no es exactamente eso, lo que tiene que ahcer es que si la X es mayor que el ancho entonces la X vale cero y si la X es mejor que cero entonces la X vale el ancho de la pantalla. En realidad lo bueno es dejar un poco de margen por los lados, es decir, en lugar de decir si X > ancho_pantalla poner si X > ancho_pantalla + margen, el margen tiene que ser tan grande como el tamaño del sprite de la nave, de lo contrario la nave podría desaparecer estando todavía visible.

Cuando dije redibuja a la izquierda, X era = 0, de todas formas lo de los margenes no lo habia pensado y tienes razon, tendria que dibujarse en una zona menor que 0 para que no se vea inicialmente y pueda aparecer poco a poco pq sino aparecera de golpe como por arte de magia, xD

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.