2Pong DS 0.1 (mi primer homebrew de nds ^^)

Acabo de acabar mi primer homebrew que hago en C# para NDS (hasta ahora habia estado haciendo homebrew para gba en ASM :P).

Es como jugar a 2 pongs a la vez, tiene un contador de tiempo y las palas se van acercando cada vez mas para que se vaya haciendo mas dificil :)


descarga (codigo fuente añadido): http://etk.scener.org/projects/2PongDS%200.1.zip
imagen:
Imagen

no se si irá muy rapido o muy lento en la DS (la mia se rompió hace unas semanas -.-"), está probado en el desmume ^^

criticarlo y poned sugerencias plz [tadoramo]
ETkoala escribió:criticarlo y poned sugerencias plz smile_[tadoramo]


¡¡ES UNA BASURA!! ¡¡Vaya porquería de gráficos!! [qmparto].

Bueno, seriamente, en flash v5 + SC funciona correctamente. Quizás los palitos se mueven demasiado lentos porque en alguna ocasión me he despistado 1 segundo al comenzar la partida y no he podido llegar a la bola.
Aparte de eso, la detección de colisiones sólo se hace en los bordes interiores y no en los de arriba y abajo, así que aunque le des la pelota "traspasa" el palito.

Sugerencia, hacer que en una pantalla se acerquen los palitos y que en otra vayan reduciendo su tamaño. Poner power-ups que se pueden recoger con la pelota como aceleradores, disminución del tamaño de pelota y/o palito, etc.
También distintos modos de juego: un modo Yo vs Yo en el que controlas a ambos palitos por turnos cada uno en una pantalla (los palitos y la bola se comportan igual en ambas pantallas) y un modo 2 jugadores ya que virtualmente dispones de 2 crucetas.

Modo de juego héroe del patio en el que defiendes con movimientos giratorios a un palito con falda de los pelotazos de los palitos abusones del recreo. Si consiguen acertar x veces al palito con falda, este jamás volverá a confiar en tí y por tanto seguirás como palito-soltero otro día más.

Además de eso, un modo historia en el que el personaje descubre que su maestro y tutor legal es cruel e injustamente asesinado al equivocarse entregando el cambio por la compra de 3 cartones de vino que creía en oferta de 3x2 en el supermercado de debajo de casa, y para buscar venganza y algún medio de sostenimiento económico, se alista en el campeonato de su pueblo de lanzamiento de pelotitas blancas sobre fondo negro que patrocina una empresa que fabrica tizas, con lo cual todos los personajes van disfrazados de tizas (blancas, el pueblo está aislado en las montañas por una débil pero persistente nevada que dura ya 400 años y aún no han llegado las de color).
Además, intentará aprovechar el campeonato para demostrar que la suya es la más larga... historia de búsqueda de venganza y así impresionar a las mozas del pueblo para darle celos a la niña de hermosas hechuras que no le hace caso en los recreos y de ese modo ruín conseguir ir con ella a la verbena del próximo fin de semana para la que llevará el traje que su sensei escondió y que tras su muerte se ha encontrado en el fondo del armario mientras recogía calzoncillos y vestimentas del susodicho sensei para tirarlos a la basura.

Ale, ya tienes para entretenerte :Ð .

Saludos.
[qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto] [qmparto]

Por favor PON EL MODO HISTORIA!! [qmparto] [qmparto]

bueniiiisimo, gooler, recuerdame que te contrate para testear mis homebrews!

El juego ta mu chulo, se agradece el código fuente!
Te haré también unas observaciones muy básicas sobre el código. Deberías modularizarlo más. Sé que es un programa pequeño que no lo necesita, ¿pero por qué no usar Cargar(), Juego(), etc. en lugar de hacerlo todo monolítico?
Segundo, utiliza estructuras o clases para los elementos. Nuevamente aquí no tiene importancia porque es tremendamente simple, pero sin duda es mejor si lo haces de este modo:

typedef struct
{
   s16 x, y; // posición
} palito;

typedef struct
{
        s16 x, y; //posición
        u8 xd, yd; //desplazamiento
} bolita;


A primera vista es tonto, pero qué tal si le metes un parámetro velocidad a la estructura bolita y en el supuesto de usar powerups unos parámetros de ángulo de rebote a cada palito, un parámetro para indicar un modo especial, varios parámetros para indicar el tamaño, etc. Entonces empieza a cobrar más sentido tener estructuras (incluso clases y poder hacer palito1.move(x,y) en lugar de llamar a PA_SetSpriteXY... ) y comienzas a beneficiarte de su potencial.
Por otro lado, los segmentos de código "copiar-y-pegar" piden a gritos que hagas una función de ellos y que los elementos que varían en cada uno sean sus parámetros de entrada, ej. los códigos de pantalla 1 y pantalla 2 usando estructuras pueden quedarse en:



void Mover_Bola(bolita bola, palito pala1, palito pala2)
{
      //mover bola
      bola.x+=bola.xd;
      bola.y+=bola.yd;
      
      //colision
      if(bola.x==0)perder=1;
      if(bola.x==(separacion+13))if(bola.y>(pala1.y-8))if(bola.y<(pala1.y+32))bola.xd=1;
      if(bola.x>248)perder=2;
      if(bola.x==(256-separacion-21))if(bola.y>(pala2.y-8))if(bola.y<(pala2.y+32))bola.xd=-1;
      if(bola.y==0)bola.yd=1;
      if(bola.y>184)bola.yd=-1;
      
      //Mover tu pala
      if(pala1.y>0)pala1.y -= Pad.Held.Up;
      if(pala1.y<159)pala1.y += Pad.Held.Down;
      
      //Mover pala de la maquina (solo cuando la bola este en la parte derecha de la pantalla)
      if(bola.x>60)
      {
         calc_y=pala2.y+16-bola.y+4;
         if(calc_y>0)if(pala2.y>0)pala2.y--;
         if(calc_y<0)if(pala2.y<159)pala2.y++;
      }



o similar, a la que puedes llamar con Mover_Bola(bola_arriba, pala1_arriba, pala2_arriba) y Mover_Bola(bola_abajo, pala1_abajo, pala2_abajo)

Por último, y esto lo digo símplemente porque me lo recomendaron, supongo que no pasa nada por usarlo y que tú lo verás más habitual viniendo de ensamblador, pero a mí siempre me han desaconsejado el uso de gotos, en lugar de eso, haz una llamada a la función Juego() que sea la función principal en la que se llama a Mover_Bola y Mover_Palito y jau.

Espero que te sean de ayuda para el modo historia [qmparto]. Saludos.
Desde luego si algo me he cansado de oir en la facultad, (aparte de un webo de nombres recurrentes tipo Hanoi, Fibonacci, Euler, Newton, Dijkstra, etc..) es "prohibido goto", puesto que, como dice gooler, se rompe el secuenciamineto implícito del programa de forma un poco "descontrolada" (vamos, q no es lo mismo que un if o un while) y como resultado el código es más dificil de mantener, vamos yo no te lo prohibo XD es sólo que se desaconseja en lenguajes de alto nivel (hay veces que es incluso necesario usarlo)... aunque es muy normal si vienes de ensamblador [+risas]

En serio, esto no lo digo por ir de listo ni na por el estilo, sólo quiero compartir mi experiencia, y por intentar ayudar

si os interesa el tema, saco esto de la wikipedia: "Una crítica famosa a la sentencia en cuestión es una carta redactada por Edsger Dijkstra llamada "Go To Statement Considered Harmful" (Sentencia Go To Considerada Dañina). En ella Dijkstra argumenta que el uso irrestricto del GOTO debería ser prohibido en lenguajes de alto nivel ya que dificultan el análisis y la verificación de la corrección de los programas (especialmente aquellos que contienen ciclos). "

Yo lo que tengo que empezar es con el manejo de sprites... q no tengo ni idea aún, si alguien se ofrece pa echarme una mano..

(por cierto gooler, coincido en toda tu "critica") (lo pongo entre comillas pues pretende ser constructiva)

Ale, a seguir trasteando! (entre los sudokus, pong, dados, y demás, últimamente no paramos!)
Gooler escribió:muchisimas gracias en serio, eso era lo que intentaba hacer esta tarde pero no habia forma de que funcionara :O :O


voy a hacer lo que has dicho y mejorar algunas cosas ^^
si has programado en asembler para la DS eres mi idolo. [amor]

Otra cosa, cuando dices c# será C p C++ no? porque que yo sepa c# para DS no hay nada ¿no?

Por cierto, esta bien para ser tu primer homebrew.

Mi primer homebrew fue el Follarium xD
jandujar lo puedes rescatar por aki? XD tiene que estar gracioso
te refieres a mi follarium?


lo tienes aqui.

http://www.polarium-puzzles.com (sección pollarium)
el cacaolat ha matado a muchas NDS etkoala.
Tu tranquilo
¿Se te rompió la consola con un vaso de cacao? :Ð.

Por cierto, deberías enlazar el juego en el hilo de proyectos caseros, y tú también jandujar, que pareces nuevo leñe :-P.

Saludos.

Edito: No sé cómo no me he acordado antes, controlar los palitos con la táctil, si eres diestro el derecho y zurdo el izquierdo, mira que no usar la tactil [Alaa!]
a ver k os parece ahora, he mejorado los graficos y he puesto colisiones en los lados de los palos, pero no se pk no funciona mientras mueves el palito :S

http://etk.scener.org/projects/2PongDS0.1a.zip

Imagen
Yo admiro estas cosas por minimas que sean...

Me encanta ver como la gente se curra cosillas,

suerte con lo tuyo :)
ETkoala si haces lo que a dicho Gooler del "heroe del recreo" eres mi idolo xDDDDDD como me e reido

Bueno ahora enserio lo e probado y me va bien excepto x los fallos ya comentados
13 respuestas