Bueno lo que vamos a hacer ahora es empezar a vestir toda nuestra obligación con las rutinas que va
necesitando.
Vamos a ver primero la rutina de chequeo teclas de sonido para que podamos comprender cómo van a funcionar
el resto de las rutinas vamos a ir a al final donde tenemos chequeo teclas de sonido si no lo tienen
escríbalo y lo que vamos a hacer aquí es simplemente una detección de teclado es muy fácil lo único
que tienen que hacer es colocar dos instrucciones IFF.
Por ejemplo si el teclado se ha pulsado si en el teclado se ha pulsado la tecla delete muy bien lo que
voy a hacer es y voy a preguntar si música por qué voy a preguntar esto porque la tecla Lilit me sirve
para parar el sonido pero también para restablecerlo entonces voy a tener que preguntar si la variable
música estuvo fours.
Si esto es que se viene escuchando y la voy a tener que parar si efforts significa que yo había parado
previamente la música y la tengo que restaurar.
Entonces si música es igual a Tru entonces Ocean's que se esté ejecutando le mueva música igual a fouls
paró la música y cómo paró la música Golum MIDI pase esta instrucción es una instrucción de Allegro
que me permite parar la música que esté ejecutando me para todos los midis todos los Midis que yo estoy
ejecutando para los detiene.
Si tengo más de uno no es el caso.
Primero no queda bien que haya más de un médico corriendo al mismo tiempo me va a generar mucho ruido
y si efforts algún MIDI resume y a música la vuelvo a poner en Tru se entiende si la música estaba corriendo
le pongo fouls y la paro.
Si la música no estaba corriendo re resumo la música o sea el vuelve a ejecutarse y le pongo un Tru
muy bien.
Ahora ese es UNIV vamos al de los efectos.
Cuál era la tecla Tab.
La tecla tab.
Yo la pulse aquí voy a hacer lo mismo.
Si efectos es igual a Tru entonces efectos es igual a Ford lo paró el efecto.
Le cambio el Estado al efecto y cómo se para esto.
No hay forma de pararlo desde una instrucción de Allegro.
Aquí voy a tener que usar el & perdón Ehlers y voy a tener que cambiar el valor.
Aquí está mal escrito muy bien qué voy a hacer voy a jugar con un valor nada más con los efectos.
Por qué hago esto.
Porque los efectos no es algo que esté ejecutándose constantemente.
Cuando la pelota rebota en ese momento se escucha un sonido y nada más.
En cambio la música sí la tengo que pasar y resumir el efecto una vez que Sethi esta variable cada vez
que vaya a ejecutar un efecto va a preguntar si el efecto está habilitado.
Si efectos es igual a troba ejecutar el sonido si lo va a pasar de largo.
Muy bien esto es la función la rutina chequeó teclas de sonido.
Ahora vamos a inicial e inicial hizo nivel qué es lo que ejecuta aquí arriba va a iniciar el nivel cuando
inicia el nivel va a ser una serie de cosas con la música con los valores vamos a saber muy bien cómo
es esto inicial hizo el nivel ejecuta primero un método llamado configuran level confitura level.
Muy bien.
Luego tenemos un retomã juego.
Ahora les voy a explicar qué es cada cosa si efectos o sea si tengo habilitado los efectos voy a ejecutar
un sonido de inicio de nivel que ya lo tenemos cargado con valores de volumen y demás de descarga de
esos valores muy bien.
Esto va a ser lo siguiente inicial hizo a mi nivel va a configurar mi nivel en configuras Leyva el vamos
a ver que lo que hace configura Leuven es mi arma mi pantalla de ladrillos me arma Mis Ladrillos vas
a ver de acuerdo al level va a mover al vector que hemos creado en ladrillos al al vector.
Este mapa le va a mover el mapa de ladrillos que todavía no lo hemos creado y lo vamos a crear en este
mismo capítulo.
Ok por ahora estamos creando la rutina ahora vamos a crear nuestro mapa de ladrillos muy bien configurable
y vamos a crear configurarla y ver muy bien qué vamos a hacer en configuras Leiber.
Vamos a hacer una instrucción for vamos a hacer una instrucción for donde quizás les cuesta entender
esto porque todavía no hemos creado nuestro mapa pero yo voy a escribir esto voy a crear el mapa y lo
van a entender perfecto cada mapa de ladrillos cada vector donde se va a guardar la información de ladrillos
tiene 63 elementos lo que hace esto es va a recorrer nuestro mapa original de ladrillos de cada nivel
y me lo va a mover al vector map.
Yo voy a escribir y lo vamos a ver.
No se preocupen si ahora no entiendan si Leiber es igual a 1 entonces mapa de la posición y recuerden
que estoy en un foro me va a grabar el ladrillo que se encuentre en mi Vector Pant 1 que todavía no
lo hemos creado dentro del mapa.
Voy a hacer lo imposible por que esto lo entiendan por ahora vamos copiando nada más.
Lo van a entender se los prometo y aquí aquí va a cambiar la cosa.
Si la vela es mayor a 2 lo que voy a hacer voy a grabar en mapa no voy a copiar en mapa ningún elemento
de otro vector porque no existe.
Yo voy a crear dos pantallas nada más la pantalla 1 y la pantalla 2 y voy a dibujar los ladrillos después
voy a hacer que el sistema vaya creando ladrillos de manera aleatoria de distintos colores y en distintas
posiciones.
Cómo se hace eso con la instrucción Randa la instrucción RAM me devuelve un número random aleatorio
de 0 a 9 o de 0 a 8 o mejor dicho y ese Rann me va a llenar de manera aleatoria en el foro va a recorrer
las 63 posiciones de mapa y me va a llenar.
Con eso vamos a nuestra área vamos a nuestra área donde está mapa y ahora lo que les voy a mostrar es
precisamente los mapas que fueron creados para nuestro juego.
Muy bien fíjense por qué esto les va a dar una idea de cómo funciona el sistema.
Vamos a crear un vector llamado Pant 1 que si se acuerdan lo acabamos de mencionar.
De 63 posiciones y le vamos a decir imagínense que ahora vamos a dibujar 7 filas 7 filas y columnas
y le vamos a decir que su primer elemento es un ladrillo de color uno de tipo 1 y que me va a mostrar
aquí me va a mostrar el ladrillo 1 el ladrillo uno vendrá con un color determinado.
El sistema cuando detecte un número 1 Bas va a ir a buscar el Big Mac que corresponda y me va a mostrar
ese ladrillo en esa posición.
La primer fila va a ser con ladrillos de todo el mismo color tenemos son nueve.
Aquí tenemos 7 8 9.
Ahora luego vamos a tener ladrillos de tipo 2 luego tipo 3 luego tipo 4 perdón 5 en la coma final está
bien porque los tiene que enlazar muy bien y aquí cerramos nuestro lector esto que ven aquí es la pantalla
vamos a minimizar esto es esto son siete filas por nueve columnas y esto es lo que está mostrando es
en la posición uno todos ladrillos de tipo uno que es el amarillo creo de dos todos tipo 2 de la 3 4
en las 5 y así sucesivamente.
Eso es lo que va a dibujar la primer pantalla el primer Leuven.
Por qué acá me muestra todo diferente.
Estoy en el level 18 estoy en el level 18 entonces aquí ya me hace cosas random fijese fíjese acá están
viendo en tiempo real cómo ha pasado lo de Random me dibujó colores diferentes ladrillo ubicado de manera
diferente esto es lo que hace a partir de la pantalla número dos.
Entonces ahora vamos a dibujar nuestra pantalla número dos dijimos que la 1 y la 2 la dibujamos nosotros
y a partir de la 2.
El sistema llaves y llaves muy bien ahora y aquí yo empiezo a jugar un poquito ustedes hagan como quieran
no tiene que ser como yo lo estoy haciendo aquí inserto en un cero significa que voy a insertar un espacio
puedo perdón coma le voy agregando acá un tipo 2 un tipo 3 3 3 1 1 espacios le dan la forma que ustedes
quieran quieren dibujar algo en concreto una araña o lo que sea lo pueden hacer respetando una matriz
que sería como si fuera una matriz de puntos de 9 por 7 y ahí hacen el dibujo y le ponen los colores
que ustedes quieren.
Esto lo vamos a copiar y pegar para que se repita.
No quiero ahora perder tiempo con esto.
Tenemos perfecto siete filas por nueve columnas lo cerramos aquí y aquí fíjense tenemos dos pantallas
uno y dos de aquí vamos a tener que corregir esto muy bien pero yo no puedo jugar en Pant 1 y 2 por
qué.
Porque son definiciones esto contiene la definición de cómo va a ser mi pantalla inicial si yo empiezo
a borrar ladrillos de aquí cuando quiero empezar de nuevo el juego yo tengo que guardar esto inalterable
por eso yo muevo todos los ladrillos que hay en Pantuflo los muevo en un vector auxiliar llamado mapa
todo va a ir transcurriendo dentro del mapa.
Cuando yo colisione con mi bola en un ladrillo y mapa tenga este dibujo supongamos que tiene este dibujo
estamos en el nivel número 1 mapa tiene esto la bola va y borra este ladrillo en mapa va a haber un
cero aquí le va a poner cero qué.
Para que cuando vuelva a mostrar la imagen aquí no muestra ningún ladrillo pero si yo no uso un auxiliar
y empiezo a borrar aquí cuando quiera arrancar nuevamente el nivel no voy a tener una definición limpia.
Entonces todo el trabajo sucio lo vamos a hacer en mapa.
Eso es lo que yo les explicaba aquí qué es lo que se configura a nivel significa que arranca una pantalla
nueva arma me mapa armarme mapa con los ladrillos que tengan que iniciar el nivel y es por eso que hace
un favor recorriendo 63 posiciones de qué de esto de las definiciones que hemos creado y cuando no hay
definiciones porque estoy por encima del nivel 2 aquí hace un juego me dibuja cualquier cosa inclusive
a partir del nivel 2 me empieza a incluir el ladrillo número 8 que no lo tengo en las definiciones anteriores
que es el ladrillo duro que no se va a romper.
Entonces eso me da una sensación de que voy avanzando de que voy a complejizando el juego por qué porque
mi ladrillo duro recién aparece en la pantalla número 3 se entiende lo que es configura Leiber.
Bueno ahora vamos a seguir con inicializar Leiber porque tenemos retomã juego una vez que configura
mi Leiber tiene que inicializar variables retomã juego lo que hace inicializar unas variables para comenzar
a jugar en un nuevo nivel y retomã juego lo que hace es posiciona mi base en la posición 2:55 porque
todo lo que quedó antes la base quizás yo terminé en una esquina la bola terminó en otro.
Cuando rompió el último ladrillo ahí terminó el juego terminó Leiber y tengo que ir a inicializar Leiber
fijense terminé de romper el último ladrillo de la pantalla 1.
El sistema tiene que ir a armar la pantalla 2 por lo cual tiene que ir a mover aquí mapa me mueve la
pantalla 2 inicial hizo el Leiber para que para poner la base nuevamente en el centro la bola donde
corresponde y ejecutar sonidos.
Qué sé yo vamos a ver qué hacemos con base X tenemos 2:55 bola X 2:55 2 85 bola y griega es taba ubicada
en las 6:50.
Entonces ya la bola la ubicó abajo de todo arriba de la base arriba de la base la base ya tiene una
posición que era 6 80 algo así en la posición y la bola lo ubica 30 pixeles más a la derecha del borde
izquierdo entonces la ubica más o menos más o menos en el centro.
Si ustedes quieren ser muy detallistas y ubicarlo en el centro calculan con la medida de la base lo
dividen por dos y a partir de ahí ubican la bola.
Recuerden que la bola tiene 10 pixeles de ancho así que ese dato también tiene que jugar en el cálculo.
Bueno muy bien en juego es igual a Fool's porque cuando arranque una nueva pantalla no arranca funcionando
ya cuando terminé una pantalla y arranca el segundo nivel.
Vuelve todo como estaba la base abajo la bola arriba yo puedo mover la bola y la base van a ver como
como se hace eso para arrancar el nivel desde donde yo quiera.
La base no siempre es el centro sino siempre va a dibujar el mismo recorrido la bola voy a poder mover
mi base y cuando esté listo le doy a la tecla espacio y va a comenzar el segundo nivel.
El segundo nivel o el nivel que se luego nuevo nivel igual.
Fouls porque porque yo ya vengo con Tru por eso entré acá por eso entré en configurar Leuven porque
yo ya entré con esta variable entró ahí detectó el sistema que tengo que crear un nuevo nivel y ahora
la tengo que poner en Fors para que no siga entrando en loop.
Armando siempre el nivel vamos a juega a jugar.
Vamos a ver dónde está el nuevo nivel aquí nuevo nivel.
Voy a hacer todo el juego chequear pantallas chequear teclas sonido mover la bola hasta que sea un nuevo
nivel.
Cuándo es un nuevo nivel.
Me caigo de este wey.
Vengo aquí arriba inicializar a nivel nuevamente inicializar a nivel hago lo que estamos hablando y
tengo que volver esa variable.
Tengo que volver esa variable a ponerla en fouls porque si no siempre se me va a caer nunca va a entrar
en este Guayo nuevamente tiene tengo que inicializar la comfort ahí si va a entrar y va a jugar y va
a desarrollar la segunda pantalla.
El segundo nivel o el nivel que sea bueno entonces nuevo nivel igual.
Fors eso es lo que tenemos en retomas juego eso es lo que tenemos en retomas juego.
Luego tenemos un arma pantalla porque voy a tener que armar pantalla yo ya tengo ladrillos nuevos ya
tengo mi base puesta en una posición nueva.
Entonces lo que voy a tener que hacer es volver a dibujar la pantalla para que se armen de vuelta los
ladrillos del segundo nivel y la base se muestre donde se tiene que mostrar.
Si yo no hubiera incluido arma o pantalla no hubiera pasado nada y no me hubiera dado cuenta de nada.
Siempre tengo que ir armo pantallas armo pantalla es la rutina que más vamos a ejecutar dentro del juego.
Por qué.
Porque cada cambio que yo haga a nivel gráfico tengo que ir a armar la pantalla muy bien.
Ya tenemos configuras Leiber ya tenemos retomas juego y ahora lo que vamos a hacer es la rutina más
linda de todas que es dibujar ladrillo.
Vamos a muestro ladrillos vamos a hacer un baile muestro ladrillos.
Bueno espero que se esté entendiendo si no comprenden.
Yo quiero que hagan preguntas que los videos se pueden ver en vezes y si lo ven ene veces y no lo comprenden.
Por favor consulten.
Hay un yo respondo rapidisimo siempre me llega el mensaje al móvil yo me fijo si es una explicación
muy extensa por ahí trato de estar cerca de una pecé.
Tengo horarios libres en mi trabajo horario almuerzo puedo aprovechar ese espacio para contestarles.
Nunca dejen de preguntar no se queden con un mal sabor.
Traten de aprender esto y si no lo saben me preguntan y vamos a terminar entendiendo todo.
Bueno vamos a mostrar ladrillos vamos a crear unas variables de posición van a ver después que vamos
a hacer con cada una de ellas.
Vamos a crear una variable de número de ladrillo que le vamos a inicializar en cero.
Vamos a crear una variable llamada Laud.
Vamos a ver qué vamos a hacer con esto.
Vamos a crear un vector un vector como como los que habíamos creado.
Vamos a crear una fila que va a ser de siete elementos y le vamos a grabar los valores.
Esto lo vamos a hacer por cuestiones obvias de parametrización.
Vamos a ponerle recuerden que yo ya se los había mostrado las posiciones donde nuestros ladrillos se
van a mostrar para no tener que hacer cálculos.
Ya son valores fijos.
Yo siempre voy a mostrar los ladrillos en esas posiciones.
Entonces para no tener que hacer cálculos con esto directamente los tengo un vector de siete posiciones
y cuando tenga que mostrar algo en la fila 7 yo ya vengo aquí ya sé en qué coordenadas se lo voy a mostrar
muy bien.
Voy a hacer un favor de un entero.
Vamos a definirlo y va a ser cero le voy a decir que mientras y sea menor a 63 y por supuesto le vamos
a colocar el integrador le vamos a sumar uno vamos a abrir aquí y aquí lo que va a hacer es mostrarnos
todos los ladrillos de mapa en pantalla cómo se hace esto bueno esto es muy simple por ahora no lo vamos
a hacer es ir grabando estos ladrillos en buffer.
Por qué Mafer por qué después.
Rafa es lo que voy a terminar mostrando en pantalla.
No voy a ser una Hermo pantalla por cada ladrillo que incluso porque eso me va a demorar mucho.
Yo voy a incluir todos mis ladrillos en buffer y una vez que tengo todos mis ladrillos en buffer buffer
lo voy a mostrar por pantalla.
Entonces primero voy a preguntar si mapa y si el elemento de mapa es mayor a cero.
Porque yo voy a mostrar cuando haya un ladrillo para mostrar cuando yo ya lo rompí.
Ya hay un y hay un espacio no tengo mostrar un espacio el espacio no se muestra solamente voy a mostrar
los ladrillos en las posiciones que han quedado.
Entonces lo que voy a hacer en la variable helada voy a grabar el valor que haya un mapa en mapa y uno
no significa que tengo que mostrar el ladrillo número uno.
Si hay un cero no voy a entrar en esta rutina porque yo aquí ya lo filtre si hay un 2 la va a tener
dos y yo después voy a hacer un switch van a ver la instrucción para que dependiendo el número de ladrillos
yo tengo que mostrar un Big Mac diferente cada ladrillo con su color tiene un Big Mac diferentes yo
no uso un solo bitmap entonces ahora lo que voy a hacer es capturar la coordenada C como le había dicho
de dónde de la fila de este vector.
Voy a extraer voy a extraer el número entero de una división de qué división de la división de ahí dividió
9.
Vamos a explicarlo.
Nosotros tenemos filas de nueve columnas.
Si yo estoy en el elemento 35 ahí no me dice que fila es me dice que estoy en el elemento 35.
Entonces yo voy a tener que traer la fila del elemento 35 dividido 9 y la parte entera y me va a decir
cuál es la fila realmente de mi mapa en la que tengo que ir a fijarme.
El ladrillo me va a convertir y griega en una fila de ladrillos entonces aquí hay un pequeño error.
Fieles fila y Akiba corchetes porque es un vector antes de compilar y que me da error vamos a corregirlo
muy bien.
Nosotros no tenemos una matriz creada.
Fíjense que yo no crea un vector bidireccional con filas y columnas yo creé un solo vector es mucho
más simple de 63 posiciones un largo número de 63 posiciones eso yo lo tengo que convertir en siete
filas de nueve columnas cada uno.
Entonces eso es lo que estoy extrayendo aquí.
Muy bien lo que viene ahora es la columna la columna que lo hemos creado acá.
La variable cool que es un entero este es un cálculo un poquito más rebuscado.
Ustedes copian no como yo lo estoy poniendo es igual ahí menos vamos a abrir tres paréntesis el número
entero.
Vamos a convertira entero que vamos a convertir y Barrán nueve.
Acá no hay mucho misterio lo mismo que estamos haciendo aquí es lo mismo que estamos haciendo hoy y
además una vez que lo convierta lo va a multiplicar por nueve y le va a sumar 1
esto me va a devolver la columna por qué.
Porque si estoy en la columna 35 en realidad yo quiero saber si es la columna 1 o 2 3 de qué fila de
la fila 5 por ejemplo.
Entonces este cálculo me va a devolver me va a devolver la columna en la que estoy posicionado en mis
siete filas yo parto siempre un número recuerdan del 0 al 62 y eso lo voy a tener que convertir visualmente
en filas y columnas.
Este es el cálculo no hay otro cálculo yo ya lo he depurado mucho este algoritmo.
Y ahora vamos a ver la posición sé y en la posición x en la posición x perdón en la posición x.
Si vamos a hablar de pixeles aquí ya no vamos a hablar de columnas vamos a hablar de pixeles.
Entonces por qué Thérèse por qué 13 es lo que me mire mi borde izquierdo de pantalla del recuadro Halo
a la posición de la bola que la voy a calcular en filas y columnas le voy a tener que calcular el borde
izquierdo del recuadro y le voy a decir que es al menos uno por 65.
Fíjense que hice aquí primero yo convertí en filas y columnas Fila 3 columna o Choc.
Si yo tuviera que hacer al revés ahora y representar eso en una posición X lo que tengo que hacer es
yo ya sé que cada ladrillo mío mide esto 65 incluyendo el espacio de al lado el espacio en blanco que
dejo entre ladrillos ese espacio lo multiplico por la columna menos 1 y le sumo 13 y me da la posición
exacta donde está cada ladrillo donde tiene que mostrar cada ladrillo no la bola.
No estoy hablando de bolas yo dije bola y estoy hablando de ladrillos entonces yo ya tengo la posición
x y la posición sé por qué no la tengo ya la tengo la tengo aquí 20:50.
Estas son las posiciones en las que me va a mostrar cada ladrillo una vez que yo ya tengo X sé del entorno
gráfico a dónde me va a tener que mostrar cada ladrillo ahí yo hago un switch hago un switch que delata
Laud es esto porque ahora yo ya tengo dónde tengo que mostrar el ladrillo pero lo que no tengo es yo
tengo qué número de ladrillo eso era en base al número de ladrillos y es el 1 2 el 3 voy a tener que
mostrarlo a todos en la misma posición y aquí voy a poner un cais uno los puntos y aquí voy a ponerle
que hagan drow Brith de que en Mafer del uno coma X coma hiriera Breck si no ponen el Breck hacen un
desastre por una limitación del C y C++ se sigue ejecutando lo que tiene abajo.
Por más que no coincida la condición tienen que colocar sí o sí hombre qué es lo que hace eso cuando
detecta un ladrillo que tiene el número uno me va a dibujar el ladrillo número 1 en X y la posición
x que vienen de estos cálculos.
Ok ahora esto que vamos a hacer nos vamos a escribir todo vamos a pegar son ocho horas muy bien cuando
sea ladrillo dos lo que cambian a casa el 2 cuando sea 3 cambio en el 3 cuando sea 4 4 y así sucesivamente.
Cada uno de los ladrillos.
Ahora cuando el ladrillo sea 8 qué me iba a mostrar cuando el ladrillo sea 8.
Voy a dibujar el Big Mac llamado de recuerden que no tenía un número sino que se llamaba late muy bien
y aquí terminó muestro ladrillo ahora fíjense que muestro ladrillo.
Si nos fijamos pero no yo ya lo tenía creado lo vamos a ahorrar muestro ladrillos lo tenía aquí cuando
estoy en juego muestro ladrillos mueve bola bueno y ya tenemos nuestro muestro ladrillos ahora lo que
tenemos que hacer es ir a armo pantalla para que lo tenga en cuenta para que lo muestre por si no no
lo va a mostrar nunca vamos armo pantalla aquí vamos a dejar Bleed como está y vamos a incluir muestro
ladrillos para que se nos muestre nuestros ladrillos.
Luego lo que vamos a incluir en Hermo pantalla vamos a incluir que si vida es igual a cero vamos a dibujar
nuestros Praet cual Mafer y vamos a dibujar que hay mover 150 300 en esa posición vamos a dibujar el
logo de mover cuando nuestras vidas lleguen a cero.
Bueno vamos a grabar vamos a tratar de ejecutar a ver nuestro juego como va tomando forma.
Voy a ver si habilitã un poco el sonido
fíjense como estoy ya mostrando los ladrillos esto es lo que hemos logrado y ahora vamos a ir por el
movimiento de nuestra base.
Lo que hice fue dar enter para entrar ya en el juego para comenzar el juego y se me han dibujado los
ladrillos del mapa uno cuando pase de nivel se van a dibujar el mapa 2 El mapa 3 y demás me coloca las
vidas en tres el score en cero y el level en uno bueno vamos a salir del juego y lo que vamos a ver
ahora en el próximo capítulo es el tema de los movimientos y las rutinas de cálculo y detección de colisiones.
Nos vemos en el próximo capítulo.