Tercer capítulo de la guía “Quiero Ser Como Will (Wright)”

Tras tres meses desde el anterior capítulo de la guía “Quiero Ser Como Will (Wright)”, aquí está la tercera entrega de esta serie, que pretende ser un punto de partida para aquellos que quieren iniciarse en el mundo del desarrollo de videojuegos.

Siendo sincero, tengo que decir que no estoy completamente contento con el resultado, básicamente porque ahora tengo menos tiempo que cuando escribí el primer capítulo y no he podido repasar con calma todo (de hecho ni siquiera lo he releído). Por eso, agradecería a aquellos que lo lean los primeros que me avisen de cualquier tipo de problema o error que haya en la guía, para poder corregirlo rapidamente. En los dos capítulos anteriores, vuestra ayuda ha sido fundamental para dejarlas sin fallos.

Descargar el capítulo (pdf)

QSCWW – Capítulo 3
(es necesario completar el segundo capítulo antes que este para poder seguirlo)

Resumen del capítulo:

En este segundo capítulo, titulado “Colisiones”, continúa el desarrollo del juego de scroll vertical que se comenzaba en el anterior capítulo. Al final de este, se llegará a tener una primera versión “jugable” en la que se puede disparar contra los enemigos que avanzan en dirección opuesta.

Además, se descubrirá una sorpresa en la relación entre Olaya y Miguel, que sufre un cambio muy importante.

“Quiero Ser Como Will (Wright)”… ¿Qué es eso?

“Quiero Ser Como Will (Wright)” es una guía que trata de enseñar de una forma muy diferente a la habitual. Gracias a ella –y a tus ganas de aprender– podrás convertirte, sin aburrirte, en un desarrollador de videojuegos eficaz y con sentido común.

La guía se distancia muchas veces de los aspectos más técnicos o teóricos del desarrollo de videojuegos, y aprovecha su original formato para reflexionar y aconsejar sobre cuáles son las mejores prácticas a la hora de afrontar un proyecto de videojuego. Apuesta por la sencillez y la claridad del código, a la vez que propone un aprendizaje “paso a paso” al ir aumentando poco a poco la dificultad de los juegos desarrollados.

Capítulos publicados hasta el momento

15 thoughts on “Tercer capítulo de la guía “Quiero Ser Como Will (Wright)”

  1. Ya era hora… Yo ya sabes que de hacer juegos ni idea, pero lo leí mas que nada para ver como sigue la historia. Cada vez se pone más interesante, No me esperaba ese “giro” en la historia. jejeje

    Siento no poder ayudarte a corregir los fallos q tenga la parte del código.

  2. Tienes toda la razón Ferminho. El problema fue que, después de corregir un par de errores de ortografía (que Juan me restregó por la cara en privado), lo volví a subir corregido y parece que algo falló… Ahora debería funcionar bien la descarga.

  3. uuuuh! no vea que final más intrigante! Te deja algo que te reconcome por dentro que ni un capí­tulo de Lost. Por cierto, espero que ese revés del destino no haya sido para ahorrarte escribir más capí­tulos. Muy interesante, aunque más adelante me pondré con el código. Esperaré ansioso a la siguiente entrega! Un saludo

    PD: En el tí­tulo principal pone “Desbordamiento del buffer” y en el pie de página “Colisiones”, ¿error o a propósito?

  4. Te informo que he encontrado un fallo en la guía al intentar cambiar el gráfico del objeto enemigo, tienes que poner en gráficos el BITMAP del Gráfico de la nave Enemiga ya que es eso el gráfico y si lo he entendido bien lo demás que dices es solo para cargar el gráfico, ponersero al objeto y eliminarlo.
    Espero haberte ayudado en mejorar la guía.

  5. Me sale un error que dice:
    1> ‘Enemigo::Enemigo(const Enemigo &)’ : no se puede convertir el parámetro 1 de ‘BITMAP *’ a ‘const Enemigo &’
    1> Razón: no se puede realizar la conversión de ‘BITMAP *’ a ‘const Enemigo’
    1> Ningún constructor ha podido aceptar el tipo de origen o bien la resolución de sobrecarga del constructor era ambigua
    Mas adelante del tutorial comentas este problema pero a mi me sale mucho antes(estoy en la parte donde haces que aparezca enemigos de forma aleatoria) y aun así lo hice no me funciona.

  6. //Graficos
    BITMAP * Grafico_Jugador; //Grafico de la nave Jugador
    BITMAP * Grafico_Disparo; //Grafico de los disparos
    BITMAP * Grafico_Enemigo; //Grafico del enemigo

    //Objetos especiales
    Jugador *Puntero_Jugador; //Puntero al jugador
    Enemigo *Puntero_Enemigo; // Puntero al enemigo
    list Disparos; //Lista de punteros a los disparos
    list Enemigos; //lista de punteros a los enemigos

    void Crea_Enemigos(int Separacion)
    {
    if( rand()%Separacion == 1 )
    {
    Enemigos.push_back( new Enemigo(Grafico_Enemigo, rand()%Resolucion_X, 15) );
    }
    }

    void Actualizar()
    {
    Puntero_Jugador->Actualiza();
    Puntero_Enemigo->Actualiza();
    Crea_Enemigos(60);

    // Actualizar todos los enemigos
    list::iterator it_enemigos;
    for(it_enemigos = Enemigos.begin(); it_enemigos != Enemigos.end(); it_enemigos )
    {
    (*it_enemigos)->Actualiza();

    if((*it_enemigos)->Eliminar)
    {
    delete *it_enemigos;
    *it_enemigos = NULL;
    }
    }
    Yo creo que tiene el fallo tiene que estar aquí pero te envió los archivos por si no estuviera el fallo aquí.
    Cada vez estoy mas cerca del final

  7. Hola que Tal señor Miguel
    Bueno lo que pasa que yo desde pequeño he querido hacer videojuegos es lo que mas me gusta
    y de verdad le agradesco por estos tutoriales SOn muy buenos para comenzarte a meterte en el tema Muchas gracias
    Esperto algun dia ser mejor que usted
    Gracias No mames Es usted Genial
    EChenle cacumen

  8. oye no encuentro el error en este codigo me podrias ayudar

    Funcion inicial (estoy empesando)

    Program MIPONG;
    Global
    int RESOLUCION_X;
    int RESOLUCION_Y;
    BEGIN

    // INICIALIZAR ASPECTOS GRAFICOS

    set_title(“mi primer pong”); //pong game
    Full_screen = false; // No queremos que se ejecute a pantalla completa
    Graph_mode = mode_16bits; //el modo grafico sera de 16bits
    set_mode (m640x480); //resolucion de 640×480
    set_fps(60, 60/10);// Establecemos los fps que queremos

    RESOLUCION_X = 640; //Almacenamos en dos variables la resolucion
    RESOLUCION_Y = 480; // Para utilizarlo despues

    //ESCRIBIR INFORMACION SOBRE EL JUEGO EN PANTALLA
    write(0,10,10,0,”Mi Primer Pong,v. 0.01″);
    write(0,10,20,0,”Team Inforg”);
    write_int(0,300,10,1,&fps);

    //HEMOS TERMINADO DE INICIALIZAR, LANZAMOS EL BUCLE PRINCIPAL
    Controlador_Juego(); //Arrancamos el controlador del juego
    END

    //////////////////////////////////
    // controlador del juego (aqui se controla el juego)

    Process Controlador_Juego()
    BEGIN

    Loop //Bucle principal

    If(key(_esc)) //si se pulsa escape
    exit(0,0); //salir del juego
    END

    Frame; // Refrescar pantalla

    END // del loop

    END

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

*

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>