Programar un Tetris en C++
Este año en las practicas de la facultad nos ha tocado hacer algo distinto, nada de cubrimientos convexos, ni algoritmos recursivos…. sino algo útil y productivo, un tetris!
Esta programado en C++ usando las liberias SDL que están orientadas para la programacion de juegos. Hay una larga lista de títulos que usa esta liberia: desde el Quake , Unreal ,SinCity3000 o incluso lo últimos juegos basados en Internet como el Second Life han sido programados con SDL.
No es que sea una derroche de calidad gráfica, pero vale para echar un rato ;D
Controles:
Q – Girar pieza a la izquierda
W – Girar pieza a la derecha
ESC – Salir
Consideraciones:
Para ejecutarlo lo único que hay que hacer es descomprimir y abrir tetris.exe en Windows o tetris en Linux, más fácil imposible
- Cada vez que avanzamos de nivel se aumenta la velocidad de bajada de las fichas
- Cada 5 lineas completadas el juego mete una fila aleatoria en la parte de abajo para aumentar la dificultad.
Descarga:
Actualización
Como lo prometido es deuda, aqui os dejo el codigo fuente.
He dedicido liberarlo bajo licencia GPL. El proyecto esta hecho bajo Netbeans.
Tetris(source) – www.tirandodelcarro.com.tar
Espero que os sirva de ayuda
Esta entrada fue publicada el 01/06/2008 a las 22:15 y esta en la categoria de Sin categoría. Puedes seguir los comentarios de esta entrada a traves del RSS 2.0 feed. Puedes dejar un comentario, o trackback desde tu web.
11 Respuestas to “Programar un Tetris en C++”
Dejar un comentario
Debes autentificarte para comentar.
01/06/2008 a las 22:58
Albert dice:Ahí ahí dale duro al tetris XD
02/06/2008 a las 23:00
Francis dice:Hola, me gustaría que me explicases como compilaste el programa bajo windows con la SDL, ya que yo lo tengo para Linux y me gustaría compilarlo para windows.
04/06/2008 a las 23:01
david dice:Hay varias formas de compilarlo, yo personalmente tenia el proyecto en Netbeans ( seguir el manual ) y lo unico que hay que hacer es:
- Bajais las rutinas de (SDL-1.2.13-win32.zip) y copiamos el DLL en la carpeta lib del proyecto
- Bajamos el fichero (SDL_ttf-2.0.9-win32.zip) y hacemos los mismo, DLLs a nuestro directorio lib.
- Y por ultimo la mas dificil de encontrar, la libgfxdll.dll ,os pongo yo el enlace
Una vez copias todas esas liberias debeis decirle al Netbeans que las enlace con el exe. Boton derecho sobre el proyecto / linker / library / add library y vais añadiendolas
Por ultimo, si quereis ejecutar el .exe en otros pc que no sean el vuestro, teneis que incluir todas las DLL de lib y ademas la C:\cygwin\bin\cygwin1.dll
04/06/2008 a las 23:02
Francis dice:Bufffff, llevo toda la tarde intentando y nada :S, que torpe xD, me lo podrías compilar david ¿?, eso si después del plazo de entrega xD. ¿Estás estudiando en la ETSSIT?
04/06/2008 a las 23:03
david dice:jajajaja ,como quieras, yo de todas formas cuando pase el dia D colgare por aqui el codigo fuente.
Asi podeis criticar el codigo con fundamento! xD
Y si, si estoy estudiando en la ETSIIT
04/06/2008 a las 23:03
Francis dice:juas juas muchas gracias te paso mi correo y me agregas y hablamos xD:
[direccion de correo borrada para mayor privacidad ;D]
05/06/2008 a las 23:03
Pablo dice:Hola. Llevo toda la tarde intentandolo y no sale.
Cuando le doy a build me sigue dando el mismo fallo con la sdl.
Quizas no se linkear las bibliotecas… Me podrias ayudar?
X cierto yo tambien estoy en la ETSIIT
05/06/2008 a las 23:03
david dice:Si me dices el fallo exacto que te da lo mismo puedo guiarte pero… asi sin mas poco puedo hacer
06/06/2008 a las 23:04
Pablo dice:Pos el fallo es este:
Running “C:\cygwin\bin\make.exe -f Tetris-Makefile.mk CONF=Default” in C:\Users\Pablo\Documents\NetBeansProjects\Tetris
/usr/bin/make -f nbproject/Makefile-Default.mk SUBPROJECTS= .build-conf
make[1]: Entering directory `/cygdrive/c/Users/Pablo/Documents/NetBeansProjects/Tetris’
/usr/bin/make -f nbproject/Makefile-Default.mk dist/Default/Cygwin-Windows/tetris.exe
make[2]: Entering directory `/cygdrive/c/Users/Pablo/Documents/NetBeansProjects/Tetris’
mkdir -p build/Default/Cygwin-Windows/_ext/C_/Users/Pablo/Documents/NetBeansProjects/Tetris/../../../Desktop/tetris/src
g++ -c -g -I../../../Desktop/tetris/include -I../../../Desktop/tetris/lib -o build/Default/Cygwin-Windows/_ext/C_/Users/Pablo/Documents/NetBeansProjects/Tetris/../../../Desktop/tetris/src/cola.o ../../../Desktop/tetris/src/cola.cpp
mkdir -p build/Default/Cygwin-Windows/_ext/C_/Users/Pablo/Documents/NetBeansProjects/Tetris/../../../Desktop/tetris/src
g++ -c -g -I../../../Desktop/tetris/include -I../../../Desktop/tetris/lib -o build/Default/Cygwin-Windows/_ext/C_/Users/Pablo/Documents/NetBeansProjects/Tetris/../../../Desktop/tetris/src/graficos_adicional.o ../../../Desktop/tetris/src/graficos_adicional.cpp
In file included from ../../../Desktop/tetris/include/graficos_adicional.h:15,
from ../../../Desktop/tetris/src/graficos_adicional.cpp:10:
../../../Desktop/tetris/include/graficos.h:18:21: SDL/SDL.h: No such file or directory
../../../Desktop/tetris/include/graficos.h:19:35: SDL/SDL_gfxPrimitives.h: No such file or directory
../../../Desktop/tetris/include/graficos.h:20:25: SDL/SDL_ttf.h: No such file or directory
In file included from ../../../Desktop/tetris/include/graficos_adicional.h:15,
from ../../../Desktop/tetris/src/graficos_adicional.cpp:10:
../../../Desktop/tetris/include/graficos.h:34: error: syntax error before `*’
token
../../../Desktop/tetris/include/graficos.h:57: error: syntax error before `;’
token
../../../Desktop/tetris/include/graficos.h:71: error: syntax error before `;’
token
../../../Desktop/tetris/include/graficos.h:80: error: syntax error before `*’
token
../../../Desktop/tetris/include/graficos.h:166: error: parse error before `,’
token
../../../Desktop/tetris/include/graficos.h:176: error: `GRF_Imagen’ was not
declared in this scope
../../../Desktop/tetris/include/graficos.h:176: error: parse error before `)’
token
../../../Desktop/tetris/include/graficos.h:185: error: `GRF_Imagen’ was not
declared in this scope
../../../Desktop/tetris/include/graficos.h:185: error: parse error before `)’
token
../../../Desktop/tetris/include/graficos.h:193: error: `GRF_Imagen’ was not
declared in this scope
../../../Desktop/tetris/include/graficos.h:193: error: parse error before `)’
token
../../../Desktop/tetris/include/graficos.h:201: error: `GRF_Imagen’ was not
declared in this scope
../../../Desktop/tetris/include/graficos.h:201: error: parse error before `)’
token
../../../Desktop/tetris/include/graficos.h:213: error: parse error before `char
‘
../../../Desktop/tetris/include/graficos.h:223: error: type specifier omitted
for parameter `GRF_Imagen’
../../../Desktop/tetris/include/graficos.h:223: error: parse error before `)’
token
../../../Desktop/tetris/include/graficos.h:232: error: `GRF_Imagen’ was not
declared in this scope
../../../Desktop/tetris/include/graficos.h:232: error: parse error before `)’
token
../../../Desktop/tetris/include/graficos.h:259: error: `GRF_Imagen’ was not
declared in this scope
../../../Desktop/tetris/include/graficos.h:259: error: parse error before `,’
token
../../../Desktop/tetris/include/graficos.h:281: error: type specifier omitted
for parameter `GRF_Imagen’
../../../Desktop/tetris/include/graficos.h:281: error: parse error before `=’
token
../../../Desktop/tetris/include/graficos.h:298: error: type specifier omitted
for parameter `GRF_Imagen’
../../../Desktop/tetris/include/graficos.h:298: …
06/06/2008 a las 23:04
david dice:A simple vista veo que te esta dando el fallo al encontrar las:
SDL/SDL.h
SDL/SDL_gfxPrimitives.h
SDL/SDL_ttf.h
asegurate que tienes la Carpeta SDL en el proyecto junto con esas cabeceras.En caso de tenerlas pues debera de agregarlas al proyecto para eso como he comentado es :
Boton derecho sobre el proyecto / library / add library y vas añadiendo los archivos.
16/03/2011 a las 02:51
Samael dice:Muchas gracias justamente estoy haciendo un tetris y este me servirá como ejemplo.