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.
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.
Cawen… pues a mí no me abre el PDF, he probado a bajarlo varias veces, Adobe Reader y FoxIt Reader y nada :/
¿me voy a quedar con la intriga? :_(
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.
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?
Gracias Tamudo. Ya he corregido lo del título.
Y puedes estar más tranquilo, este no es el último capítulo xD.
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.
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.
No sé. Sin ver el código me resulta imposible saber lo que pasa… Puedes poner aquí el trozo de código que te da el error, o como tú veas.
//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
Ya te he respondido por email. ¡Ánimo!
Ya he terminado el tutorial y pienso terminar el juego.
Muchas gracias eres el mejor.
hola man quiero bajar el capitulo 2 y el 3 pero los enlaces no sirven sera que me los puedes pasar a este correo hardcap47@hotmail.com
Ya están arreglados los dos enlaces. Perdón por tenerlos tanto tiempo sin funcionar.
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
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