Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Tutorial: Tetris en c++

Iniciado por Loover, 15 de Diciembre de 2008, 03:05:13 AM

« anterior - próximo »

Loover

Buenas,

Motivado después de ver yensdesign.com, me he animado yo también a esto de los tutoriales. He echado unas cuantas horas este fin de semana y he hecho un tutorial que explica paso a paso la creación de un clon del Tetris usando c++. El render está separado de la lógica del juego y usé simplemente primitivas de SDL (rectángulos). La idea es explicar la lógica y dejar de lado los detalles o efectos visuales.

Está en inglés, y fijo que con bastantes errores:
http://gametuto.com/tetris-tutorial-in-c-render-independent/

Espero que me echeis un cable. Echadle un vistazo y decidme si tengo muchos "english-gazaping" o si he cometido alguna locura en el código fuente. El código en sencillito, tienen algunas redundancias, pero hay que recordar que está dirigido a gente que empieza.

Me ayudaría muchísimo si linkarais el tutorial desde vuestros blogs, a ver si así llega a cuanta más gente mejor. ¡Gracias!

¡Espero que lo disfruteis!




Algunas locuras que podeis hacer modificando los defines:


#define BLOCK_SIZE 5 // Width and Height of each block of a
#define BOARD_WIDTH 90 // Board width in blocks
#define BOARD_HEIGHT 90 // Board height in blocks


Para el que quiera echarse una laaaaaaaaaaaaaarga partida :)
IndieLib Libreria 2.5d utilizando aceleración por hardware para la programación de juegos 2d.
Indie Rover The monkeys are reading!

Buffon

lo primero de todo: impresionante el tutorial y el trabajo que te ha debido llevar.

Segundo, me parece igualmente impresionante como de limpio tienes el código =)

Loover

#2
Gracias Buffon!

Es que los españoles siempre me mirais con buenos ojos. Si vieras las críticas que he recibido en gamedev :) http://www.gamedev.net/community/forums/topic.asp?topic_id=517905

Me han pillado usando 0 y 1 en vez de true / false y casi me cuelgan. ¡Pardiez que quisquillosos!

Por cierto, ¿podeis echarme un cable votándolo en las cajas de "Digg", "Reddit" y "Dzone" que aparecen al lado del título del tutorial? ¡Gracias!
IndieLib Libreria 2.5d utilizando aceleración por hardware para la programación de juegos 2d.
Indie Rover The monkeys are reading!

Capiflash

Me parece cojonudo el tutorial, enhorabuena. Menudas pasiones se pillan en gamedev xDDD si es que les tocaste la moral tio... a quien se le ocurre usar 1 y 0 cuando tienes los bool.... y declararte las variables de un for fuera del for... a la hoguera!!!  :P :P
Coñas aparte, imagino que te habra llevado tu  tiempo montar este tutorial, seguro que a mas de uno le sirves de inspiracion, enhorabuena de nuevo!!

josepzin

A ver malditos, ¡¡si poneis los tutoriales también en español!!

Loover

¡Gracias por los comentarios!

He actualizado el tutorial con varias mejoras de las que me fueron diciendo en gamedev, a ver si así se callan esos anglosajones canallas.
IndieLib Libreria 2.5d utilizando aceleración por hardware para la programación de juegos 2d.
Indie Rover The monkeys are reading!

Vicente

#6
Cita de: Loover en 15 de Diciembre de 2008, 10:09:13 PM
¡Gracias por los comentarios!

He actualizado el tutorial con varias mejoras de las que me fueron diciendo en gamedev, a ver si así se callan esos anglosajones canallas.

Una cosa, cuando te hacen el comentario del const-correct se refieren a los defines o a usar const en los parámetros de los métodos? (es que a mi me suena más que es lo segundo, pero tampoco sé mucho del tema...).

Por lo demás nada, enhorabuena por el curro! :)

Vicente

Loover

Pues esa misma pregunta me hago yo. Creo como tú que a lo segundo.

Creo que ya es tarde para mi acostumbrame a poner los const, aunque admito que tienen su valor.
IndieLib Libreria 2.5d utilizando aceleración por hardware para la programación de juegos 2d.
Indie Rover The monkeys are reading!

Buffon

Cita de: Loover en 16 de Diciembre de 2008, 12:09:00 AM
Pues esa misma pregunta me hago yo. Creo como tú que a lo segundo.

Creo que ya es tarde para mi acostumbrame a poner los const, aunque admito que tienen su valor.

cuando defines un contrato normalmente se define que parámetros son de entrada y cuales de entrada i/o salida, los que son de entrada sólo normalmente se usa const.

tmb puedes hacerlo más comodo y definirte unas macros

#define IN const
#define OUT

y luego en la declaración del contrato (que poco me gusta hablar desde el lado de un ingeniero <.<) usar IN y OUT.

----

Por otra parte, realmente tu código, a pesar de ser de los más limpios que he visto, no es eficiente 100%, pero tampoco es la finalidad del tutorial que creo que pasan por alto, se intenta enseñar una forma más que correcta de programar un tetris, que luego cada uno se lo depure como quiera.

Así que tampoco hagas mucho casos de comentarios de gente que ni se molesta en gastar 2 horas de su tiempo en enseñar al resto =)

Buen trabajo !


dinamic

Buen tutorial, siempre es honorable que la gente comparta conocimientos, por que hay quien sabe mucho y no publica nada
Haver cuando subo mi Web ...

Saludos
My nick is dinamic because the day I registered in went through a serious crisis of originality.

Buffon

Cita de: dinamic en 16 de Diciembre de 2008, 10:25:31 AM
Haver cuando subo mi Web ...

sin connotación negativa has de entenderme, pero a ver o haber, has de aprender !!!!

Loover

Me alegro que os guste. Y sí, siempre puede ser más eficiente. Hay muchas aproximaciones al problema. En cuanto a las rotaciones, intenté hacerlas lo más fáciles posibles, evitando el tener que rotar mediante alguna fución algebraica. De este modo, teniendo las rotaciones guardadas, es más rápido y sencillo de entender.

El Main Loop, lo habría hecho menos redundante. Y en algunas secciones habría escrito alguna línea de código acortada. Pero lo he hecho aposta para que sea más legible.

El resto de cosas de eficiencia que no haya visto... pues no las he visto :)
IndieLib Libreria 2.5d utilizando aceleración por hardware para la programación de juegos 2d.
Indie Rover The monkeys are reading!

[EX3]

José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

Loover

#13
¡Cazado! Jejeje. Ale, a votarlo :) http://meneame.net/story/tutorial-para-programar-clon-tetris-c-hora-para-linux-windows-ing

También he puesto cajas de Digg, Reddit y Dzone si podeis votarlo me haríais un favor. Y reseñas en todos vuestros blogs. Y poneros camisetas con la url.  Mejor aún, salid a la calle en pelotas con "Gametuto.com" tatuado en el pecho.

¡Gracias!
IndieLib Libreria 2.5d utilizando aceleración por hardware para la programación de juegos 2d.
Indie Rover The monkeys are reading!

[EX3]

Cita de: Loover en 16 de Diciembre de 2008, 01:50:27 PM
Y poneros camisetas con la url.  Mejor aún, salid a la calle en pelotas con "Gametuto.com" tatuado en el pecho.
Conformate con el meneo jajaja :P ;)

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt






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.