Como ya adelantamos al final de la clase anterior (Clase #2), en esta clase trataremos el detalle de la creación del fantasma de pacman. 

   Para éste ejercicio se le advierte a los alumnos que requeriremos del aporte de números fraccionarios (1/2, 1/3, 1/4....) ya que todas las medidas del fantasma están expresadas como proporciones de la variable ANCHO (las variables fueron explicadas en la clase 1 con vasos). 

  Al hacer ésto, podemos definir el tamaño de todas las formas con un solo numero.

Recuerden que pueden descargar el Basic256 en este link, y si quieren ver muchos programas y juegos creados con éste leguaje hay un blog dedicado a tales proyectos donde podemos copiar, pegar ese codigo y ejecutarlos directamente.

En este post, explicaremos bloques del programa como fueron explicados en clase, al final del post estará el texto completo para copiar/pegar.



Cuerpo del Fantasma

No usaremos numeros como hicimos antes para crear el circulo y el rectangulo, sino que llenaremos variables y luego las usaremos para reemplazar los valores. Lo que se escribe con el simbolo #, es un comentario, por tanto el Basic lo ignora (no escriban insultos comentados, cuando era chico decubri que a los profes no le gusta).





  • En la linea 2, CLG limpia la pantalla de graficos (CLearGraphics).
  • En las lineas 3,4, y 5 asignamos valores a las variables ANCHO, IZQ, Y ARR.
  • En la linea 8 Elegimos el color Azul para pintar (BLUE)
  • En la linea 9 dibujamos un rectangulo con RECT y le damos 4 valores de esta manera: 
    • Posicion en X (desde el margen Izquierdo)
    • Posicion Y (desde el Margen Superior)
    • LONGITUD del rectangulo recibe el valor de ANCHO (asignado en la linea 3)
    • ALTURA del rectangulo, tambien le asignamos el valor de ANCHO, para que sea un cuadrado donde sus medidas son identicas (en este caso 90).



CABEZA del FANTASMA

Para crear un círculo, vimos que necesitamos 3 valores: La posición de X, e Y (como los dos primeros valores del rectangulo), pero el tercero es EL RADIO del círculo. 

 Por tanto, los círculos se dibujan desde el centro, en este caso, el centro del circulo debe estar en la mitad del lado superior del cuadrado (rectangulo perfecto).

En este punto es cuando le pregunto a los alumnos si saben cual es la distancia y si pueden inferir que ANCHO/2 es un valor valido que la maquina calculara al ejecutar el programa.
 Luego pregunto si quisieramos hacer que el fantasma se moviera hacia arriba o abajo que valores deberiamos cambiar (IZQ y ARR obviamente).



El circulo tiene los 3 valores: X, Y, RADIO, por tanto definimos: IZQ + ANCHO /2  tambien se puede expresar como IZQ + (ANCHO /2) o (IZQ + ANCHO /2). en este caso es irrelevante, ya que Basic256 resuelve primero las divisiones, luego las multiplicaciones y finalmente las sumas y restas por tanto el paréntesis no es importante en este caso (ojo mas adelante). 

Debe tener ojos

Los ojos seran dos circulos Blancos con 2 círculos negros dentro de cada uno, pero por ahora haremos la parte blanca de los ojos con 2 circulos. 

Ponemos COLOR WHITE.

Ambos ojos, tendrán el mismo tamaño, un radio de ANCHO/8.

Pero primero debemos concentrarnos en LA POSICION de los ojos, para ello debemos ponerlos a 1/3 y a 2/3 del valor ANCHO (para que queden centrados).

Por ello un ojo estará en Ancho/3, mientras que el otro ojo estará a la derecha en 2/3 o sea a 2 veces 1/3 de ANCHO... lo cual conviene preguntarle a la seño de Matematica :D en Basic, multiplicamos como ya dijimos en la clase 1 con le simbolo * por tanto  la posicion sera:  2* (ANCHO/2) para el ojo de la derecha, mientras que el de la izquierda no tendrá esa multiplicacion pero en ambos casos se suma IZQ (no queremos que los ojos queden afuera del fantasma flotanto). En este caso los paréntesis SI SON IMPORTANTES ya que le indicamos que primero se debe resolver ANTES que la multiplicacion.

 El segundo valor de ambos circulos es igual, simplemente ARR mas 1/6 del ancho, expresado correctamente como:  ARR+ANCHO/6

El tercer Valor es el radio de los circulos blancos, para ello usamos ANCHO/8, los chicos captan rapido que si usamos un divisor mayor los ojos se achican y si usa un valor menor los ojos crecen y se tocan.


Para lograr que los ojos tengan un centro negro debemos elegirlo con: COLOR BLACK

Los circulos negros deben ser IDENTICOS a los blancos en cuanto a la posición  podemos copiar, y pegar los que ya hicimos y simplemente cambiar el tercer valor que nos da el tamaño (radio de los circulos).
  Para este caso, un divisor mayor (ANCHO/14), nos hará círculos pequeños.




Haciendo la Pollerita

Para la parte inferior del fantasma, nos conviene definir dos nuevas variables 
RADIOCHICO = ANCHO/5
RADIOGRANDE = ANCHO /2

de tal manera que habrá 3 círculos del mismo color del cuerpo en la parte inferior que dibujan la forma, y otras 2 intermedias que con COLOR CLEAR borran y dan el acabado final a la forma curva (recuerden que color CLEAR es básicamente una goma de borrar).




  La próxima clase usaremos los valores de las variables IZQ y ARR para mover nuestro fantasma por la pantalla de gráficos, para ello usaremos una estructura de repetición (WHILE).  
   Les dejo éste vídeo que hice sobre el desplazamiento del fantasma y el código de lo trabajado en clase (copiar, pegar, ejecutar).






Código completo del Fantasma

#Limpiamos la pantalla de graficos y declaramos variables
CLG
ANCHO = 180
IZQ = 60
ARR = 100
RADIOCHICO = ANCHO/5
RADIOGRANDE = ANCHO /2

#ELEGIMOS EL COLOR AZUL PARA DIBUJAR UN RECTANGULO
COLOR BLUE
RECT         IZQ ,   ARR ,  ANCHO ,  ANCHO
CIRCLE     IZQ+ANCHO/2 ,  ARR ,    ANCHO /2

#ELEGIMOS COLOR BLANCO Y DIBUJAMOS LOS OJOS
COLOR WHITE
CIRCLE        ANCHO/3 +IZQ ,    ARR+ANCHO/6 ,  ANCHO/8
CIRCLE    2*(ANCHO/3)+IZQ ,   ARR+ANCHO/6 ,  ANCHO/8

COLOR BLACK
CIRCLE        ANCHO/3 +IZQ ,  ARR+ANCHO/6 ,  ANCHO/14
CIRCLE   2*  (ANCHO/3)+IZQ ,  ARR+ANCHO/6 ,  ANCHO/14

#DIBUJA POLLERITA, PRIMERO LA POLLERITA DEL CENTRO
COLOR BLUE
CIRCLE IZQ+RADIOGRANDE , ARR+ANCHO , RADIOCHICO/2

#POLLERITA DE LA IZQUIERDA
CIRCLE IZQ+RADIOCHICO/2 , ARR+ANCHO , RADIOCHICO/2

#POLLERITA DE LA DERECHA
CIRCLE IZQ+RADIOGRANDE+RADIOCHICO*2 , ARR+ANCHO , RADIOCHICO/2

#BORRAR HUEQUITOS,COLOR CLEAR ES COMO UNA GOMA DE BORRAR
COLOR CLEAR
CIRCLE IZQ+RADIOGRANDE+RADIOCHICO   , ARR+ANCHO , RADIOCHICO/2


CIRCLE IZQ+RADIOCHICO/2+RADIOCHICO  , ARR+ANCHO , RADIOCHICO/2