tirandodelcarro

Por un infierno más digno…
Flower

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 :D

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

Tetris(Windows)

Tetris(Linux)

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

11 Respuestas to “Programar un Tetris en C++”

  1. 01/06/2008 a las 22:58

    Albert dice:

    Ahí ahí dale duro al tetris XD

  2. 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.

  3. 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

  4. 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?

  5. 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 :P

  6. 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]

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

  8. 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 :D

  9. 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: …

  10. 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.

  11. 16/03/2011 a las 02:51

    Samael dice:

    Muchas gracias justamente estoy haciendo un tetris y este me servirá como ejemplo.

Dejar un comentario

Debes autentificarte para comentar.