Esta práctica fué para los chicos de tercer grado. 

Estaban viendo problemas en matemática y me pareció interesante trabajar con sucesión de sumas para visualizar velocidad de pelotitas que se mueven en la pantalla.

Antes que nada preparé una carpeta con unas imágenes de Pokemones, Sonic, y Finn,  en el escritorio con un archivo que ya tiene código (en un archivo pelotitas.kbs).


 Es básicamente un Loop Infinito (While True - Endwhile) dentro del cual se suma sucesivamente al valor inicial de X o Y, los valores de Suma1 y Suma2 respectivamente.
A continuación el contenido del archivo PELOTITAS.kbs (pueden copiar y pegar):

CLG : fastgraphics : Graphsize 600,600

suma1 = 7  
suma2 = 4  
x=300 
y=300 
WHILE true 
       x=x+suma1
       y=y+suma2
       print "mostrar valor x:"+x+"  valor de y:" +y
       refresh : pause .01 : CLG 
ENDWHILE 


    Como se ve en la imagen de arriba, podemos visualizar como el valor de x se incrementa de 1 en 1 en el ejemplo, pero en el còdigo de arriba de 7 en 7. La idea es que los chicos vayan probando diversos valores para generar dos secuencias diferentes para X e Y.



PELOTITAS

  No pueden pasar mucho sin que pongamos algún gráfico obviamente, para el caso usaremos CIRCLE con valores x, y como posición y tamaño 20. 

   Para éste ejemplo puse el caracter # delante del CLG de la línea 17, para que en cada ciclo dibuje el circulo pero deje el anterior en la pantalla y obtenemos el siguiente gráfico.

Le pido a los chicos que de nuevo cambien los valores de SUMA1 y SUMA2 para alterar la direccion y distancia de los círculos. En éste ejemplo, x e y valen 0 antes del ciclo y se cncrementan de a 1 (linea 3 y 4), por ello vemos la diagonal desde la esquina superior izquierda.







REBOTANDO EN LOS BORDES


Para que no se nos escape la pelotita de los bordes, usamos 2 if, pero en este caso hacemos 2 preguntas, si x es menor a 600 que es el ancho definido en Graphsize en la linea 2 (590 en realidad ya que la pelota tiene 20 de ancho), y que sea siempre mayor a 0 (if x>590 or x<10 then  : suma1= -suma1  : endifsi algunas de estas son ciertas se le asigna a suma1 el valor negativo de esta forma:
          suma1= -suma1 entonces suma1 restara hasta que se encuentre de nuevo con ese limite, cuando sea CERO, le asignara simbolo negativo a suma que ya es negativo lo que dara por resultado un valor positivo (- con - es +). La secuencia de valores sera: 1,2,3,..,599, 598, 597... 2, 1 , 0 , 1, 2, 3...  repitiendose en ese intervalo.
En éste caso la pelota comienza en el centro de la pantalla (x=300, y=300), pero sólo el valor de Y cambia de 10 en 10 (ya que suma1 esta en 0).
Lo mismo hacemos con el valor de y con la siguiente línea: if y>590 or y<10 then : suma2= -suma2  : endif

Ahora en éste otro ejemplo haremos lo contrario, dejaremos el valor de suma2 en cero y asignaremos 10 al valor de suma1 para que rebote de forma horizontal.



Finalmente, se asignan valores a ambos (suma1 y suma2) que afectarán a velocidad y la dirección de la pelota en la pantalla.



No más pelotitas, POKEMONES!

En una clase anterior donde trabajamos con los PLANETAS y las medidas proporcionales de los mismos, usamos el comando IMGLOAD para cargar una imagen que esté en la misma carpeta que el proyecto. Pueden bajar imágenes de internet o usar éstas que usé yo y las llamé: Imagen1, imagen2, imagen3, imagen4, imagen5.




     Técnicamente SONIC y FINN no son Pokemones, pero me gusta mucho asi que los puse para que podamos usarlos. 

     El comando IMGLOAD se asigna con 2 valores de posición (en este caso x , y), un valor de tamaño (1), y un valor de rotación (0), finalmente el nombre del archivo entre comillas "imagen1"
imgload  x , y , 1 , 0 , "imagen3" 

En el siguiente video vemos el efecto de suma1 y suma2 en la velocidad del personaje. La rotación que por defecto es 0 puede ser reemplazada por x o y aunque si los valores de suma1 y suma2 son mayores a 10, la velocidad sera demasiada, por ello recomiendo hacer x/10 lo cual lo hara rotas de 0 a 30 y de vuelta a 0.




GRACIAS POR VISITARNOS

  Debo confesar que creí que sólo a mis alumnos les interesaría éste blog, de hecho, el blog es un apunte COMPARTIDO, pero nunca esperé que hubiera tanto interés en éste lenguaje de programación y en los locos ejercicios que hacemos en la escuela con los chicos, pero como se ve a la derecha, nos visitan de varios países y es una tendencia sostenida semana a semana.
   Quiero saludar a nuestros visitantes de Estados Unidos, Francia, Venezuela, México, Irlanda, Rusia, Rumania, Alemania, les cuento que somos de Argentina y esperamos saber más de ustedes, los invitamos a comentar (preferentemente en inglés si no hablan español) a participar en los comentarios y mandarnos material si quieren que lo publiquemos (como links, ejercicios, etc). En cuanto a los posts, seguiré haciéndolos lo más accesibles para Google Translate y resaltando el codigo en amarillo.

#Codigo completo para copiar y pegar
CLG : fastgraphics : Graphsize 600,600 
suma1 = 7 #velocidad horizontal
suma2 = 4 #velocidad vertical
x=300
y=300
WHILE true 
       x=x+suma1
       y=y+suma2
       if x>590 or x<10 then  : suma1= -suma1  : endif
       if y>590 or y<10 then : suma2= -suma2  : endif

       imgload x , y , 1 , y/10 , "imagen3"
       imgload y , x , 1 , -y/10 , "imagen1"
       refresh : pause .01
       clg
ENDWHILE