Professional Documents
Culture Documents
Introduccin a la programacin
Pgina 1 de 364
Captulo 1
Introduccin
Small Basic y la programacin
En informtica, se define la programacin como el proceso de crear aplicaciones para ordenador
utilizando lenguajes de programacin. De la misma manera que los humanos hablamos y entendemos
ingls, espaol o francs, los ordenadores entienden programas escritos en ciertos idiomas. Estos se
denominan lenguajes de programacin. Al principio slo haba unos pocos lenguajes de programacin y
eran muy fciles de aprender y entender. Pero a medida que los ordenadores y el software se han
vuelto cada vez ms sofisticados, los lenguajes de programacin evolucionaron rpidamente,
volvindose cada vez ms complejos. El resultado es que los ms modernos lenguajes de programacin
y sus conceptos son bastante difciles de comprender para un principiante. Esto ha desalentado a
muchas personas a aprender o intentar programar.
Small Basic es un lenguaje de programacin que est diseado para hacer la programacin muy sencilla,
accesible y divertida para los principiantes. El objetivo de Small Basic es romper cualquier barrera y
servir de piedra angular para el increble mundo de la programacin.
Pgina 2 de 364
Este es el entorno de Small Basic, donde escribiremos y ejecutaremos los programas de Small Basic. Este
entorno contiene varios elementos distintos identificados con nmeros.
El Editor, identificado con [1], es el lugar donde escribiremos nuestros programas de Small Basic.
Cuando abra un programa de ejemplo u otro guardado previamente, aparecer en el editor. Una vez
abierto, puede modificarlo y guardarlo para usos posteriores.
Tambin puede abrir y trabajar con ms de un programa a la vez. Cada programa aparecer en un editor
distinto. El editor que contiene el programa en el que est trabajando se denomina editor activo.
La Barra de herramientas, identificada con [2], se utiliza para emitir comandos bien al editor activo o al
entorno. Veremos los distintos comandos de la barra de herramientas segn vayamos avanzando.
La Superficie, identificada con [3], es el lugar donde se encuentran todas las ventanas del editor.
Pgina 3 de 364
Ahora que hemos escrito nuestro primer programa, vamos a ejecutarlo y ver qu pasa. Podemos
ejecutar un programa bien haciendo clic en el botn Ejecutar de la barra de herramientas o utilizando la
tecla de mtodo abreviado F5 del teclado. Si todo va bien, nuestro programa debera ejecutarse con el
resultado siguiente.
Pgina 4 de 364
Figura 4 - Intellisense
Pgina 5 de 364
Captulo 2
Pgina 6 de 364
Pgina 7 de 364
TextWindow.ForegroundColor = "Yellow"
TextWindow.WriteLine("Hola mundo")
Cuando ejecute el programa anterior, notar que imprime el mismo mensaje que antes ("Hola mundo ")
dentro de la ventana de texto (TextWindow), pero esta vez la imprime en amarillo (Yellow) en lugar de
en gris.
Para ello, hemos agregado una nueva instruccin al programa original. Utiliza una nueva palabra
ForegroundColor (color de fondo) al que se le asigna Yellow (amarillo). Esto significa que se asigna
Yellow a ForegroundColor. La diferencia entre las operaciones ForegroundColor y WriteLine es que
ForegroundColor no admite ningn parmetro y, por tanto, no necesita parntesis. En su lugar, le sigue
un smbolo igual que (=) y una palabra. ForegroundColor se define como una propiedad de TextWindow.
He aqu una lista de valores que son vlidos para la propiedad ForegroundColor. Reemplace Yellow con
uno de los siguientes valores y observe los resultados. No se olvide de las comillas ya que son
imprescindibles.
Pgina 8 de 364
Black
Blue
Cyan
Gray
Green
Magenta
Red
White
Yellow
DarkBlue
DarkCyan
DarkGray
DarkGreen
DarkMagenta
DarkRed
DarkYellow
Pgina 9 de 364
Captulo 3
Pgina 10 de 364
Ahora, si ejecuta el programa otra vez, se le har la misma pregunta nuevamente. Puede escribir un
nombre diferente y el equipo dir Hola a ese nombre.
Pgina 11 de 364
Una vez que la variable est asignada, es decir, cuando se guarda un valor en una variable, puede volver
a utilizarla cuantas veces quiera. Por ejemplo, puede hacer lo siguiente:
TextWindow.Write("Escriba su nombre: ")
nombre = TextWindow.Read()
TextWindow.Write("Hola " + nombre + ". ")
TextWindow.WriteLine("Cmo est " + nombre + "?")
Y ver la siguiente salida:
Pgina 12 de 364
En la primera lnea del programa, se asigna a la variable nmero1 un valor de 20. Y en la segunda lnea,
se asigna a la variable nmero2 un valor de 10. En
la tercera lnea, se suma nmero1 y nmero2, y
se asigna el resultado de la suma a nmero3. Por
tanto, la variable nmero3 tendr un valor de 30.
Y eso es lo que imprimimos en la TextWindow.
De la misma forma, puede restar o dividir dos nmeros. Aqu est la resta:
nmero3 = nmero1 - nmero2
El smbolo para la divisin es /. El programa resultar similar a este:
nmero3 = nmero1 / nmero2
Y el resultado de la divisin ser:
Pgina 13 de 364
Pgina 14 de 364
Pgina 15 de 364
Captulo 4
Condiciones y bifurcaciones
Volviendo a nuestro primer programa, no sera bueno que en lugar del genrico Hola mundo,
pudiramos decir "Buenos das mundo" o "Buenas tardes mundo", dependiendo de la hora del da? Para
nuestro prximo programa, haremos que el equipo diga "Buenos das mundo" si la hora es anterior a las
12:00 y "Buenas tardes mundo" si la hora es posterior a las 12:00.
If (Clock.Hour < 12) Then
TextWindow.WriteLine("Buenos das mundo")
EndIf
If (Clock.Hour >= 12) Then
TextWindow.WriteLine("Buenas tardes mundo")
EndIf
Dependiendo de cundo ejecute el programa ver una de las dos siguientes salidas:
Pgina 16 de 364
Else
Puede que se haya dado cuenta que en el programa al comienzo de este captulo, la segunda condicin
es redundante. El valor de Clock.Hour puede ser menor que 12 o no y slo necesitamos hacer el segundo
control. En casos como este, podemos abreviar las dos instrucciones IfThenEndIf en una sola usando
una nueva palabra, Else (en caso lo contrario).
Si furamos a escribir el mismo programa usando Else, as es como quedara:
Pgina 17 de 364
Sangra
En todos los ejemplos puede ver que las instrucciones entre If, Else y EndIf estn sangradas. Este
sangrado no es necesario. El equipo entender el programa perfectamente sin l. Sin embargo, las
sangras ayudan a ver y entender la estructura del programa ms fcilmente. Por lo tanto, se considera
una buena prctica sangrar las instrucciones entre esos bloques.
Par o impar
Ahora que tenemos las instrucciones IfThenElseEndIf en nuestra caja de herramientas, vamos a
escribir un programa que, dado un nmero, nos diga si es par o impar.
TextWindow.Write("Introduzca un nmero: ")
nmero = TextWindow.ReadNumber()
resto = Math.Remainder(nmero, 2)
If (resto = 0) Then
TextWindow.WriteLine("El nmero es par")
Else
TextWindow.WriteLine("El nmero es impar")
EndIf
Y cuando ejecute este programa, ver una salida como:
Pgina 18 de 364
En este programa hemos introducido una nueva operacin muy til, Math.Remainder (resultado de la
divisin). Efectivamente, como ya se podr haber imaginado, Math.Remainder dividir el primer nmero
por el segundo nmero y devolver el resultado.
Bifurcaciones
Recuerde que en el segundo captulo aprendimos que el equipo procesa un programa una instruccin
cada vez de arriba a abajo. No obstante, hay una instruccin especial que puede hacer que el equipo
salte a otra instruccin fuera de orden. Echemos un vistazo al siguiente programa.
Pgina 19 de 364
i = 1
comienzo:
TextWindow.WriteLine(i)
i = i + 1
If (i < 25) Then
Goto comienzo
EndIf
En el programa anterior, asignamos un valor 1 a la variable i. Y luego agregamos una nueva instruccin
que termina en dos puntos (:)
comienzo:
Esto es una etiqueta. Las etiquetas son marcadores que el equipo entiende. Puede darle al marcador
cualquier nombre y puede agregar tantas etiquetas como desee en su programa, siempre que los
nombres sean nicos.
Aqu hay otra instruccin interesante:
i = i + 1
Esto dice al equipo que sume 1 a la variable i y asigne el resultado nuevamente a i. Por lo tanto, si el
valor de i era 1 antes de esta instruccin, ser 2 una vez que se ejecute esta instruccin.
Pgina 20 de 364
Y finalmente:
If (i < 25) Then
Goto comienzo
EndIf
Esta es la parte que le dice al equipo que si el valor de i es menor que 25, comience a ejecutar las
instrucciones desde el marcador comienzo.
Ejecucin eterna
Usando la instruccin Goto puede hacer que el equipo repita algo cualquier nmero de veces. Por
ejemplo, puede modificar el programa de pares e impares como aparece ms abajo y el programa se
ejecutar para siempre. Puede detener el programa haciendo clic en el botn Cerrar (X) en la esquina
superior derecha de la ventana.
Pgina 21 de 364
comienzo:
TextWindow.Write("Introduzca un nmero: ")
nmero = TextWindow.ReadNumber()
resto = Math.Remainder(nmero, 2)
If (resto = 0) Then
TextWindow.WriteLine("El nmero es par")
Else
TextWindow.WriteLine("El nmero es impar")
EndIf
Goto comienzo
Pgina 22 de 364
Captulo 5
Bucles
El bucle For
Tomemos el programa que escribimos en el captulo anterior.
i = 1
comienzo:
TextWindow.WriteLine(i)
i = i + 1
If (i < 25) Then
Goto comienzo
EndIf
Este programa imprime en orden los nmeros del 1 al 24. Este proceso de incrementar una variable es
tan comn en programacin que algunos lenguajes proveen un mtodo ms fcil de hacerlo. El
programa anterior es equivalente al siguiente programa:
Pgina 23 de 364
For i = 1 To 24
TextWindow.WriteLine(i)
EndFor
Y la salida es:
Note que hemos reducido un programa de 8 lneas a un programa de 4, y hace exactamente lo mismo
que el programa de 8 lneas! Recuerda que antes dijimos que habitualmente hay varias formas de
hacer la misma cosa? Este es un gran ejemplo.
For..EndFor se llama, en trminos de programacin, un bucle. Le permite tomar una variable, darle un
valor inicial y un valor final, y dejar que el equipo incremente el valor de la variable por usted. Cada vez
que el equipo incrementa la variable, ejecuta las instrucciones entre For y EndFor.
Pero si desea que la variable se incremente de 2 en 2, en lugar de 1 en 1 (supongamos que desea
imprimir todos los nmeros impares entre 1 y 24), tambin puede usar el bucle para hacerlo.
Pgina 24 de 364
For i = 1 To 24 Step 2
TextWindow.WriteLine(i)
EndFor
El Step 2 que forma la instruccin For dice al equipo que incremente el valor de i en 2 en lugar de 1
como siempre. Usando Step puede especificar cualquier incremento que desee. Hasta puede especificar
un valor negativo y hacer que el equipo cuente hacia atrs, como en el siguiente ejemplo:
For i = 10 To 1 Step -1
TextWindow.WriteLine(i)
EndFor
El bucle While
El bucle While (mientras) es otro mtodo de repeticin, que es especialmente til cuando la cantidad de
repeticiones no se conoce por adelantado. Mientras el bucle For se ejecuta una cantidad predefinida de
veces, el bucle While se ejecuta mientras una condicin dada es cierta. En el siguiente ejemplo, estamos
dividiendo a la mitad un nmero mientras el resultado sea mayor que 1.
Pgina 25 de 364
nmero = 100
While (nmero > 1)
TextWindow.WriteLine(nmero)
nmero = nmero / 2
EndWhile
Pgina 26 de 364
Captulo 6
Presentando GraphicsWindow
As como tenemos TextWindow, que nos permite trabajar con texto y nmeros, Small Basic tambin
tiene GraphicsWindow (ventana de grficos), que podemos usar para dibujar cosas. Vamos a comenzar
mostrando la GraphicsWindow.
GraphicsWindow.Show()
Cuando ejecute este programa, notar que en lugar de la habitual ventana negra de texto, obtiene una
ventana blanca como la que se muestra a continuacin. No hay mucho que hacer con esta ventana por
ahora, pero ser la ventana base sobre la cual trabajaremos en este captulo. Puede cerrar esta ventana
haciendo clic en el botn X en la esquina superior derecha.
Pgina 27 de 364
Pgina 28 de 364
GraphicsWindow.BackgroundColor = "SteelBlue"
GraphicsWindow.Title = "Mi ventana de grficos"
GraphicsWindow.Width = 320
GraphicsWindow.Height = 200
GraphicsWindow.Show()
As es como se ve la ventana configurada. Puede cambiar el color de fondo por uno de los diferentes
valores listados en el Apndice B. Juegue con estas propiedades para ver cmo puede modificar la
apariencia de la ventana.
Dibujando lneas
Una vez que tenemos abierta la GraphicsWindow, podemos dibujar figuras, texto y hasta imgenes en
ella. Vamos a comenzar dibujando algunas figuras simples. He aqu un programa que dibuja un par de
lneas en la ventana de grficos.
Pgina 29 de 364
GraphicsWindow.Width = 200
GraphicsWindow.Height = 200
GraphicsWindow.DrawLine(10, 10, 100, 100)
GraphicsWindow.DrawLine(10, 100, 100, 10)
Las primeras dos lneas del programa configuran la ventana y las siguientes dos lneas dibujan las lneas
cruzadas. Los primeros dos nmeros que siguen a DrawLine (dibujar una lnea) especifican las
coordenadas X e Y iniciales y los otros especifican las coordenadas X e Y finales. Lo interesante de los
grficos de ordenador es que las coordenadas (0, 0) comienzan en la esquina superior izquierda de la
ventana. En efecto, el espacio de coordenadas de la ventana se considera que est en el segundo
cuadrante.
Pgina 30 de 364
GraphicsWindow.Width = 200
GraphicsWindow.Height = 200
GraphicsWindow.PenColor = "Green"
GraphicsWindow.DrawLine(10, 10, 100, 100)
GraphicsWindow.PenColor = "Gold"
GraphicsWindow.DrawLine(10, 100, 100, 10)
Ahora, vamos a modificar tambin el tamao. En el siguiente programa, cambiamos el ancho de la lnea
a 10, en lugar del valor predeterminado, que es 1.
GraphicsWindow.Width = 200
GraphicsWindow.Height = 200
GraphicsWindow.PenWidth = 10
GraphicsWindow.PenColor = "Green"
GraphicsWindow.DrawLine(10, 10, 100, 100)
GraphicsWindow.PenColor = "Gold"
GraphicsWindow.DrawLine(10, 100, 100, 10)
Pgina 31 de 364
PenWidth (ancho del lpiz) y PenColor (color del lpiz) modifican el lpiz que dibuja esas lneas. No
afectan solamente a las lneas, sino a cualquier figura que se dibuje una vez que se modifican las
propiedades.
Usando las instrucciones de bucle que aprendimos en los captulos anteriores, podemos escribir
fcilmente un programa que dibuje mltiples lneas aumentando el grosor del lpiz.
GraphicsWindow.BackgroundColor = "Black"
GraphicsWindow.Width = 200
GraphicsWindow.Height = 160
GraphicsWindow.PenColor = "Blue"
For i = 1 To 10
GraphicsWindow.PenWidth = i
GraphicsWindow.DrawLine(20, i * 15, 180, i * 15)
EndFor
La parte interesante de este programa es el bucle, donde podemos aumentar PenWidth cada vez que se
ejecuta el bucle y luego dibujar una nueva lnea debajo de la anterior.
Pgina 32 de 364
GraphicsWindow.Width = 400
GraphicsWindow.Height = 300
GraphicsWindow.PenColor = "Red"
GraphicsWindow.DrawRectangle(20, 20, 300, 60)
GraphicsWindow.BrushColor = "Green"
GraphicsWindow.FillRectangle(60, 100, 300, 60)
Para dibujar o rellenar un rectngulo necesita cuatro nmeros. Los primeros dos nmeros representan
las coordenadas X e Y del vrtice superior izquierdo del rectngulo. El tercer nmero especifica el ancho
del rectngulo, mientras que el cuarto especifica su altura. De hecho, lo mismo se aplica para dibujar y
rellenar elipses, como se muestra en el siguiente programa:
Pgina 33 de 364
GraphicsWindow.Width = 400
GraphicsWindow.Height = 300
GraphicsWindow.PenColor = "Red"
GraphicsWindow.DrawEllipse(20, 20, 300, 60)
GraphicsWindow.BrushColor = "Green"
GraphicsWindow.FillEllipse(60, 100, 300, 60)
Los crculos son un tipo particular de elipse. Si desea dibujar crculos, tendr que especificar el mismo
ancho y alto.
Pgina 34 de 364
GraphicsWindow.Width = 400
GraphicsWindow.Height = 300
GraphicsWindow.PenColor = "Red"
GraphicsWindow.DrawEllipse(20, 20, 100, 100)
GraphicsWindow.BrushColor = "Green"
GraphicsWindow.FillEllipse(100, 100, 100, 100)
Figura 32 Crculos
Pgina 35 de 364
Captulo 7
Rectangular
Aqu dibujamos mltiples rectngulos en un bucle a la vez que aumentamos su tamao.
Pgina 36 de 364
Figura 33 - Rectangular
Circular
Una variante del programa anterior, dibuja crculos en lugar de cuadrados.
Pgina 37 de 364
GraphicsWindow.BackgroundColor = "Black"
GraphicsWindow.PenColor = "LightGreen" 'Verde claro
GraphicsWindow.Width = 200
GraphicsWindow.Height = 200
For i = 1 To 100 Step 5
GraphicsWindow.DrawEllipse(100 - i, 100 - i, i * 2, i * 2)
EndFor
Figura 34 Circular
Aleatorio
Este programa usa la operacin GraphicsWindow.GetRandomColor (obtener color al azar) para asignar
colores aleatorios al lpiz y luego usa Math.GetRandomNumber (obtener nmero al azar) para asignar
las coordenadas X e Y de los crculos. Estas dos operaciones se pueden combinar de maneras
interesantes para crear programas atractivos que dan diferentes resultados cada vez que se ejecutan.
Pgina 38 de 364
GraphicsWindow.BackgroundColor = "Black"
For i = 1 To 1000
GraphicsWindow.BrushColor = GraphicsWindow.GetRandomColor()
x = Math.GetRandomNumber(640)
y = Math.GetRandomNumber(480)
GraphicsWindow.FillEllipse(x, y, 10, 10)
EndFor
Figura 35 Aleatorio
Fractales
El siguiente programa dibuja un simple tringulo fractal usando nmeros aleatorios. Un fractal es una
forma geomtrica que se puede subdividir en partes, cada una de las cuales se asemeja a la forma
original. En este caso, el programa dibuja cientos de tringulos cada uno de los cuales se asemeja a su
tringulo original. Y como el programa se ejecuta durante unos pocos segundos, puede ver en realidad
cmo se forman los tringulos a partir de simples puntitos. La lgica en s misma es en cierta forma
difcil de describir y dejaremos como ejercicio que pueda explorarla.
Pgina 39 de 364
GraphicsWindow.BackgroundColor = "Black"
x = 100
y = 100
For i = 1 To 100000
r = Math.GetRandomNumber(3)
ux = 150
uy = 30
If (r = 1) then
ux = 30
uy = 1000
EndIf
If (r = 2) Then
ux = 1000
uy = 1000
EndIf
x = (x + ux) / 2
y = (y + uy) / 2
GraphicsWindow.SetPixel(x, y, "LightGreen")
EndFor
Pgina 40 de 364
Si realmente desea ver los puntos formando lentamente el fractal, puede introducir un retraso en el
bucle mediante el uso de la operacin Program.Delay. Esta operacin recibe un nmero que especifica
cunto tiempo esperar, en milisegundos. Aqu est el programa modificado, con la lnea cambiada en
negrita.
GraphicsWindow.BackgroundColor = "Black"
x = 100
y = 100
For i = 1 To 100000
r = Math.GetRandomNumber(3)
ux = 150
uy = 30
If (r = 1) Then
ux = 30
uy = 1000
EndIf
If (r = 2) Then
ux = 1000
uy = 1000
EndIf
x = (x + ux) / 2
y = (y + uy) / 2
GraphicsWindow.SetPixel(x, y, "LightGreen") 'Poner pxel
Program.Delay(2) 'Demora
EndFor
Aumentar el retraso hace que el programa sea ms lento. Experimente con los nmeros para ver cul le
gusta ms.
Otra modificacin que puede hacer a este programa es reemplazar la siguiente lnea:
GraphicsWindow.SetPixel(x, y, "LightGreen")
con:
Pgina 41 de 364
color = GraphicsWindow.GetRandomColor()
GraphicsWindow.SetPixel(x, y, color)
Este cambio har que el programa dibuje los pxeles del tringulo usando colores aleatorios.
Pgina 42 de 364
Captulo 8
Tortuga grfica
Logo
En los aos 70, haba un lenguaje de programacin muy simple pero potente, llamado Logo, que era
usado por algunos investigadores. Esto fue hasta que alguien agreg al lenguaje lo que se llam la
tortuga grfica e hizo disponible una tortuga que era visible en la pantalla y responda a comandos
como muvete, ve hacia adelante o gira a la izquierda. Usando la tortuga, las personas eran
capaces de dibujar formas interesantes en la pantalla. Esto hizo que el lenguaje fuera inmediatamente
accesible y atractivo a personas de todas las edades y fue el principal responsable de su gran
popularidad en los aos 80.
Small Basic viene con un objeto Turtle (tortuga) con varios comandos que pueden ser llamados desde
programas de Small Basic. En este captulo, usaremos Turtle para dibujar grficos en la pantalla.
La tortuga
Para comenzar, necesitamos mostrar la tortuga en la pantalla. Esto se puede lograr con un programa de
una sola lnea.
Turtle.Show() 'Mostrar
Cuando ejecute este programa ver una ventana blanca, tal como la que vimos en el captulo anterior,
excepto que esta tiene una tortuga en su centro. Esta es la tortuga que seguir nuestras instrucciones y
dibujar lo que le pidamos.
Pgina 43 de 364
Moviendo y dibujando
Una de las instrucciones que Turtle entiende es Move (mover). Esta operacin toma un nmero como
entrada. Ese nmero le dice a Turtle cunto tiene que moverse. En el siguiente ejemplo, le pedimos a
Turtle que se mueva 100 pxeles.
Turtle.Move(100)
Cuando ejecute este programa, puede ver la
tortuga realmente moverse lentamente 100
pxeles hacia arriba. Mientras se mueve, tambin
ver que dibuja una lnea detrs de ella. Cuando
la tortuga ha terminado de moverse, el resultado
tendr el mismo aspecto que la siguiente figura.
Pgina 44 de 364
Dibujando un cuadrado
Un cuadrado tiene cuatro lados, dos verticales y dos horizontales. Para dibujar un cuadrado necesitamos
conseguir que la tortuga dibuje una lnea, gire a la derecha y dibuje otra lnea, y contine as hasta que
los cuatro lados del cuadrado estn terminados. Si traducimos esto en un programa, as es como queda:
Turtle.Move(100)
Turtle.TurnRight() 'Mover a la derecha
Turtle.Move(100)
Turtle.TurnRight()
Turtle.Move(100)
Turtle.TurnRight()
Turtle.Move(100)
Turtle.TurnRight()
Cuando ejecute este programa, puede ver la tortuga dibujando un cuadrado, una lnea cada vez, y el
resultado es igual al de la siguiente figura.
Pgina 45 de 364
Es interesante mencionar que estamos realizando las mismas dos operaciones una y otra vez, cuatro
veces para ser ms precisos. Y ya hemos aprendido que tales comandos repetitivos pueden ser
ejecutados usando bucles. Por lo tanto, si tomamos el programa anterior y lo modificamos para usar el
bucle For..EndFor, lograremos un programa mucho ms simple.
For i = 1 To 4
Turtle.Move(100)
Turtle.TurnRight()
EndFor
Pgina 46 de 364
For i = 1 To 4
GraphicsWindow.PenColor = GraphicsWindow.GetRandomColor()
'PenColor: color del lpiz; GetRandomColor: obtener color al azar
Turtle.Move(100)
Turtle.TurnRight()
EndFor
Pgina 47 de 364
esta informacin y usando variables, podemos escribir un programa bastante genrico que dibuje un
polgono de cualquier cantidad de lados.
lados = 12
largo = 400 / lados
ngulo = 360 / lados
For i = 1 To lados
Turtle.Move(largo)
Turtle.Turn(ngulo)
EndFor
Usando este programa, puede dibujar cualquier polgono con slo modificar la variable lados. Poniendo
4 dibujar un cuadrado. Poniendo un valor suficientemente grande, digamos 50, el resultado ser similar
a un crculo.
Usando la tcnica que acaba de aprender, puede hacer que la tortuga dibuje mltiples crculos, cada vez
con un pequeo giro, resultando en una salida interesante.
Pgina 48 de 364
lados = 50
largo = 400 / lados
ngulo = 360 / lados
Turtle.Speed = 9
For j = 1 To 20
For i = 1 To lados
Turtle.Move(largo)
Turtle.Turn(ngulo)
EndFor
Turtle.Turn(18)
EndFor
El programa anterior tiene dos bucles For..EndFor, uno dentro del otro. El bucle interior (i = 1 to lados)
es similar al del programa del polgono y es el
responsable de dibujar el crculo. El bucle exterior
En el programa anterior, hicimos que la tortuga
(j = 1 to 20) es el responsable de girar la tortuga
se moviera ms rpido, cambiado Speed
un poco cada vez que se dibuja el crculo. Esto
(velocidad) a 9. Puede asignar esta propiedad
dice a la tortuga que dibuje 20 crculos. Cuando se
con cualquier valor entre 1 y 10 para hacer que
ponen juntos, este programa resulta en un patrn
la tortuga se mueva tan rpido como desee.
muy interesante, como el que se muestra a
continuacin.
Pgina 49 de 364
Movindose por ah
Puede hacer que la tortuga no dibuje usado la operacin PenUp (subir el lpiz). Esto permite mover la
tortuga a cualquier lado de la pantalla sin que dibuje una lnea. Usando PenDown (bajar el lpiz) har
que la tortuga dibuje nuevamente. Esto se puede utilizar para obtener algunos efectos interesantes,
como por ejemplo, lneas punteadas. He aqu un programa que usa este concepto para dibujar un
polgono de lneas punteadas.
Pgina 50 de 364
lados = 6
largo = 400 / lados
ngulo = 360 / lados
For i = 1 To lados
For j = 1 To 6
Turtle.Move(largo / 12)
Turtle.PenUp()
Turtle.Move(largo / 12)
Turtle.PenDown()
EndFor
Turtle.Turn(ngulo)
EndFor
Nuevamente, este programa tiene dos bucles. El bucle interior dibuja una sola lnea punteada, mientras
que el bucle exterior indica cuntas lneas a dibujar. En nuestro ejemplo, hemos usado 6 para la variable
lados y por lo tanto tenemos un hexgono de lneas punteadas, como el que aparece a continuacin.
Pgina 51 de 364
Captulo 9
Subrutinas
Muy frecuentemente, mientras escribimos programas encontramos casos donde tenemos que ejecutar
el mismo conjunto de pasos, una y otra vez. En estos casos, probablemente no tenga sentido volver a
escribir las mismas instrucciones varias veces. Es entonces cuando resultan tiles las subrutinas.
Una subrutina es una porcin de cdigo dentro de un programa ms grande que habitualmente hace
algo especfico, y que puede ser invocada desde cualquier parte del programa. Las subrutinas estn
identificadas por un nombre que sigue a la palabra clave Sub y terminan con la palabra clave EndSub.
Por ejemplo, el siguiente fragmento representa una subrutina cuyo nombre es ImprimirHora, y hace el
trabajo de imprimir la hora actual en la TextWindow.
Sub ImprimirHora
TextWindow.WriteLine(Clock.Time)
EndSub
A continuacin hay un programa que incluye la subrutina y la invoca desde varios lugares.
Pgina 52 de 364
ImprimirHora()
TextWindow.Write("Introduzca su nombre: ")
nombre = TextWindow.Read()
TextWindow.Write(nombre + ", la hora es: ")
ImprimirHora()
Sub ImprimirHora
TextWindow.WriteLine(Clock.Time)
EndSub
Pgina 53 de 364
Usando variables
Puede acceder y usar cualquier variable que tenga en un programa desde una subrutina. Por ejemplo, el
siguiente programa acepta dos nmeros e imprime el mayor de ellos. Note que la variable mx es usada
tanto dentro de la subrutina como fuera de ella.
TextWindow.Write("Introduzca el primer nmero: ")
nm1 = TextWindow.ReadNumber()
TextWindow.Write("Introduzca el segundo nmero: ")
nm2 = TextWindow.ReadNumber()
FindMax()
TextWindow.WriteLine("El mayor de los dos nmero es: " + mx)
Sub FindMax
If (nm1 > nm2) Then
mx = nm1
Else
mx = nm2
EndIf
EndSub
Y la salida de este programa es como sigue:
Tomemos otro ejemplo que ilustrar el uso de subrutinas. Este vez usaremos un programa grfico que
calcula varios puntos, que almacenar en variables x e y. Luego llama a la subrutina
DibujarCirculoUsandoCentro, que es responsable de dibujar un crculo usando x e y como centro.
Pgina 54 de 364
GraphicsWindow.BackgroundColor = "Black"
GraphicsWindow.PenColor = "LightBlue"
GraphicsWindow.Width = 480
For i = 0 To 6.4 Step 0.17
x = Math.Sin(i) * 100 + 200 'Seno'
y = Math.Cos(i) * 100 + 200 'Coseno'
DibujarCrculoUsandoCentro()
EndFor
Sub DibujarCrculoUsandoCentro
comienzoX = x - 40
comienzoY = y - 40
GraphicsWindow.DrawEllipse(comienzoX, comienzoY, 120, 120)
EndSub
Pgina 55 de 364
primo o no. Puede escribir un programa que permita al usuario introducir un valor y le indique si es
primo o no, usando esta subrutina. El siguiente programa muestra cmo hacerlo.
TextWindow.Write("Introduzca un nmero: ")
i = TextWindow.ReadNumber()
esPrimo = "Cierto"
ComprobarPrimo()
If (esPrimo = "Cierto") Then
TextWindow.WriteLine(i + " es un nmero primo")
Else
TextWindow.WriteLine(i + " no es un nmero primo")
EndIf
Sub ComprobarPrimo
For j = 2 To Math.SquareRoot(i)
If (Math.Remainder(i, j) = 0) Then
esPrimo = "Falso"
Goto FinBucle
EndIf
EndFor
FinBucle:
EndSub
La subrutina ComprobarPrimo toma el valor de i y trata de dividirlo por nmeros menores. Si un nmero
divide a i con resto cero, entonces i no es un nmero primo. En ese momento la subrutina asigna a
esPrimo el valor Falso y termina. Si el nmero no es divisible por nmeros ms pequeos, entonces el
valor de esPrimo permanece como Cierto.
Ahora que tiene una subrutina que puede hacer la prueba de nmeros primos por nosotros, puede
querer usarla para listar todos los nmeros primos menores que, digamos, 100. Es realmente fcil
modificar el programa anterior y hacer la invocacin de ComprobarPrimo dentro del bucle. Esto da a la
Pgina 56 de 364
subrutina diferentes valores para calcular, cada vez que el bucle se ejecuta. Veamos cmo hacer esto en
el siguiente ejemplo.
For i = 3 To 100
esPrimo = "Cierto"
ComprobarPrimo()
If (esPrimo = "Cierto") Then
TextWindow.WriteLine(i)
EndIf
EndFor
Sub ComprobarPrimo
For j = 2 To Math.SquareRoot(i)
If (Math.Remainder(i, j) = 0) Then
esPrimo = "Falso"
Goto FinLoop
EndIf
Endfor
FinLoop:
EndSub
En el programa anterior, se actualiza el valor de i cada vez que el bucle se ejecuta. Dentro del bucle, se
hace una invocacin a la subrutina ComprobarPrimo. La subrutina ComprobarPrimo entonces toma el
valor de i y calcula si i es o no un nmero primo. El resultado es almacenado en la variable esPrimo, a la
que se puede acceder en el bucle fuera de la subrutina. El valor de i se imprime si resulta un nmero
primo. Y como el bucle comienza en 3 y se incrementa hasta 100, tenemos una lista de los primeros
nmeros primos entre 3 y 100. Debajo aparece el resultado del programa.
Pgina 57 de 364
Captulo 10
Matrices
Ahora ya conoce a fondo cmo utilizar las variables, al fin y al cabo ha llegado hasta aqu y contina
divirtindose, verdad?
Vamos, por un momento, a volver a visitar el primer programa que escribimos con variables:
TextWindow.Write("Escriba su nombre: ")
nombre = TextWindow.Read()
TextWindow.WriteLine("Hola " + nombre)
En este programa, hemos recibido y almacenado el nombre del usuario en una variable llamada
nombre. A continuacin dijimos "Hola" al usuario. Ahora, imaginemos que hay ms de un usuario, por
ejemplo 5. Cmo almacenaramos todos sus nombres? Una forma de hacerlo sera:
Pgina 58 de 364
TextWindow.Write("Introduczca
nombre1 = TextWindow.Read()
TextWindow.Write("Introduczca
nombre2 = TextWindow.Read()
TextWindow.Write("Introduczca
nombre3 = TextWindow.Read()
TextWindow.Write("Introduczca
nombre4 = TextWindow.Read()
TextWindow.Write("Introduczca
nombre5 = TextWindow.Read()
TextWindow.Write("Hola ")
TextWindow.Write(nombre1 + ",
TextWindow.Write(nombre2 + ",
TextWindow.Write(nombre3 + ",
TextWindow.Write(nombre4 + ",
TextWindow.WriteLine(nombre5)
")
")
")
")
Tiene que haber una manera mejor de escribir un programa de este tipo tan sencillo, verdad? Sobre
todo porque el ordenador es realmente bueno ejecutando tareas repetitivas, por qu tenemos que
molestarnos con escribir el mismo cdigo una y otra vez para cada nuevo usuario? El truco est en
almacenar y recuperar el nombre de ms de un usuario utilizando la misma variable. Si podemos hacer
eso, entonces podemos utilizar un bucle For que ya aprendimos en captulos anteriores. Aqu es donde
las matrices vienen al rescate.
Qu es una matriz?
Una matriz es un tipo de variable que puede contener ms de un valor en cada momento. En otras
palabras, lo que esto significa es que en lugar de tener que crear las variables nombre1, nombre2,
name3, name4 y name5 para poder almacenar cinco nombres de usuario, podemos utilizar slo nombre
Pgina 59 de 364
para almacenar el nombre de los cinco usuarios. La forma de almacenar varios valores es utilizando un
"ndice". Por ejemplo, nombre[1], nombre[2], nombre[3], nombre[4] y nombre[5] pueden almacenar
un valor de cada una. Los nmeros 1, 2, 3, 4 y 5 se denominan ndices de la matriz.
A pesar de que nombre[1], nombre[2], nombre[3], nombre[4] y nombre[5] parecen diferentes
variables, en realidad son todas la misma variable. Se puede estar preguntando y cul es la ventaja de
todo esto? Lo mejor de almacenar valores en una matriz es que puede especificar el ndice, utilizando
una variable, lo que permite acceder fcilmente a matrices dentro de bucles.
Ahora, veamos cmo podemos poner nuestros nuevos conocimientos en prctica para reescribir
nuestro programa anterior con matrices.
For i = 1 To 5
TextWindow.Write("Introduczca su nombre, usuario nmero " + i + ": ")
nombre[i] = TextWindow.Read()
EndFor
TextWindow.Write("Hola ")
For i = 1 To 5
TextWindow.Write(nombre[i] + ", ")
EndFor
TextWindow.WriteLine("")
Much easier to read, isnt it? Notice the two bolded lines. The first one stores a value in the array and
the second one reads it from the array. The value you store in name[1] will not be affected by what you
store in name[2]. Hence for most purposes you can treat name[1] and name[2] as two different
variables with the same identity.
Mucho ms fcil de leer, verdad? Tenga en cuenta las dos lneas en negrita. La primera almacena un
valor de la matriz y la segunda lee de la matriz. El valor que se almacena en nombre[1] no se ver
afectado por el que se almacena en nombre[2]. Por lo tanto para la mayora de los propsitos se pueden
tratar nombre[1] y nombre[2] como dos variables distintas con la misma identidad.
Pgina 60 de 364
The above program gives almost the exact same result as the one without arrays, except for the comma
at the end of Mantis. We can fix that by rewriting the printing loop as:
El programa anterior produce casi el mismo resultado que el que escribimos sin matrices, excepto por la
coma al final de Mercedes. Podemos arreglando simplemente reescribiendo el bucle de impresin de
esta forma:
TextWindow.Write("Hola ")
For i = 1 To 5
TextWindow.Write(nombre[i])
If i < 5 Then
TextWindow.Write(", ")
EndIf
EndFor
TextWindow.WriteLine("")
Pgina 61 de 364
Ms de una dimensin
Supongamos que desea almacenar el nombre y el nmero de telfono de todos tus amigos para poder
buscar sus nmeros de telfono cuando lo necesite, como si fuera una libreta de telfonos. Cmo
escribiramos un programa de este tipo?
En este caso, tenemos dos conjuntos de ndices (tambin conocidos como dimensin de la matriz).
Supongamos que identificamos a cada amigo por su sobrenombre. Este ser el primer ndice en la
matriz. Una vez que usamos el primer ndice para obtener la variable de nuestro amigo, el segundo de
los ndices, nombre y nmero de telfono nos
ayuda a obtener el nmero de telfono y el
Los ndices de las matrices no distinguen entre
nombre real de ese amigo.
maysculas y minsculas, al igual que las
variables regulares.
The way we store this data would be like this:
Almacenamos los datos de esta manera:
Pgina 62 de 364
amigos["Nuri"]["Nombre"] = "Nuria"
amigos["Nuri"]["Telfono"] = "123-4567"
amigos["Arthur"]["Nombre"] = "Arturo"
amigos["Arthur"]["Telfono"] = "890-1234"
amigos["Fran"]["Nombre"] = "Francisco"
amigos["Fran"]["Telfono"] = "56-7890"
Puesto que tenemos dos ndices en la misma matriz, amigos, esta matriz se conoce como matriz
bidimensional.
Una vez que hemos creado este programa, puede escribir el apodo de un amigo y se le mostrar la
informacin almacenada de cada uno de ellos. Aqu tiene el programa completo que lo hace:
amigos["Nuri"]["Nombre"] = "Nuria"
amigos["Nuri"]["Telfono"] = "123-4567"
amigos["Arthur"]["Nombre"] = "Arturo"
amigos["Arthur"]["Telfono"] = "890-1234"
amigos["Fran"]["Nombre"] = "Francisco"
amigos["Fran"]["Telfono"] = "56-7890"
TextWindow.Write("Escriba el sobrenombre: ")
sobrenombre = TextWindow.Read()
TextWindow.WriteLine("Nombre: " + amigos[sobrenombre]["Nombre"])
TextWindow.WriteLine("Telfono: " + amigos[sobrenombre]["Telfono"])
Pgina 63 de 364
Pgina 64 de 364
Por ejemplo, si agregamos el siguiente cdigo al final del programa anterior har que los cuadrados se
muevan a la esquina superior izquierda.
For f = 1 To filas
For c = 1 To columnas
Shapes.Animate(cuadrados[f][c], 0, 0, 1000)
Program.Delay(300)
EndFor
EndFor
Pgina 65 de 364
Captulo 11
Eventos e interactividad
En los primeros dos captulos, introdujimos objetos que tienen propiedades y operaciones. Adems de
las propiedades y operaciones, algunos objetos tienen lo que llamamos eventos. Los eventos son como
seales que se levantan, por ejemplo, en respuesta a acciones del usuario, como el movimiento del
mouse, o hacer clic con l. En cierto sentido, los eventos son opuestos a las operaciones. En el caso de
las operaciones, usted como programador las invoca para hacer que el equipo haga algo, mientras que
en el caso de los eventos, el ordenador le indica cundo ha ocurrido algo interesante.
Pgina 66 de 364
Este tipo de manejo de eventos es muy potente y posibilita programas muy creativos e interesantes. Los
programas escritos de esta forma suelen llamarse programas dirigidos por eventos.
Puede modificar la subrutina OnMouseDown para hacer otras cosas que mostrar un cuadro de mensaje.
Por ejemplo, como en el siguiente programa, puede dibujar grandes crculos azules donde el usuario
hace clic con el mouse.
Pgina 67 de 364
Note que en el programa anterior, usamos MouseX y MouseY para obtener las coordenadas del mouse.
Luego las usamos para dibujar un crculo con las coordenadas como centro del crculo.
Pgina 68 de 364
GraphicsWindow.BrushColor = "Blue"
GraphicsWindow.MouseDown = OnMouseDown
GraphicsWindow.KeyDown = OnKeyDown 'Al presionar una tecla
Sub OnKeyDown
GraphicsWindow.BrushColor = GraphicsWindow.GetRandomColor()
EndSub
Sub OnMouseDown
x = GraphicsWindow.MouseX - 10
y = GraphicsWindow.MouseY - 10
GraphicsWindow.FillEllipse(x, y, 20, 20)
EndSub
Si ejecuta este programa y hace clic en la ventana, obtendr un punto azul. Ahora, si presiona cualquier
tecla una vez y hace clic de nuevo, obtendr un punto de un color diferente. Lo que sucede cuando
presiona una tecla es que la subrutina OnKeyDown (al presionar una tecla) se ejecuta, lo que cambia el
color del lpiz a un color aleatorio. Despus de eso, cuando hace clic con el mouse, un crculo se dibuja
usando el color recin cambiado, resultando en puntos de colores aleatorios.
Pgina 69 de 364
Un programa de dibujo
Ahora que ya conocemos los eventos y subrutinas, podemos escribir un programa que permita al
usuario dibujar en la ventana. Es muy simple escribir dicho programa, dado que podemos separar el
problema en pequeas partes. Como primer paso, vamos a escribir un programa que permita a los
usuarios mover el mouse por cualquier parte de la ventana de grficos, dejando un rastro mientras
mueve el mouse.
GraphicsWindow.MouseMove = OnMouseMove 'Al mover el mouse
Sub OnMouseMove
x = GraphicsWindow.MouseX
y = GraphicsWindow.MouseY
GraphicsWindow.DrawLine(prevX, prevY, x, y)
prevX = x
prevY = y
EndSub
Sin embargo, cuando ejecute este programa, la primera lnea siempre comienza en la esquina superior
izquierda de la ventana (0, 0). Podemos solucionar este problema utilizando el evento MouseDown y
capturando los valores de prevX y prevY cuando ocurra ese evento.
Adems, realmente slo necesitamos dejar el rastro cuando el usuario mantiene el botn presionado.
Las dems veces, no deberamos dibujar una lnea. Para obtener este comportamiento, usaremos la
propiedad IsLeftButtonDown (el botn izquierdo del mouse est presionado) en el objeto Mouse. Esta
propiedad dice si el botn izquierdo del mouse est siendo presionado o no. Si el valor es cierto,
dibujaremos la lnea, de lo contrario, no.
Pgina 70 de 364
GraphicsWindow.MouseMove = OnMouseMove
GraphicsWindow.MouseDown = OnMouseDown
Sub OnMouseDown
prevX = GraphicsWindow.MouseX
prevY = GraphicsWindow.MouseY
EndSub
Sub OnMouseMove
x = GraphicsWindow.MouseX
y = GraphicsWindow.MouseY
If (Mouse.IsLeftButtonDown) Then
GraphicsWindow.DrawLine(prevX, prevY, x, y)
EndIf
prevX = x
prevY = y
EndSub
Pgina 71 de 364
Apndice A
Ejemplos divertidos
Fractal con la tortuga
Pgina 72 de 364
ngulo = 30
delta = 10
distancia = 60
Turtle.Speed = 9
GraphicsWindow.BackgroundColor = "Black"
GraphicsWindow.PenColor = "LightGreen"
DrawTree()
Sub DrawTree
If (distancia > 0) Then
Turtle.Move(distancia)
Turtle.Turn(ngulo)
Stack.PushValue("distancia", distancia)
distance = distancia - delta
DrawTree()
Turtle.Turn(-ngulo * 2)
DrawTree()
Turtle.Turn(ngulo)
distancia = Stack.PopValue("distancia")
Turtle.Move(-distancia)
EndIf
EndSub
Fotografas de Flickr
Pgina 73 de 364
Pgina 74 de 364
GraphicsWindow.BackgroundColor = "Black"
GraphicsWindow.MouseDown = OnMouseDown
Sub OnMouseDown
foto = Flickr.GetRandomPicture("montaa, ro")
GraphicsWindow.DrawResizedImage(foto, 0, 0, 640, 480)
EndSub
Pgina 75 de 364
GraphicsWindow.BackgroundColor = "DarkBlue"
paddle = Shapes.AddRectangle(120, 12)
bola = Shapes.AddEllipse(16, 16)
GraphicsWindow.MouseMove = OnMouseMove
x = 0
y = 0
deltaX = 1
deltaY = 1
EjecutarBucle:
x = x + deltaX
y = y + deltaY
gw = GraphicsWindow.Width
gh = GraphicsWindow.Height
If (x >= gw - 16 or x <= 0) Then
deltaX = -deltaX
EndIf
If (y <= 0) Then
deltaY = -deltaY
EndIf
padX = Shapes.GetLeft(paddle)
If (y = gh - 28 and x >= padX and x <= padX + 120) Then
deltaY = -deltaY
EndIf
Shapes.Move(bola, x, y)
Program.Delay(5)
If (y < gh) Then
Goto EjecutarBucle
EndIf
GraphicsWindow.ShowMessage("Ha perdido", "Paddle")
Sub OnMouseMove
paddleX = GraphicsWindow.MouseX
Shapes.Move(paddle, paddleX - 60, GraphicsWindow.Height - 12)
EndSub
Pgina 76 de 364
Apndice B
Colores
A continuacin se muestra una lista de nombres de colores compatibles con Small Basic. Estn
clasificados en funcin de su matiz.
Rojos
IndianRed
#CD5C5C
LightCoral
#F08080
Salmon
#FA8072
DarkSalmon
#E9967A
LightSalmon
#FFA07A
Crimson
#DC143C
Red
#FF0000
FireBrick
#B22222
DarkRed
#8B0000
Rosas
Pink
#FFC0CB
LightPink
#FFB6C1
HotPink
#FF69B4
DeepPink
#FF1493
MediumVioletRed
#C71585
Pgina 77 de 364
PaleVioletRed
#DB7093
Naranjas
LightSalmon
#FFA07A
Coral
#FF7F50
Tomato
#FF6347
OrangeRed
#FF4500
DarkOrange
#FF8C00
Orange
#FFA500
Amarillos
Gold
#FFD700
Yellow
#FFFF00
LightYellow
#FFFFE0
LemonChiffon
#FFFACD
LightGoldenrodYellow
#FAFAD2
PapayaWhip
#FFEFD5
Moccasin
#FFE4B5
PeachPuff
#FFDAB9
PaleGoldenrod
#EEE8AA
Khaki
#F0E68C
DarkKhaki
#BDB76B
Prpuras
Lavender
#E6E6FA
Thistle
#D8BFD8
Plum
#DDA0DD
Violet
#EE82EE
Orchid
#DA70D6
Fuchsia
#FF00FF
Magenta
#FF00FF
MediumOrchid
#BA55D3
MediumPurple
#9370DB
Pgina 78 de 364
BlueViolet
#8A2BE2
DarkViolet
#9400D3
DarkOrchid
#9932CC
DarkMagenta
#8B008B
Purple
#800080
Indigo
#4B0082
SlateBlue
#6A5ACD
DarkSlateBlue
#483D8B
MediumSlateBlue
#7B68EE
Verdes
GreenYellow
#ADFF2F
Chartreuse
#7FFF00
LawnGreen
#7CFC00
Lime
#00FF00
LimeGreen
#32CD32
PaleGreen
#98FB98
LightGreen
#90EE90
MediumSpringGreen
#00FA9A
SpringGreen
#00FF7F
MediumSeaGreen
#3CB371
SeaGreen
#2E8B57
ForestGreen
#228B22
Green
#008000
DarkGreen
#006400
YellowGreen
#9ACD32
OliveDrab
#6B8E23
Olive
#808000
DarkOliveGreen
#556B2F
MediumAquamarine
#66CDAA
DarkSeaGreen
#8FBC8F
LightSeaGreen
#20B2AA
Pgina 79 de 364
DarkCyan
#008B8B
Teal
#008080
Azules
Aqua
#00FFFF
Cyan
#00FFFF
LightCyan
#E0FFFF
PaleTurquoise
#AFEEEE
Aquamarine
#7FFFD4
Turquoise
#40E0D0
MediumTurquoise
#48D1CC
DarkTurquoise
#00CED1
CadetBlue
#5F9EA0
SteelBlue
#4682B4
LightSteelBlue
#B0C4DE
PowderBlue
#B0E0E6
LightBlue
#ADD8E6
SkyBlue
#87CEEB
LightSkyBlue
#87CEFA
DeepSkyBlue
#00BFFF
DodgerBlue
#1E90FF
CornflowerBlue
#6495ED
MediumSlateBlue
#7B68EE
RoyalBlue
#4169E1
Blue
#0000FF
MediumBlue
#0000CD
DarkBlue
#00008B
Navy
#000080
MidnightBlue
#191970
Marrones
Cornsilk
#FFF8DC
Pgina 80 de 364
BlanchedAlmond
#FFEBCD
Bisque
#FFE4C4
NavajoWhite
#FFDEAD
Wheat
#F5DEB3
BurlyWood
#DEB887
Tan
#D2B48C
RosyBrown
#BC8F8F
SandyBrown
#F4A460
Goldenrod
#DAA520
DarkGoldenrod
#B8860B
Peru
#CD853F
Chocolate
#D2691E
SaddleBrown
#8B4513
Sienna
#A0522D
Brown
#A52A2A
Maroon
#800000
Blancos
White
#FFFFFF
Snow
#FFFAFA
Honeydew
#F0FFF0
MintCream
#F5FFFA
Azure
#F0FFFF
AliceBlue
#F0F8FF
GhostWhite
#F8F8FF
WhiteSmoke
#F5F5F5
Seashell
#FFF5EE
Beige
#F5F5DC
OldLace
#FDF5E6
FloralWhite
#FFFAF0
Ivory
#FFFFF0
AntiqueWhite
#FAEBD7
Pgina 81 de 364
Linen
#FAF0E6
LavenderBlush
#FFF0F5
MistyRose
#FFE4E1
Grises
Gainsboro
#DCDCDC
LightGray
#D3D3D3
Silver
#C0C0C0
DarkGray
#A9A9A9
Gray
#808080
DimGray
#696969
LightSlateGray
#778899
SlateGray
#708090
DarkSlateGray
#2F4F4F
Black
#000000
Pgina 82 de 364
Pgina 83 de 364
Pgina 84 de 364
Exploremos los diferentes elementos del entorno de programacin , donde tu vas a escribir tus
programas.
Puedes abrir y trabajar con varias ventanas de edicin a la vez.
La ventana de edicin donde esta el programa en el que estas trabajando actualmente es el
Editor activo.
Puedes formatear el codigo de programa que estas escribiendo, seleccionndolo, boton
derecho del raton y pulsando en Formato.
Puedes ejecutar el
programa bien pulsando
RUN /Ejecutar en la
barra de herramientas o
bien presionando la
tecla F5 en el teclado.
En la siguiente leccin
vas a analizar un
programa en detalle
para aprender ms
acerca de el.
Codigo:
TextWindow.WriteLine(
Hola Mundo!")
Pgina 85 de 364
TextWindow.WriteLine(Felicidades a todos")
Pgina 86 de 364
Contestaciones:
1. Un Lenguaje de programacin.
2. IntelliSense.
3. Presionando Run o F5.
Pgina 87 de 364
Pgina 88 de 364
Pgina 89 de 364
En la imagen previa hemos mencionado el objeto TextWindow. Small Basic contiene muchos ms
objetos.
Esos objetos tienen asociados ciertas propiedades, operaciones y sucesos.
Estudiemos las propiedades y operaciones de una ventana de texto y cmo podemos utilizarlas.
En este cdigo establecemos el color del fondo de la ventana de texto a gris y el color de delante a rojo.
Igualmente especificamos un ttulo para la ventana de texto y la situacin dnde queremos que la
ventana de texto aparezca en la pantalla del ordenador.
Para entender mejor el cdigo analicemos la salida del programa cuando lo ejecutas.
Como puedes ver el texto Press any key to continue aparece en rojo sobre un gris de fondo.
Esto es as porque estableciste la propiedad color de fondo(BackgroundColor ) y la propiedad color de
delante (ForegroundColor ) en rojo.
Date cuenta que el ttulo de la ventana es Fun with Small Basic Programming. Tu especificaste este
ttulo usando la propiedad Title en el objeto TextWindow .
La propiedad CursorTop indica la posicin de la lnea del cursor en la ventana de texto, y la propiedad
CursorLeft indica la columna del cursor. Tu has establecido esos valores por medio de las propiedades
CursorTop y CursorLeft .
Igualmente las propiedades Top y Left indican la posicin superior e izquierda de la ventana de texto en
la pantalla del ordenador.
Codigo:
TextWindow.BackgroundColor = "Gray"
TextWindow.ForegroundColor = "Red"
TextWindow.Title = "Fun with Small Basic Programming"
TextWindow.CursorTop = 20
TextWindow.CursorLeft = 30
TextWindow.Top = 300
TextWindow.Left = 300
Pgina 90 de 364
A parte de las
operaciones Show y
Hide , tambien
puedes realizar otras
operaciones sobre un
objeto TextWindow .
You can write text in the text window by using the Write operation of the TextWindow
object.
Puedes escribir testo en la ventana de texto usando la operacin Write del objeto
TextWindow .
Codigo:
TextWindow.Write("Hi, everyone!")
TextWindow.Write("How are you doing?")
Pgina 91 de 364
La operacin
Read del objeto
TextWindow no
necesita ningn
parmetro. Indica
al ordenador que
espere hasta que
el usuario escriba
algo y presione la
tecla ENTER.
Despues de que se
presione ENTER el
programa lee los
que el usuario ha
escrito y lo guarda
en su memoria. Puedes usar la operacin Write o WriteLine para mostrar la
informacin guardada.
Codigo:
TextWindow.Write("Enter your name: ")
name = TextWindow.Read()
TextWindow.WriteLine("Hello " + name + ".")
Pgina 92 de 364
Cuando el
programa comienza
el ordenador lee la
primera lnea, la
cual contiene la
primera operacin
WriteLine
El ordenador abre
la ventana de texto
y escribe la
palabbra Hi en
ella.
Entonces el
ordenador lee la
segunda lnea, la
cual contiene la
operacin Pause. El ordenador espera a que se introduzca algn dato.
Cuando se introduce algn dato el ordenador lee la tercera lnea, la cual contiene la
operacin Clear. El ordenador borra la palabra Hi de la ventana de texto.
Finalmente el ordenador lee la ltima lnea, la cual contiene la operacin Write Line. El
ordenador escribe la palabra Hello en la ventana de texto
Codigo:
TextWindow.WriteLine("Hi")
TextWindow.Pause()
TextWindow.Clear()
TextWindow.WriteLine("Hello")
Pgina 93 de 364
Solution:
TextWindow.Top = 100
TextWindow.Left = 200
TextWindow.Title = "Small Basic Programming"
TextWindow.CursorTop = 10
TextWindow.CursorLeft = 20
TextWindow.ForegroundColor = "Yellow"
TextWindow.WriteLine("Welcome to the world of Small Basic programming.")
Pgina 94 de 364
Pgina 95 de 364
Una variable un valor que el programa puede usar ms tarde.Si ejecutas el programa
de nuevo pero asignas a la variable un valor diferente, el nuevo valor reemplaza al
antiguo.
When you run a program, the value in the variable is also used as you specify in the
code. You can reuse a variable as many times as your program requires.
Cuando ejecutas un programa el valor de la variable es utilizado como lo indiques en el
cdigo. Puedes rehusar una variable tantas veces como el programa lo requiera.
Codigo:
TextWindow.Write("What is your name? ")
name = TextWindow.Read()
TextWindow.WriteLine("Hello, " + name + ".")
Pgina 96 de 364
Pgina 97 de 364
En el ejemplo anterior, usaste una variable para guardar texto, la cual es conocida
tambin como cadena(string). Veamos ahora un ejemplo de cmo guardar valores
numricos en variables.
En este ejemplo utilizas la operacin Write para que el usuario especifique el ancho y
el alto del reptngulo. Creas unas variables que llamas length y width (largo y ancho) y
usas la operacion ReadNumber para que el ordenador guarde lo que escriba el usuario
en esas variables. Despues se crean las variables area y perimeter y el programa
calcula sus valores y los guarda en sus correspondientes variables. Finalmente se usa la
operacin WriteLine para mostrar el resultado.
Despus de escribir el programa, puedes ejecutarlo presionando la tecla Run o
presionando la tecla F5
Codigo:
TextWindow.Title = "Area and Perimeter"
TextWindow.Write("How long is the rectangle? ")
length = TextWindow.ReadNumber()
TextWindow.Write("How wide is the rectangle? ")
width = TextWindow.ReadNumber()
area = length * width
perimeter = 2 * length + 2 * width
TextWindow.WriteLine("The area of the rectangle is " + area + ".")
TextWindow.WriteLine("The perimeter of the rectangle is " + perimeter + ".")
Pgina 98 de 364
Si quieres guardar varios valores del mismo tipo, puedes usar un array en vez de crear
multiples variables.
Entonces puedes realizar varias operaciones a los valores en grupo.
En este ejemplo, defines un array que contendr nombre de estudiantes. Luego usars
una operacin del objeto Array para buscar un valor especfico dentro del array.
Codigo:
TextWindow.Title = "Array Object"
TextWindow.Write("What is the name of the first student? ")
students[1] = TextWindow.Read()
TextWindow.Write("What is the name of the second student? ")
students[2] = TextWindow.Read()
TextWindow.Write("What is the name of the third student? ")
students[3] = TextWindow.Read()
Textwindow.WriteLine("Is Robin' here? " + Array.ContainsValue(students, "Robin"))
Pgina 99 de 364
Solucin:
TextWindow.Write("What is the diameter of the circle? ")
diameter = TextWindow.ReadNumber()
radius = diameter / 2
area = (3.14) * radius * radius
circumference = (3.14) * 2 * radius
TextWindow.WriteLine("The area of the circle is " + area + ".")
TextWindow.WriteLine("The circumference of the circle is " + circumference + ".")
En Small Basic se usa el objeto Clock para conocer la fecha y hora actual.
Usas la palabra clave If para especificar una condicin que el ordenador evalua y
determinar si una operacin particular hay que ejecutarla o no. Entonces se usa la
palabra clave Then para especificar que operaciones se deben ejecutar si la condicin
es verdadera. Si la condicin es falsa el ordenador salta a la siguiente lnea del
programa. Usamos la palabra clave EndIf para indicar al ordenador que debe continuar
en la siguiente lnea del programa independientemente si la condicin es verdadera o
falsa.
In this example, you use the If keyword specify the condition that today is the first day
of the first month of the year (January). You use the Then keyword to specify that, if
today is the first day of the first month, the computer should run the WriteLine
operation. If today is not the first day of the first month, the computer should skip the
operation and proceed to the EndIf line of the program.
En este ejemplo usamos If para especificar la condicin de que hoy sea 1 de Enero.
Usamos Then para especificar que si hoy es 1 de Enero el ordenador debe realizar la
operacin WriteLine. Si hoy no es 1 de Enero, el ordenador se salta esa operacin y
continua en la linea del programa donde aparece EndIf.
Codigo:
If Clock.Day = 1 And Clock.Month = 1 Then
TextWindow.WriteLine("Happy New Year")
EndIf
Codigo:
If Clock.Hour < 12 then
TextWindow.WriteLine("Did you have your breakfast?")
EndIf
If Clock.Hour > 12 then
TextWindow.WriteLine("Did you have your lunch?")
EndIf
En este programa, primero pides que el usuario escriba un nmero. Despus creas un
avariable para guardar ese nmero, y usa la operacin ReadNumber para determinar el
nmero escrito por el usuario.
Seguidamente creas una variable para guardar el resto despus de dividir el nmero
entre dos, y usas la operacin MathRemainder para averiguar si el resto es 0.
Finalmente afirmas que el nmero es par si el resto es 0 y que es impar si el resto no es
0.
Codigo:
TextWindow.Write("Enter a number: ")
number = TextWindow.ReadNumber()
remainder = Math.Remainder(number, 2)
If remainder = 0 Then
TextWindow.WriteLine("The number is even.")
Else
TextWindow.WriteLine("The number is odd.")
EndIf
Codigo:
TextWindow.WriteLine("What is the current temperature in degrees Celsius? ")
temp = TextWindow.Read()
If temp <= 5 Then
TextWindow.WriteLine("Its very cold today.")
ElseIf temp <= 15 Then
TextWindow.WriteLine("Its cool today.")
ElseIf temp <= 25 Then
TextWindow.WriteLine("Its warm today.")
Else
TextWindow.WriteLine("Its quite hot today.")
EndIf
Codigo:
For a = 1 to 10
TextWindow.WriteLine(a)
EndFor
In this program, you first use the WriteLine operation to display "Multiplication Table"
on the screen.
Then you create the variable number to store the value of 5.
Then you create a For loop with the variable a to ensure the WriteLine operation will
run 10 times.
You use the WriteLine operation to display the following elements in this order:
--the value that is stored in the a variable
--the multiplication sign
--the value that is stored in the number variable
--the equals sign
--the products of the values of the a and number variables
Code:
TextWindow.WriteLine("Multiplication Table")
number = 5
For a = 1 to 10
TextWindow.WriteLine(a + " x " + number + " = " + a * number)
EndFor
Incluso puedes disminuir el valor de la variable contador si usas la palabra clave Step
especificando un valor negativo. Por ejemplo puedes escribir un programa que cuente
hacia atrs desde 10 a 1 en la pantalla si asignas el valor -1 conla palabra clave Step
Codigo:
TextWindow.WriteLine("Multiply odd numbers by 5:")
number = 5
For a = 1 to 10 Step 2
TextWindow.WriteLine(a + " x " + number + " = " + a * number)
EndFor
Solucion:
TextWindow.Write("How many student grades would you like to calculate? ")
number = TextWindow.Read()
n=1
While n <= number
TextWindow.Write("What is the students percentage? ")
percentage = TextWindow.Read()
If percentage >= 75 Then
TextWindow.WriteLine("The students grade is A.")
ElseIf percentage < 75 And percentage >= 60 Then
TextWindow.WriteLine("The students grade is B.")
ElseIf percentage < 60 And percentage >= 35 Then
TextWindow.WriteLine("The students grade is C.")
Else
TextWindow.WriteLine("The students grade is D.")
EndIf
n=n+1
EndWhile
Codigo:
j=1
lineQ:
TextWindow.WriteLine(j)
j= j+1
If j < 30 Then
Goto lineQ
EndIf
Atencin. Si utilizas muchas veces la instruccin Goto tu programa ser dificil de entender y de corregir.
Aunque estas instrucciones son tiles en algunas ocasiones, debes intentar estructurar tus programas de
forma que la instruccin Goto se utilice lo menos posible.
Codigo:
start:
TextWindow.WriteLine("How many members are in your family?")
number = TextWindow.ReadNumber()
remainder = Math.Remainder(number, 2)
If remainder = 0 Then
TextWindow.WriteLine("Your family has an even number of members.")
Else
TextWindow.WriteLine("Your family has an odd number of members.")
EndIf
Goto start
Si usas subrutinas tus programas sern ms sencillos de leer y de entender que si usas
intrucciones Goto
En este programa, tu escribes la subrutina Divide una vez, pero puedes ejecutarla
desde cualquier punto del programa.
Cuando ordenas al ordenador que ejecute un asubrutina, usas una instruccin que
contiene el nombre de la subrutina seguido de parentesis. Cuando usas este tipo de
instrucciones , estas llamando a la subrutina.
Codigo:
While i < 5
TextWindow.WriteLine("Enter Dividend: ")
Dividend = TextWindow.Read()
TextWindow.WriteLine("Enter Divisor: ")
Divisor = TextWindow.Read()
Divide()
TextWindow.WriteLine("Your answer is: " + Answer)
i=i+1
EndWhile
Sub Divide
Answer = Dividend / Divisor
EndSub
Solucion:
up:
If i < 10 then
TextWindow.WriteLine("")
TextWindow.Write("What is the name of a city? ")
city = TextWindow.Read()
TextWindow.Write("How warm is that city (in degrees Celsius)? ")
temp = TextWindow.Read()
TextWindow.Write("Is it rainy (Y/N)? ")
rainy = TextWindow.Read()
TextWindow.Write("Is it windy (Y/N)? ")
windy = TextWindow.Read()
'Calling subroutines
subtempCount()
subrainyCount()
subwindyCount()
i=i+1
If i = 10 Then
subOutput()
EndIf
EndIf
Goto up
Sub subtempCount
If temp <= 5 Then
ColdCount = ColdCount + 1
ElseIf temp <= 15 Then
CoolCount = CoolCount + 1
ElseIf temp <= 25 Then
WarmCount = WarmCount + 1
Else
HotCount = HotCount + 1
EndIf
EndSub
Sub subRainyCount
If Rainy = "y" Or Rainy = "Y" Then
RainyCount = RainyCount + 1
EndIf
EndSub
Puedes mostrar la
ventana grfica
escribiendo la
orden statement
GraphicsWindow.S
how() en la ventana
del editor.
Igualmente puedes
esconderla usando
la orden
GraphicsWindow.Hi
de().
Puedes modificar la
apariencia de la
ventana grfica especificando algunas de sus propiedades. Por ejemplo, puedes
ponerle un ttulo con la propiedad Title. Igualmente puedes modificar su altura,
anchura color de fondo con las propiedades Height, Width, and BackgroundColor .
Puedes usar algunas popiedades del objeto GraphicsWindow solo para mostrar
formas, pero puedes usar otras propiedades (como MouseX y MouseY) cuando
necesites trabajar con el ratn y el teclado . Estudiars ms de estas propiedades, junto
con eventos e interactividad en Small Basic, ms adelante.
Codigo:
GraphicsWindow.PenColor = "Purple"
GraphicsWindow.PenWidth = 3
GraphicsWindow.BrushColor = "Green"
x = GraphicsWindow.MouseX
y = GraphicsWindow.MouseY
En este ejemplo:
1. Comienzas fijando el ttulo, la anchura, altura de la ventana grfica. Cuando
fijas la anchura y altura rten en cuenta especificar un area que sea lo
sufientemente grade para contener todas las formas que quieras dibujar
ms tarde.
2. Usas las propieddes PenColor y PenWidth para especificar color del borde
y su anchura de la forma que quieres dibujar. Puedes volver a utilizar estas
propiedades ms tarde para especificar la anchura y color del borde en la
siguiente forma que quieras dibujar.
3. Para dibujar un reptngulo usas la operacin DrawRectangle y especifcas
sus parmetros que son valores que determinan como aparecer el
reptngulo. Estos parmetros iincluyen , no solo la coordinada x y la
coordinada y del ractangulo( que determina la situacin de lae squina
superior izquierda), si no tambin la anchura y altura del reptngulo( que
determinan su tamao y proporciones).
1. Para rellenar un reptngulo con un color usamos la operacin FillRectangle
, y especificas los mismos parmetros que especificamos cuando usamos la
aperacin DrawRectangle . Si no especificas un color de relleno con la
propiedad BrushColor, las formas son rellenadas con azul(como muestra la
figura).
2. Para dibujar una elipse y rellenarla con un color diferente, especificas el
color usando la propiedad BrushColor, dibuja la elipse usando la operacin
DrawEllipse, y rellena la elipse con la operacin FillEllipse.
Igual que cuando dibujamos un reptngulo, especificas los parametros para
determinar su posicin, tamao, forma de la elipse. Por ejemplo, puedes
dibujar un crculo especificando el mismo valor para la anchura que para la
altura. Puedes especificar los mismos valores para los parmetros de la
operacin FillEllipse, como hicistes cuando utilizastes la operacion DrawElipse.
1. Para dibujar una lnea, especificas el color de la lnea utilizando la propiedad
PenColor , y especificas su situacin, longitud y angulo de la lnea utilizando
la operacin DrawLIne y sus parametros.
Para especificar los parmetros de la operacin DrawLine , debes incluir la
coordinada x y la coordenada y de ambos extremos de la lnea.
Para comprobar el resultado de tu programa ejectalo. Las formas que aparecen en la
ventana grfica reflejan el tipo, tamao situacin y colores que has especificado en tu
cdigo.
Codigo:
GraphicsWindow.Title = "Graphics Window"
GraphicsWindow.Height = 300
GraphicsWindow.Width = 300
GraphicsWindow.PenColor = "Black"
GraphicsWindow.PenWidth = 3
GraphicsWindow.DrawRectangle(70, 60, 100, 150)
GraphicsWindow.FillRectangle(70, 60, 100, 150)
GraphicsWindow.BrushColor = "Green"
Puedes elegir entre un avariedad de colores en Small Basic. En tu cdigo puedes especificar los
colores por su nombre o por su cdigo de color , que es un nmero hexadecimal (base 16).
Adems de dibujar formas, tambin puedes crear diseos atractivos usando las
condiciones(if) y los ciclos(loop). En este ejemplo creas un diseo de codigo de barras
de colores usando un ciclo For. Tambien puedes aleatorizar los colores de las lneas
usando la operacin GetRandomColor.
Puedes mostrar una caja de mensage utilizando la operacin ShowMessage del objeto
GraphicsWindow.Para esto, solo debes proporcionar dos parmetros el mensage que
aparece en la caja y el ttulo que aparece en la caja.
Para ejecutar el programa presiona F5 o presiona el boton Run.
Codigo:
GraphicsWindow.Title = "Graphics Window"
GraphicsWindow.BackgroundColor = "White"
GraphicsWindow.Width = 325
GraphicsWindow.Height = 200
For i = 1 To 15
GraphicsWindow.PenColor = GraphicsWindow.GetRandomColor()
GraphicsWindow.PenWidth = i
GraphicsWindow.DrawLine(i * 20, 20, i * 20, 180)
EndFor
GraphicsWindow.ShowMessage("Create wonderful designs and shapes in Small Basic",
"Message")
Ensure that you specify the correct path and file name for the image that you want to
display.
Solution:
GraphicsWindow.Show()
GraphicsWindow.Title = "A Graphics Window"
GraphicsWindow.Height = 640
GraphicsWindow.Width = 800
GraphicsWindow.BackgroundColor = "Black"
GraphicsWindow.PenWidth = 10
GraphicsWindow.PenColor = "Gold"
GraphicsWindow.DrawLine(65, 100, 65, 370)
GraphicsWindow.PenColor = "Black"
GraphicsWindow.BrushColor = "Cyan"
GraphicsWindow.DrawEllipse(70, 250, 100, 100)
GraphicsWindow.FillEllipse(70, 250, 100, 100)
For i = 1 To 10
GraphicsWindow.PenColor = GraphicsWindow.GetRandomColor()
GraphicsWindow.PenWidth = 2
GraphicsWindow.Drawrectangle(100, i * 20, 50, 10)
EndFor
image1 = "C:\Small Basic\Winter.jpg"
GraphicsWindow.DrawResizedImage(image1, 200, 100, 500, 500)
GraphicsWindow.ShowMessage("Have a nice day!", "Message")
Has aprendido como utilizar la ventana de textos y la ventana grfica. Tambin has
aprendido como utilizar varias rdenes,, propiedades y operaciones. Ahora, encuentra
tu nuevo amigo en Small Basic., la tortuga. Con su ayuda, puedes dibujar formas y
grficos en la pantalla. Puedes ocultar la tortuga con la operacion Hide.
Codigo:
Turtle.Show()
Puedes girar la tortuga para que encare una direccin determinada, especificando un
valor para la propiedad Angle, usando la operacion Turn, o usando las operacines
TurnRight y TurnLeft. por ejemplo puedes rotar la tortuga para que mire hacia la
izquierda de la ventana grfica usando cualquiera de las siguientes estrategias:
-- Puedes especificar el valor de la propiedad Angle.
-- Puedes utilizar la operacin Turn y especificar los siguientes valores para sus
parmetros:
--270 si la tortuga ya est mirando hacia la parte superior de la ventana.
--180 si la tortuga est mirando hacia la derecha.
--90 si la tortuga est mirando hacia abajo de la ventana.
Si usas esta operacin la tortuga siempre gira hacia la derecha ( en el sentido de las
agujas del reloj).
--Puedes utilizar la operacion TurnRight tres veces si la tortuga ya est mirando hacia
arriba, dos veces si la tortuga est mirando a la derecha , y una si la tortuga est
mirando hacia abajo.
--Puedes usar la operacion TurnLeft una vez si la tortuga est mirando hacia arriba, dos
veces si la tortuga est mirando hacia la derecha y tres veces si la tortuga est mirando
hacia
Codigo:
Turtle.Speed = 8
Turtle.Turn(90)
Turtle.TurnLeft()
Turtle.TurnRight()
Turtle.Angle = 90
Turtle.PenUp()
Turtle.Move(260)
Turtle.Turn(60)
Turtle.Move(120)
Turtle.PenDown()
For i = 0 To 200 Step 5
GraphicsWindow.PenColor = GraphicsWindow.GetRandomColor()
Turtle.Move(i)
Turtle.Turn(120)
EndFor
Solucion:
GraphicsWindow.Height = 400
GraphicsWindow.Width = 400
GraphicsWindow.Title = "Turtle Graphics"
Turtle.Show()
Turtle.Speed = 10
Turtle.X = 100
Turtle.Y = 200
For i = 0 To 200 Step 5
GraphicsWindow.PenColor = GraphicsWindow.GetRandomColor()
Turtle.Move(i)
Turtle.Turn(150)
EndFor
Turtle.PenUp()
Turtle.Move(300)
Turtle.Turn(105)
Turtle.Move(150)
Turtle.PenDown()
Como muestra este ejemplo, puedes insertar un aforma en la ventana grfica usando el
objeto Shapes. Para insertar un reptngulo, puedes utilizar la operacin AddReptangle.
Entonces puedes realizar acciones sobre el reptngulo utilizando varias de las
operaciones del objeto Shapes. Por ejemplo, puedes mostrar o esconder el reptngulo
usando las operaciones ShowShape y HideShape, y puedes cambiar la opacidad del
reptngulo usando la operacin SetOpacity
Para verificar la salida e tu programa presiona Run o presiona F5. Una forma
reptngulo aparecer y desaparecer despues de que transcurra un segundo. Cuando
el reptngulo reaparece su opacidad est reducida. Esta accin continua hasta que el
reptngulo es completamente transparente.
Codigo:
rectangle = Shapes.AddRectangle(400, 300)
Shapes.Move(rectangle, 100, 50)
For i = 1 To 10
Shapes.ShowShape(rectangle)
Program.Delay(1000)
Shapes.HideShape(rectangle)
Shapes.SetOpacity(rectangle, 100 - i * 10)
Program.Delay(800)
EndFor
Para hacer una forma completamente opaca, debes especificar como 100 el parametro
de la operacin SetOpacity.
Para hacer una forma completamente transparente, debes especificar como 0 el
parametro de la operacin SetOpacity.
Codigo:
rectangle = Shapes.AddRectangle(150, 100)
Shapes.HideShape(rectangle)
Shapes.ShowShape(rectangle)
Shapes.SetOpacity(rectangle, 50)
Shapes.GetOpacity(rectangle)
Tambien puedes mostrar imagenes utilizando el objeto Shapes.. Para mostrar una
imagen puedes usar la operacin AddImage. Posteriormente puedes realizar algunas
acciones sobre la forma usando algunas operaciones del objeto Shape. Por ejemplo,
mover una forma en la ventana con la operacin Move. Para animar una forma puedes
utilizar la operacin Animate. Igualmente para aumentar una forma en la ventana
puedes usar la operacin Zoom.
Para comprobar la salida del programa pulsa Run o la tecla F5. Una imagen aparece en
la ventana. La imagen se mueve a una posicin distinta y es animada. Finmalmente la
imagen aumentada hasta cubrir toda la ventana grfica.
Codigo:
imagepath = "C:\Small Basic\Water lilies.jpg"
image=Shapes.AddImage(imagepath)
Shapes.Move(image, 5, 5)
Shapes.Animate(image, 20, 20, 1000)
Shapes.Zoom(image, 0.1, 0.1)
For i=0 To 1 Step 0.1
Program.Delay(1000)
Shapes.Zoom(image, 0.1 + i, 0.1 + i)
EndFor
Codigo:
rectangle = Shapes.AddRectangle(150, 100)
Shapes.Move(rectangle, 125, 125)
Puedes animar formas usando la operacin Animate. Por ejemplo, puedes querer
mover una bola de una posicin a otra. Primero creamos la forma bola usando la
operacion AddEllipse y establecemos la posicin original de la bola usando la
operacion Move. Seguidamente defines una variable con una nueva coordenada x.
Usars esa variable cuando animes la bola usando la oparacin Animate. Tambin
creas un reptngulo contra el cual vas a animar la bola. Defines una simple condicional
para animar la bola contra el reptngulo.
Para comprobar la salida del programa pulsa Run o la tecla F5.
Cuando el programa se ejecuta , la bola es animada contra el reptngulo.
Codigo:
GraphicsWindow.Title = "Exploring Shapes"
shape1 = Shapes.AddRectangle(100, 100)
Sball = Shapes.AddEllipse(100, 100)
Shapes.Move(Sball, 0, 340)
x = 450
GraphicsWindow.DrawRectangle(550, 0, 80, 450)
GraphicsWindow.BrushColor = "Purple"
GraphicsWindow.FillRectangle(550, 0, 80, 450)
Shapes.Animate(Sball, x, 40, 490)
Program.Delay(500)
If (Shapes.GetLeft(Sball) = x) Then
Puedes girar formas usando condicionales y ciclos (bucles). Por ejemplo, puedes querer
rotar un reptngulo en su posicin original.. Primero creas la forma usando la
operacin AddRectangle, y estableces su posicin original con la operacion Move.
Seguidamente usas un ciclo For para girar la forma de su posicin original a una nueva
posicin.
Para comprobar la salida del programa pulsa Run o la tecla F5.
Cuando el programa se ejecuta el reptngulo gira y se mueve de posicin.
Codigo:
GraphicsWindow.Title = "Exploring Shapes"
GraphicsWindow.BrushColor = "Purple"
rotateshape = Shapes.AddRectangle(150, 100)
Shapes.Move(rotateshape, 200, 150)
For i = 0 To 12
Shapes.Rotate(rotateshape, 30 * i)
Program.Delay(1000)
EndFor
En este ejemplo usas un bucle o ciclo For para crear varios reptngulos, posicionarlos
en orden ascendente segn tamao. Usamos tambin GetRandomColor para
aleatorizar el color de los reptngulos.
Para comprobar la salida del programa pulsa Run o la tecla F5. Cuando el programa se
ejecuta aparecen en la pantalla un montn de coloridos reptngulos.
Codigo:
GraphicsWindow.Title = "Exploring Shapes"
GraphicsWindow.Height = 500
GraphicsWindow.Width = 700
For i = 0 To 20
GraphicsWindow.PenWidth = 0.5
GraphicsWindow.BrushColor = GraphicsWindow.GetRandomColor()
rectangle1 = Shapes.AddRectangle(i * 20, i * 10)
Shapes.Move(rectangle1, i * 10, i * 10)
EndFor
Solucion:
GraphicsWindow.Title = "Exploring Shapes"
GraphicsWindow.Height = 200
GraphicsWindow.Width = 300
GraphicsWindow.PenColor = "Purple"
base = Shapes.AddLine(0, 0, 300, 0)
Shapes.Move(base, 0, 100)
GraphicsWindow.PenColor = "Black"
GraphicsWindow.BrushColor = "Cyan"
circle = Shapes.AddEllipse(50, 50)
Shapes.Move(circle, 0, 50)
Shapes.Animate(circle, 250, 50, 1000)
Puedes reproducir un sonido con la operacin Play del objeto Sound. Tienes que
especificar la ruta del fichero de sonido que quieres reproducir o la URL del sonido en
la Web , como parametro para poder reproducir el sonido..
Igualemente usa la operacin Pause con la ruta del fichero de sonido como parmetro.
Se para de reproducir el sonido con la operacin Stop.
Observa tambien el uso de la operacin Delay. La operacin Delay permite posponer la
ejecucin de los comandos.
Puedes usar ficheros de sonido en varios formatos ( mp3, .wav, .wma).
En este ejemplo vemos como reproducir un sonido especificando la ruta del fichero.
Este ejemplo explica como incluir sonidos ya establecidos , como una campana, un
timbre y un click.
Despues de un segundo, el programa ejecuta la operacin PlayBellRing. Despus de
otro segundo la operacin PlayChime se ejecuta y un timbre se escucha. Despes de
otro segundo, la operacin PlayClick se ejecuta y se escucha un click.
La operacin PlayAndWait reproduce un archivo de sonido y espera hasta que se
termina de reproducir. Si la reproducin es detenida momentaneamente, la
reproducin se reanudara desde el punto dnde haba sido detenida.
When you work in Small Basic, you can perform operations on text by typing a
statement that contains the Text object.
In this example:
1. First, you ask for the users first name and last name by using the Write and
Read operations of the TextWindow object.
2. You then append the last name to the first name by using the Append
operation of the Text object.
3. Next, you convert the appended text into uppercase letters by using the
ConvertToUpperCase operation of the Text object.
You must specify the name of the variable that is holding the assigned text as a
parameter. Similarly, you can also use the ConvertToLowerCase operation to
convert the text to lowercase letters.
To verify the output of your program, click Run on the toolbar, or press F5 on the
keyboard.
Cuando trabajas en Small Basic puedes realizar operaciones sobre un texto escribiendo una orden que
contenga el objeto Text.
En este ejemplo:
1. Primero, preguntas por el nombre y apellidos del usuario usando la operacin Write y
Read del objeto TextWindow.
2. Despus, aades el apellido al nombre utilzando la operacin Append del objeto Text.
3. Seguidamente, conviertes a mayusculas usando la operacin ConvertToUpperCase del
objeto Text.Debes especificar el nombre de la variable que guarda el texto como
parametro. Igualmente puedes convertir el texto a minusculoas usando la operacin
ConvertToLowerCase
Para comprobar el programa presiona Run o F5
Puedes utilizar operaciones del objeto Text para verificar si un texto concreto o si un
caracter forma parte de un texto ms largo.
Para demostrar esta tcnuica, usamos las operaciones Write y Read del objeto
TextWindow para obtener una direccin de correo electronico del usuario. Despus
usamos la operacin IsSubText del objeto Text para determinar si el usuario ha
especificado una direccin vlida.
Solucion:
TextWindow.Title = "Lets take a quiz"
TextWindow.WriteLine("Name the third planet from the Sun: ")
answer = TextWindow.Read()
If (Text.StartsWith(answer, "Earth") Or Text.StartsWith(answer, "earth")) Then
Sound.PlayChime()
TextWindow.WriteLine("You are absolutely right!")
Else
TextWindow.WriteLine("That is incorrect.")
Sound.PlayBellRing()
EndIf
Codigo:
TextWindow.WriteLine("Enter the year of your birth:")
birthyear = TextWindow.Read()
age = Clock.Year - birthyear
TextWindow.WriteLine("Your age is " + age + ".")
Codigo:
TextWindow.Write("Enter the month of your birthday:")
birthdaymonth = TextWindow.ReadNumber()
TextWindow.Write("Enter the date of your birthday:")
Birthdaydate = TextWindow.ReadNumber()
If (birthdaymonth = Clock.month And birthdaydate =Clock.Day) Then
TextWindow.WriteLine("Hey! Wish You A Very Happy Birthday!")
EndIf
En este ejemplo usamos las proiedades Hour, Minute y Second del objeto Clock para
mostrar un reloj digital. Marcamos como PM si la hora es igual o mayor que 12. Al
contrario marcariamos el reloj como AM.
Para hacer que el reloj funciones sin interrupcin, usamos Goto para saltar a up
despus de 1000 milisegundos.
Codigo:
GraphicsWindow.FontSize = 26
GraphicsWindow.BrushColor = "Green"
up:
If Clock.Hour >= 12 Then
status = "PM"
Else
status = "AM"
EndIf
CurrentTime = Clock.Hour + " : " + Clock.Minute + " : " + Clock.Second + " " + status
GraphicsWindow.DrawBoundText(100, 100, 400, "Time: " + CurrentTime)
Program.Delay(1000)
GraphicsWindow.Clear()
Goto up
Codigo:
ImagePath = Program.Directory + "\Blue.jpg"
Desktop.SetWallPaper(ImagePath)
Las proiedades Height y Width del objeto Desktop son muy tiles cuando quieres
mostrar texto o grficos en una ventana en las mismas posiciones relativas a la esquina
superior izquierda independientemente del tamao del escritorio.
En este ejemplo la vantana grfica es de 400 pixeles de alta y 500 de ancha. Para
mostrar esa ventana en el centro del escritorio , resta la altura y anchura de la ventana
de la altura y anchura del escritorio y divide el resultado entre 2.
Codigo:
GraphicsWindow.Height = 400
GraphicsWindow.Width = 500
GraphicsWindow.Top = (Desktop.Height - GraphicsWindow.Height) / 2
GraphicsWindow.Left = (Desktop.Width - GraphicsWindow.Width) / 2
Codigo:
txt = "Magnanimous"
GraphicsWindow.FontName = "verdana"
GraphicsWindow.FontSize = 24
GraphicsWindow.BrushColor = "Black"
GraphicsWindow.DrawText(10, 10, txt)
defn = Dictionary.GetDefinition(txt)
GraphicsWindow.FontSize = 12
GraphicsWindow.BrushColor = "Black"
GraphicsWindow.DrawText(10, 60, defn)
Solucion:
subSetAlarm()
imagePath = program.Directory + "\desk.jpg"
up:
If Clock.Time = alarm Then
Desktop.SetWallPaper(imagePath)
Sound.PlayBellRing()
EndIf
Program.Delay(1000)
Goto up
Sub subSetAlarm
TextWindow.WriteLine("Set Alarm")
TextWindow.Write("Enter Hour: ")
hour = TextWindow.Read()
TextWindow.Write("Enter Minute: ")
minute = TextWindow.Read()
TextWindow.Write("AM/PM?: ")
AmPmStatus = TextWindow.Read()
alarm = hour + ":" + minute + ":00 " + AmPmStatus
TextWindow.WriteLine("Alarm Time: " + alarm)
EndSub
Codigo:
GraphicsWindow.BackgroundColor = "Black"
Pic = Flickr.GetPictureOfMoment()
GraphicsWindow.DrawResizedImage(Pic, 0, 0, 600, 400)
Codigo:
For image = 1 to 5
pic = Flickr.GetRandomPicture("landscape")
Desktop.SetWallPaper(pic)
Program.Delay(10000)
EndFor
Codigo:
Image = ImageList.LoadImage(ImagePath)
Width = ImageList.GetWidthOfImage(ImagePath)
Height= ImageList.GetHeightOfImage(ImagePath)
GraphicsWindow.Width = Width
GraphicsWindow.Height= Height
GraphicsWindow.DrawImage(Image, 0, 0)
Codigo:
FilePath="http://www.microsoft.com/"
DownloadFile = Network.DownloadFile(FilePath)
TextWindow.WriteLine("Downloaded File:" + DownloadFile)
Codigo:
FilePath = "http://www.microsoft.com/"
WebPageContent = Network.GetWebPageContents(FilePath)
TextWindow.WriteLine("Page Content: ")
TextWindow.WriteLine(WebPageContent)
Solucion:
While picture < 10
ImagePath = Flickr.GetRandomPicture("Animals")
Images = ImageList.LoadImage(ImagePath)
GraphicsWindow.Height = ImageList.GetHeightOfImage(Images)
GraphicsWindow.Width = ImageList.GetWidthOfImage(Images)
GraphicsWindow.DrawImage(Images, 0, 0)
Program.Delay(2000)
picture = picture + 1
EndWhile
Codigo:
FilePath = "C:\temp\TempSubdirectory\my.txt"
TextWindow.WriteLine("Write Content = " + File.WriteLine(FilePath, 1, "Shakespeare
was a great writer."))
TextWindow.WriteLine("Append Content = " + File.AppendContents(FilePath, "He wrote
many plays."))
TextWindow.WriteLine("Read Content = " + File.ReadContents(FilePath))
Codigo:
sourcefilepath = "C:\temp\TempSubdirectory\my.txt"
destinationfilepath ="C:\temp\TempSubdirectory\Move"
directorypath = "C:\temp\"
TextWindow.WriteLine("Copy file Operation:" + File.CopyFile(sourcefilepath,
destinationfilepath))
TextWindow.WriteLine("Files in the directory: " + File.GetFiles(directorypath))
Codigo:
directorypath1 = "C:\temp\Small Basic"
TextWindow.WriteLine("Create Directory: " + File.CreateDirectory(directorypath1))
directorypath2 = "C:\temp"
TextWindow.WriteLine("Directories: " + File.GetDirectories(directorypath2))
Codigo:
FilePath = "C:\temp\TempSubdirect\my.txt"
TextWindow.WriteLine("Write Line Operation: " + File.WriteLine(FilePath, 1, "How are
you?"))
If File.LastError = "" Then
TextWindow.WriteLine("Operation Successful")
Else
TextWindow.WriteLine(File.LastError)
EndIf
This solution requires the file to exist with the specified name in the specified location.
La solucin requiere que exista un fichero con el nombre escpecifico y en la localizacin
oportunas.
Solucion:
TextWindow.Write("Enter the name of the new directory: ")
DirectoryName = TextWindow.Read()
File.CreateDirectory(DirectoryName)
filepath = "\\myserver\Share\FileIO.txt"
downloadpath = Network.DownloadFile(filepath)
If File.CopyFile(downloadpath, DirectoryName) = "SUCCESS" Then
TextWindow.WriteLine("File has been downloaded from the network and copied to: "
+ DirectoryName)
files = File.GetFiles(DirectoryName)
TextWindow.WriteLine("This is the content in the file: ")
TextWindow.WriteLine(File.ReadContents(files[1]))
TextWindow.Write("Enter data to be added in the file:")
AppendedData = TextWindow.Read()
File.AppendContents(files[1]," " + AppendedData)
TextWindow.WriteLine("File content after adding data is as follows: ")
TextWindow.WriteLine(File.ReadContents(files[1]))
EndIf
Codigo:
Subjects[1] = "English"
Subjects[2] = "History"
Subjects[3] = "Computers"
Subjects[4] = "Science"
Subjects[5] = "Math
TextWindow.WriteLine("Subjects is an array: " + Array.IsArray(Subjects))
TextWindow.WriteLine("Subjects[4] is available: " + Array.ContainsIndex(Subjects, 4))
TextWindow.WriteLine("Math is available: " + Array.ContainsValue(Subjects, "Math"))
Array.GetItemCount(Subjects)
Puedes usar GetAllIndices para conseguir todos los ndices de un array con el formato
de otro array. Esto es especialmente til cuando no conoces los ndices del array. Esta
operacin muestra un array junto coon todos los ndices del array. Los ndices de un
array comienzan siempre en 1.
Puedes usar la operacin GetItemCount para conocer el nmero total de valores que
estn guardados en un array.
Esta operacin muestra el nmero de elementos del array.
Codigo:
Employee["Name"] = "John"
Employee["City"] = "New York"
Employee["Email-ID"] = "John@example.com"
Employee["Mobile"] = "06482624"
Emplist = Array.GetAllIndices(Employee)
For i = 1 To Array.GetItemCount(Employee)
TextWindow.WriteLine(Emplist[i] + ":" + Employee[Emplist[i]])
EndFor
Codigo:
container = "empty"
For i = 0 To 50
Stack.PushValue(container , "plate number " + i)
EndFor
TextWindow.WriteLine("The number of plates in the container is " +
Stack.GetCount(container))
For i = 0 To 8
Stack.PopValue(container)
EndFor
TextWindow.WriteLine("After taking away 8 plates, the total number of plates is " +
Stack.GetCount(container))
TextWindow.WriteLine("The top most plate in the container is " +
Stack.PopValue(container))
Solucion:
TextWindow.WriteLine("Flight Reservations")
TotalSeats = 10
For i = 1 To TotalSeats
TextWindow.Write("Enter Passenger Name: ")
Name[i] = TextWindow.Read()
TextWindow.WriteLine("Seat number " + i + " is reserved by " + Name[i])
GetDetails()
EndFor
Sub GetDetails
If Array.GetItemCount(Name) = TotalSeats Then
TextWindow.WriteLine("No more seats are available!")
Else
Array.GetItemCount(Name)
AvailableSeats = TotalSeats - Array.GetItemCount(Name)
TextWindow.WriteLine("Number of available seats is: " + AvailableSeats)
TextWindow.WriteLine("")
EndIf
EndSub
Puedes usar la operacin Abs para conseguir el valor absoluto de un nmero. Por
ejemplo si el nmero es -50 , la operacin Abs devuelve el valor como 50.
Codigo:
TextWindow.WriteLine("Enter two numbers for subtraction: ")
Number1 = TextWindow.Read()
Number2 = TextWindow.Read()
Substraction = Number1 - Number2
Textwindow.WriteLine("The answer is " + Math.Abs(substraction))
Codigo:
TextWindow.Write("Enter the name of the student: ")
Name = TextWindow.Read()
TextWindow.WriteLine("Enter the student's marks in six subjects:")
For I = 0 To 5
Subject[i] = TextWindow.Read()
Total = Total + Subject[i]
EndFor
Percentage = Total / 6
TextWindow.WriteLine("Total Marks:" + Total)
TextWindow.WriteLine("Percentage:" + Math.Floor(percentage))
Codigo:
TextWindow.WriteLine("Enter number to get its log value: ")
Number = TextWindow.Read()
TextWindow.WriteLine("Log value of " + Number + " is: " + Math.Log(Number))
Codigo:
GraphicsWindow.BackgroundColor = "Black"
GraphicsWindow.Width = 600
GraphicsWindow.Height = 500
For i = 0 To 800
GraphicsWindow.FontSize = Math.GetRandomNumber(30)
x = Math.GetRandomNumber(GraphicsWindow.Width)
y = Math.GetRandomNumber(GraphicsWindow.Height)
GraphicsWindow.DrawText(x, y, "*")
Program.Delay(10)
EndFor
Codigo:
TextWindow.WriteLine("Enter the first number:")
Number1 = TextWindow.Read()
TextWindow.WriteLine("Enter the second number:")
Number2 = TextWindow.Read()
min = Math.Min(Number1, Number2)
If (Number1 = Number2) Then
TextWindow.WriteLine("These numbers are the same")
Else
TextWindow.WriteLine("The smaller number is:" + min)
EndIf
Codigo:
TextWindow.Write("Enter a number to get its square root: ")
Number = TextWindow.Read()
TextWindow.WriteLine("Square root of the entered number is " +
Math.SquareRoot(Number))
Codigo:
start:
TextWindow.Write("Enter a number to check if it is even or odd: ")
number = TextWindow.Read()
If Math.Remainder(number, 2) = 0 Then
TextWindow.WriteLine(number + " is an even number.")
Else
TextWindow.WriteLine(number + " is an odd number.")
EndIf
Goto start
Solucion 1:
Rectangle = Shapes.AddRectangle(100, 100)
Shapes.Move(Rectangle, 250, 150)
For i = 0 To Math.GetRandomNumber(30)
Program.Delay(500)
Shapes.Rotate(Rectangle, i * 25)
EndFor
Solucion 2:
start:
GraphicsWindow.Width = 600
GraphicsWindow.Height = 450
TextWindow.Write("Enter a radius for the circle: ")
Radius = TextWindow.Read()
Area = Math.Pi * Radius * Radius
Height = Area / 2
Width = Area / 2
x = Math.GetRandomNumber(GraphicsWindow.Width / 2)
y = Math.GetRandomNumber(GraphicsWindow.Height / 2)
GraphicsWindow.DrawEllipse(x, y, Height, Width)
Goto start
Codigo:
Sub keyup
If GraphicsWindow.LastKey = return then
Shapes.Rotate(shape1, 0)
EndIf
EndSub
Sub keydown
If GraphicsWindow.LastKey = return then
Shapes.Rotate(shape1, 90)
EndIf
EndSub
Debes declara rlos eventos del raton en tu programa. Hay tres tipos de eventos de
raton. MouseDown, MouseUp y MouseMove. Debes tambien asignar una subrutina a
cada uno de esos eventos. Cuando el evento es lanzado se llama a esa subrutina..
Puedes usar los eventos de raton sobre controles o formas.
Codigo:
GraphicsWindow.MouseDown = MouseClick
GraphicsWindow.MouseMove = MouseDrag
GraphicsWindow.MouseUp = MouseUp
Sub MouseClick
OrgX = GraphicsWindow.MouseX
OrgY = GraphicsWindow.MouseY
EndSub
Sub MouseDrag
x = GraphicsWindow.MouseX
y = GraphicsWindow.MouseY
If (Mouse.IsLeftButtonDown) then
GraphicsWindow.DrawLine(OrgX, OrgY, x, y)
Endif
EndSub
Sub MouseUp
GraphicsWindow.PenColor=GraphicsWindow.GetRandomColor()
GraphicsWindow.PenWidth=Math.GetRandomNumber(5)
EndSub
Solucion:
GraphicsWindow.Hide()
w = 620
h = 450
GraphicsWindow.CanResize = "False"
GraphicsWindow.Width = w
GraphicsWindow.Height = h
GraphicsWindow.Top = (Desktop.Height-h) / 2
GraphicsWindow.Left = (Desktop.Width-w) / 2
GraphicsWindow.Show()
GraphicsWindow.Title = "Events and interactivity"
GUI()
Controls.ButtonClicked = MouseAction
Sub GUI
GraphicsWindow.DrawRectangle(10, 10, 600, 320)
GraphicsWindow.DrawRectangle(10, 340, 200, 100)
GraphicsWindow.DrawRectangle(10, 340, 600, 100)
GraphicsWindow.DrawRectangle(370, 340, 150, 100)
Triangle = Controls.AddButton("Triangle", 40, 345)
draw = 0
j=0
z=3
circ = Shapes.AddEllipse(100, 100)
Shapes.Move(circ, 400, 150)
EndIf
EndIf
If y > 360 And y < 420 Then
If x > 230 And x < 290 Then
draw = 0
If z = 1 Then
Shapes.Rotate(tri, 30 + m)
Else
If z = 2 Then
Shapes.Rotate(rect,30 + m)
Else
If z = 3 Then
Shapes.Rotate(circ, 30 + m)
Endif
Endif
Endif
m = m + 30
EndIf
If x > 290 And x < 390 Then
draw = 0
i = 0.1 + j
If i < 0.4 Then
If z = 1 Then
Shapes.Zoom(tri, 1 + i, 1 + i)
Else
If z = 2 Then
Shapes.Zoom(rect, 1 + i, 1 + i)
Else
If z = 3 Then
Shapes.Zoom(circ, 1 + i, 1 + i)
EndIf
EndIf
EndIf
j = j + 0.1
EndIf
EndIf
If x > 390 And x < 450 Then
draw = 1
Paint()
EndIf
If x > 450 And x < 510 Then
draw = 0
j=0
GraphicsWindow.Clear()
GraphicsWindow.BrushColor = "Blue"
GUI()
draw = 0
EndIf
If x > 530 And x < 590 Then
draw = 0
Program.End()
EndIf
EndIf
EndSub
Sub Paint
If draw = 1 Then
GraphicsWindow.MouseMove = MouseDrag
Else
If Mouse.IsLeftButtonDown Then
MouseAction()
EndIf
EndIf
EndSub
Sub MouseDrag
If draw = 1 then
x = GraphicsWindow.MouseX
y = GraphicsWindow.MouseY
If x > 10 And x < 600 And y > 10 And y < 320 Then
If Mouse.IsLeftButtonDown Then
GraphicsWindow.DrawLine(OrgX, OrgY, x, y)
EndIf
EndIf
OrgX = x
OrgY = y
EndIf
EndSub
Codigo:
textbox = Controls.AddTextBox(200, 150)
button = Controls.AddButton("Button", 150, 200)
Codigo:
Controls.GetButtonCaption(button)
Controls.SetButtonCaption(button, "Click")
Controls.GetTextBoxText(textbox)
Controls.SetTextBoxText(textbox, "Hello World!")
Puedes aadir controles en la ventana escribiendo una instruccin que contenga una
operacin del Objeto Controls.Miremos al ejempo de la imagen:
Primero usamos la operacin AddTextBox para aadir cajas de texto que aceptan el
primero y ultimo nombre del usuario.. Debes especificar las coordinadas x e y como
parmetros.
Seguidamente usamos la operacin AddButtom para aadir un botn en la ventana
grfica. Ademas de las coordenadas x e y , debemos especificar tambien como
parametros la etiqueta del botn.
Luego, usas la operacin AddMultiLineTextBox para aadir otra caja de texto. Debes
especificar como parametros las coordenadas x e y.
En este ejemplo quieres mostrar un mensage en la caja de texto multilinea cuando el
usuario pulsa Show Message. Usas el evento ButtonClicked y creas una subrutina para
mostrar ese mensage en la caja de texto multi linea.
Para ejecutar el programa pulsa Run o F5
Codigo:
GraphicsWindow.DrawText(50, 100, "Enter your first name:")
firstname = Controls.AddTextBox(200, 100)
GraphicsWindow.DrawText(50, 150, "Enter your last name:")
lastname = Controls.AddTextBox(200, 150)
showbutton = Controls.AddButton("Show Message", 150, 200)
message = Controls.AddMultiLineTextBox(50, 250)
Codigo:
Controls.HideControl(textbox)
Controls.ShowControl(button)
Controls.Remove(textbox)
Codigo:
Controls.SetSize(textbox, 300, 50)
Controls.Move(textbox, 100, 150)
Puedes usar los controles en tus programas, por ejemplo cajas de texto y botones.
Fjate en el programa propuesto. En este programa se muestran dos cajas de texto y un
boton Search. En la primera caja de texto el ususaio escribe un mundo. Cuando se
pulsa el boton Search, la definicin del mundo aparece en la segunda caja de texto
multiolinea. Usamos el Objeto Dictionary para encontrar elsignificado del mundo en la
caja de texto multilinea.
Codigo:
GraphicsWindow.Title = "Dictionary"
GraphicsWindow.Height = 600
GraphicsWindow.Width = 600
GraphicsWindow.DrawText(50, 80, "Enter Text: ")
textbox = Controls.AddTextBox(50, 100)
Controls.SetSize(textbox, 100, 30)
Controls.SetTextBoxText(textbox, "")
GraphicsWindow.DrawText(50, 140, "Dictionary Meanings: ")
multitxt = Controls.AddMultiLineTextBox(50, 160)
Controls.SetSize(multitxt, 500, 400)
Getdfn = Controls.AddButton("Search", 200, 100)
GraphicsWindow.DrawText(80, 80, "")
meaning = Dictionary.GetDefinition(Controls.GetTextBoxText(textbox))
Controls.SetTextBoxText(multitxt, meaning)
Controls.ButtonClicked = Showmeaning
Sub Showmeaning
If Controls.GetButtonCaption(Getdfn) = "Search" Then
meaning = Dictionary.GetDefinition(Controls.GetTextBoxText(textbox))
Controls.SetTextBoxText(multitxt, meaning)
EndIf
EndSub
CreateGUI()
Controls.ButtonClicked = ButtonDown
Sub CreateGUI
GraphicsWindow.DrawRectangle(10, 10, 330, 270)
GraphicsWindow.DrawText(50, 70, "Enter first Number: ")
Ftextbox = Controls.AddTextBox(200, 60)
Controls.SetSize(Ftextbox, 60, 30)
GraphicsWindow.DrawText(50, 120, "Enter Second Number: ")
Stextbox = Controls.AddTextBox(200, 110)
Controls.SetSize(Stextbox, 60, 30)
GraphicsWindow.DrawText(50, 170,"Answer is:")
Atextbox=Controls.AddTextBox(200, 160)
Controls.SetSize(Atextbox, 60, 30)
GraphicsWindow.FontSize = 15
Plus = Controls.AddButton("+", 20, 210)
Controls.SetSize(Plus, 40, 40)
Minus = Controls.AddButton("-", 70, 210)
Controls.SetSize(Minus, 40, 40)
Asterisk = Controls.AddButton("*", 120, 210)
Controls.SetSize(Asterisk, 40, 40)
Division = Controls.AddButton("/", 170, 210)
Controls.SetSize(Division, 40, 40)
Clear = Controls.AddButton("C", 220, 210)
Controls.SetSize(Clear, 40, 40)
EndSub
Sub ButtonDown
FtxtValue = controls.GetTextBoxText(Ftextbox)
StxtValue = controls.GetTextBoxText(Stextbox)
operator = Controls.GetButtonCaption(Controls.LastClickedButton)
If operator = "C" Then
Controls.SetTextBoxText(Ftextbox, "")
Controls.SetTextBoxText(Stextbox, "")
Controls.SetTextBoxText(Atextbox, "")
ElseIf operator = "+" Then
AtxtValue = FtxtValue + StxtValue
Controls.SetTextBoxText(Atextbox, AtxtValue)
ElseIf operator = "-" Then
Solucion:
GraphicsWindow.Show()
GraphicsWindow.Width = 300
GraphicsWindow.Height = 250
GraphicsWindow.Top = (Desktop.Height - 450) / 2
GraphicsWindow.left = (Desktop.Width - 600) / 2
GraphicsWindow.Title = "Application Form:"
x = 30
y = 37
'Enter Name
GraphicsWindow.DrawText(x, y, "Name:")
NameTxtBox = Controls.AddTextBox(120, 35)
Controls.SetSize(NameTxtBox, 150, 20)
'Address
GraphicsWindow.DrawText(x, y + 40, "Address:")
AddressTxtBox = Controls.AddMultiLineTextBox(120, 70)
'Telephone details
GraphicsWindow.DrawText(x, y + 90, "Telephone:")
TelphoneTxtBox = Controls.AddTextBox(120, 125)
Controls.SetSize(TelphoneTxtBox, 150, 20)
'Email -id
GraphicsWindow.DrawText(x, y + 125, "E-mail ID:")
EmailTxtBox = Controls.AddTextBox(120, 160)
Controls.SetSize(EmailTxtBox, 150, 20)
'Submit
SubmitButton = Controls.AddButton("Submit", x + 30, y + 160)
Controls.SetSize(SubmitButton, 70, 30)
'Cancel
CancelButton = Controls.AddButton("Cancel", x + 130, y + 160)
Controls.SetSize(CancelButton, 70, 30)
Controls.ButtonClicked = SubmitForm
Sub SubmitForm
Name = controls.GetTextBoxText(NameTxtBox)
Address = controls.GetTextBoxText(AddressTxtBox)
Telphone = controls.GetTextBoxText(TelphoneTxtBox)
Email = controls.GetTextBoxText(EmailTxtBox)
If Controls.GetButtonCaption(Controls.LastClickedButton) = "Submit" Then
If Name = "" or Address = "" or Telphone = "" or Email = "" Then
GraphicsWindow.ShowMessage("Please fill in all the details.", "Error Message")
Else
GraphicsWindow.ShowMessage("Your details have been submitted successfully!",
"Congratulations!")
EndIf
ElseIf Controls.GetButtonCaption(Controls.LastClickedButton) = "Cancel" Then
Program.End()
EndIf
EndSub
Codigo:
GraphicsWindow.Show()
GraphicsWindow.DrawImage(Flickr.GetPictureOfMoment(), 0, 0)
Program.Delay(2000)
GraphicsWindow.Clear()
Codigo:
GraphicsWindow.Show()
GraphicsWindow.DrawImage(Flickr.GetPictureOfMoment(), 0, 0)
TextWindow.WriteLine("The path of image from flickr" + Flickr.GetPictureOfMoment())
Program.Delay(2000)
GraphicsWindow.Clear()
Codigo:
Sourcepath = Program.Directory+"\Source\data.txt"
Destpath = Program.Directory+"\dest"
file.CopyFile(Sourcepath,Destpath)
TextWindow.WriteLine(File.ReadContents(File.ReadContents(destPath+"\data.txt")))
Codigo:
Sourcepath = Program.Directory+"\Source\data.txt"
Destpath = Program.Directory+"\dest"
TextWindow.WriteLine(file.CopyFile(Sourcepath,Destpath))
TextWindow.WriteLine(File.ReadContents(File.ReadContents(destPath+"\data.txt")))
Solucion:
Please Note: Ensure that a folder containing the images exists at the path specified in
the program.
ImagePath = program.Directory + "\img"
i=1
GraphicsWindow.Width = 600
GraphicsWindow.Height = 450
GraphicsWindow.Top = (Desktop.Height-450) / 2
GraphicsWindow.left = (Desktop.Width-600) / 2
GUI()
SmallBasicImage = File.GetFiles(ImagePath)
GraphicsWindow.DrawResizedImage(SmallBasicImage[i], 50, 50, 500, 300)
Controls.ButtonClicked = SlideShow
Sub GUI
GraphicsWindow.BackgroundColor="LightSlateGray"
GraphicsWindow.FontSize=25
nxtBtn = Controls.AddButton("<",50,370)
bckBtn = Controls.AddButton(">",500,370)
Codigo:
' Copyright (c) Microsoft Corporation. All rights reserved.
gw = 450
gh = 400
tx = 225
ty = 320
score = 0
angle = 0
ballDirection = -1
ballSpeed = 0.3
acceleration = 1.001
power = 1.2
gameStarted = "False"
ballX = 210
ballY = 280
GraphicsWindow.KeyDown = OnKeyDown
CreateUI()
gameOver = "False"
While gameStarted = "False"
Program.Delay(300)
EndWhile
gameStartTime = Clock.ElapsedMilliseconds
Shapes.Remove(directions)
While gameOver = "False"
Shapes.Rotate(paddle, angle)
power = 1 + Math.Abs(angle) / 200
Shapes.Rotate(paddle, angle)
CalculateBallMetrics()
Shapes.Move(ball, ballX, ballY)
WriteTime()
Program.Delay(20)
If ballX < 105 Or ballX > 315 Then
gameOver = "True"
EndIf
EndWhile
GraphicsWindow.ShowMessage("You survived for " + timeDisplayText + ".", "Game
Over")
Sub CreateUI
GraphicsWindow.CanResize = "False"
GraphicsWindow.Width = gw
GraphicsWindow.Height = gh
GraphicsWindow.Top = (Desktop.Height - gh) / 2
GraphicsWindow.Left = (Desktop.Width - gw) / 2
GraphicsWindow.DrawRectangle(10, 10, 430, 380)
GraphicsWindow.BrushColor = "Violet"
tri = Shapes.AddTriangle(tx, ty, tx - 50, ty + 50, tx + 50, ty + 50)
GraphicsWindow.BrushColor = "Purple"
paddle = Shapes.AddRectangle(210, 10)
Shapes.Move(paddle, 120, 310)
GraphicsWindow.BrushColor = "Red"
ball = Shapes.AddEllipse(30, 30)
Shapes.Move(ball, ballX, ballY)
GraphicsWindow.FontSize = 16
GraphicsWindow.FontName = "Verdana"
directions = Shapes.AddText("Press ENTER to start the game!")
Shapes.Move(directions, 80, 150)
GraphicsWindow.BrushColor = "Blue"
timeText = Shapes.AddText("Time: 00:00")
Shapes.Move(timeText, 310, 16)
EndSub
Sub OnKeyDown
If gameStarted = "True" Then
If GraphicsWindow.LastKey = "Left" Then
angle = Math.Max(-40, angle - 1)
Codigo:
' Copyright (c) Microsoft Corporation. All rights reserved.
GraphicsWindow.Hide()
gw = 620
gh = 400
GraphicsWindow.CanResize = "False"
GraphicsWindow.Width = gw
GraphicsWindow.Height = gh
GraphicsWindow.Top = ( Desktop.Height - gh ) / 2
GraphicsWindow.Left = ( Desktop.Width - gw ) / 2
GraphicsWindow.Title = "Hit the Right Shape"
GraphicsWindow.Show()
sec = 50
Score = 0
ScoreboxX = 420
delayspeed = 15
GraphicsWindow.MouseDown = MouseClick
shapeNames[0] = ""
shapeNames[1] = "Square"
shapeNames[2] = "Rectangle"
shapeNames[3] = "Ellipse"
shapeNames[4] = "Circle"
textBox = Controls.AddTextBox(200, 0)
Controls.SetTextBoxText(textBox, "Square")
ShowScore()
GraphicsWindow.BrushColor = "Pink"
GraphicsWindow.DrawRectangle(-2, 25, GraphicsWindow.Width + 2,
GraphicsWindow.Height - 50)
GraphicsWindow.FillRectangle(-2, 25, GraphicsWindow.Width + 2,
GraphicsWindow.Height - 50)
GraphicsWindow.BrushColor = GraphicsWindow.GetRandomColor()
elli = Shapes.AddEllipse(60, 40)
Shapes.Move(elli, -90, 50)
GraphicsWindow.BrushColor = GraphicsWindow.GetRandomColor()
rect = Shapes.AddRectangle(60, 40)
Shapes.Move(rect, -20, 50)
GraphicsWindow.BrushColor = GraphicsWindow.GetRandomColor()
circle = Shapes.AddEllipse(80, 80)
Shapes.Move(circle, 20, 50)
GraphicsWindow.BrushColor = GraphicsWindow.GetRandomColor()
square1 = Shapes.AddRectangle(40, 40)
Shapes.Move(square1, 230, 50)
GraphicsWindow.BrushColor = GraphicsWindow.GetRandomColor()
rect1 = Shapes.AddRectangle(40, 80)
Shapes.Move(rect1, 300, 250)
GraphicsWindow.BrushColor = GraphicsWindow.GetRandomColor()
elli1 = Shapes.AddEllipse(35, 60)
Shapes.Move(elli1, 100, 250)
GraphicsWindow.BrushColor = GraphicsWindow.GetRandomColor()
square2 = Shapes.AddRectangle(20, 20)
Shapes.Move(square2, 250, 250)
GraphicsWindow.BrushColor = GraphicsWindow.GetRandomColor()
circle1 = Shapes.AddEllipse(80, 80)
Shapes.Move(circle1, 450, 210)
i=1
prevSec = 0
currSec = Clock.ElapsedMilliseconds
eSec = currSec
While 1 = 1
Shapes.Move(elli, Shapes.GetLeft(elli) + 4, 50)
If Shapes.GetLeft(elli) > 650 Then
shapes.ShowShape(square1)
Shapes.Move(elli, -90, 300)
EndIf
Shapes.Move(rect, Shapes.GetLeft(rect) + 5, 50)
If Shapes.GetLeft(rect) > 600 Then
shapes.ShowShape(rect)
Shapes.Move(rect, -20, 50)
EndIf
Shapes.Move(circle, Shapes.GetLeft(circle) + 4, 50)
If Shapes.GetLeft(circle) > 600 Then
shapes.ShowShape(circle)
Shapes.Move(circle, -110, 100)
EndIf
Shapes.Move(square1, Shapes.GetLeft(square1) + 3, 50)
If Shapes.GetLeft(square1) > 600 Then
shapes.ShowShape(square1)
Shapes.Move(square1, -200, 100)
EndIf
Shapes.Move(rect1, Shapes.GetLeft(rect1) + 6, 250)
If Shapes.GetLeft(rect1) > 600 Then
shapes.ShowShape(rect1)
Shapes.Move(rect1, -100, 180)
EndIf
Shapes.Move(elli1, Shapes.GetLeft(elli1) + 2, 250)
If Shapes.GetLeft(elli1) > 600 Then
shapes.ShowShape(elli1)
Shapes.Move(elli1, -60, 70)
EndIf
Shapes.Move(square2, Shapes.GetLeft(square2)+3, 250)
If Shapes.GetLeft(square2) > 600 Then
shapes.ShowShape(square2)
Shapes.Move(square2, -250, 300)
EndIf
Shapes.Move(circle1, Shapes.GetLeft(circle1) + 5, 210)
If Shapes.GetLeft(circle1) > 600 Then
Shapes.ShowShape(circle1)
Shapes.Move(circle1, -50, 210)
EndIf
sec = sec - 0.01
GraphicsWindow.BrushColor = "Blue"
GraphicsWindow.FillRectangle(ScoreboxX+60, 0, 100, 25)
GraphicsWindow.BrushColor = "White"
GraphicsWindow.DrawText(ScoreboxX + 62, 5, "Time:")
If sec >= 10 Then
GraphicsWindow.DrawText(ScoreboxX + 110, 5,"00:" + Math.Floor(sec))
ElseIf sec > 0 Then
GraphicsWindow.DrawText(ScoreboxX + 110, 5,"00:0" + Math.Floor(sec))
EndIf
If sec <= 0 Then
Goto out
EndIf
Program.Delay(delayspeed)
currentSec = Clock.ElapsedMilliseconds
If (currentSec - prevSec) >= 5000 Then
i = Math.GetRandomNumber(4)
If i <> 0 Then
Controls.SetTextBoxText(textBox, shapeNames[i])
EndIf
prevSec = currentSec
EndIf
currSec = Clock.ElapsedMilliseconds
EndWhile
out:
GraphicsWindow.DrawText(ScoreboxX + 110, 5,"00:0" + Math.Floor(sec))
GraphicsWindow.ShowMessage("Your score is: " + Score, "Game Over")
Program.End()
Sub MouseClick
leftPos_square1 = Shapes.GetLeft(square1)
topPos_square1 = Shapes.GetTop(square1)
leftPos_square2 = Shapes.GetLeft(square2)
topPos_square2 = Shapes.GetTop(square2)
leftPos_rect = Shapes.GetLeft(rect)
topPos_rect
= Shapes.GetTop(rect)
leftPos_rect1 = Shapes.GetLeft(rect1)
topPos_rect1 = Shapes.GetTop(rect1)
leftPos_elli = Shapes.GetLeft(elli)
topPos_elli
= Shapes.GetTop(elli)
leftPos_elli1 = Shapes.GetLeft(elli1)
topPos_elli1 = Shapes.GetTop(elli1)
leftPos_circle = Shapes.GetLeft(circle)
topPos_circle = Shapes.GetTop(circle)
leftPos_circle1 = Shapes.GetLeft(circle1)
topPos_circle1 = Shapes.GetTop(circle1)
If Controls.GetTextBoxText(textBox) = "Square" Then
If (GraphicsWindow.MouseX >= leftPos_square1) And (GraphicsWindow.MouseX
<= leftPos_square1 + 40) Then
If (GraphicsWindow.MouseY >= topPos_square1) And (GraphicsWindow.MouseY
<= topPos_square1 + 40) Then
Shapes.HideShape(square1)
Score = Score + 1
EndIf
EndIf
If (GraphicsWindow.MouseX >= leftPos_square2) And (GraphicsWindow.MouseX
<= leftPos_square2 + 20) Then
If (GraphicsWindow.MouseY >= topPos_square2) And (GraphicsWindow.MouseY
<= topPos_square2 + 20) Then
Shapes.HideShape(square2)
Score = Score + 1
EndIf
EndIf
EndIf
If Controls.GetTextBoxText(textBox) = "Rectangle" Then
If (GraphicsWindow.MouseX >= leftPos_rect) And (GraphicsWindow.MouseX <=
leftPos_rect + 40) Then
If (GraphicsWindow.MouseY >= topPos_rect) And (GraphicsWindow.MouseY <=
topPos_rect + 40) Then
Shapes.HideShape(rect)
Score = Score + 1
EndIf
EndIf
If (GraphicsWindow.MouseX >= leftPos_rect1) And (GraphicsWindow.MouseX <=
leftPos_rect1 + 40) Then
If (GraphicsWindow.MouseY >= topPos_rect1) And (GraphicsWindow.MouseY <=
topPos_rect1 + 80) Then
Shapes.HideShape(rect1)
Score = Score + 1
EndIf
EndIf
EndIf
If Controls.GetTextBoxText(textBox) = "Ellipse" Then
If (GraphicsWindow.MouseX >= leftPos_elli) And (GraphicsWindow.MouseX <=
leftPos_elli + 60) Then
If (GraphicsWindow.MouseY >= topPos_elli) And (GraphicsWindow.MouseY <=
topPos_elli + 40) Then
Shapes.HideShape(elli)
Score = Score + 1
EndIf
EndIf
If (GraphicsWindow.MouseX >= leftPos_elli1) And (GraphicsWindow.MouseX <=
leftPos_elli1 + 60) Then
Solucion:
' Copyright (c) Microsoft Corporation. All rights reserved.
GraphicsWindow.Hide()
gw = 620
gh = 450
endtime = Clock.ElapsedMilliseconds
starttime = Clock.ElapsedMilliseconds
blinktime = Clock.ElapsedMilliseconds
gamestarttime = Clock.ElapsedMilliseconds
GraphicsWindow.CanResize = "False"
GraphicsWindow.Width = gw
GraphicsWindow.Height = gh
GraphicsWindow.Top = ( Desktop.Height - gh ) / 2
GraphicsWindow.Left = ( Desktop.Width - gw ) / 2
GraphicsWindow.Title = "Flower"
GraphicsWindow.BrushColor ="Pink"
GraphicsWindow.Show()
CreateUI()
GraphicsWindow.MouseDown = MouseAction
Controls.ButtonClicked = OnclickButton
starttimer()
Sub MouseAction
x = GraphicsWindow.MouseX
y = GraphicsWindow.MouseY
GraphicsWindow.MouseMove = MouseMove
If x > px And x < px + 180 And y > py And y < py + 400 Then
GraphicsWindow.MouseUp = onMouseUpEvent
If x < px + 90 and y < py + 100 Then
sh = leaf1
bsh = leafs[1]
GetShapeXY()
ElseIf x < px + 200 And y < py + 100 Then
sh = petal1
bsh = petals[1]
GetShapeXY()
ElseIf x < px + 90 and y < py + 200 Then
sh = stik
bsh = stick
GetShapeXY()
ElseIf x < px + 200 And y < py + 200 Then
sh = circle
bsh = circ
GetShapeXY()
ElseIf x < px + 90 And y < py + 300 Then
sh = petal2
bsh = petals[2]
GetShapeXY()
ElseIf x < px + 200 And y < py + 300 then
sh = petal3
bsh = petals[3]
GetShapeXY()
ElseIf x < px+90 And y < py + 400 Then
sh = petal4
bsh = petals[4]
GetShapeXY()
ElseIf x < px + 200 And y < py + 400 Then
sh = leaf2
bsh = leafs[2]
GetShapeXY()
EndIf
EndIf
EndSub
Sub GetShapeXY
shx = shapes.GetLeft(sh)
shy = shapes.GetTop(sh)
EndSub
Sub CreateUI
GraphicsWindow.DrawRectangle(10, 10, 380, 420)
GraphicsWindow.DrawRectangle(410, 10, 200, 420)
GraphicsWindow.BrushColor = "Brown"
stick = Shapes.AddRectangle(5, 180)
Code:
' Copyright (c) Microsoft Corporation. All rights reserved.
GraphicsWindow.Hide()
gw = 600
gh = 450
GraphicsWindow.CanResize = "False"
GraphicsWindow.Top = (Desktop.Height - gh) / 2
GraphicsWindow.Left = (Desktop.Width - gw) / 2
GraphicsWindow.Title = "Drawing Shapes Using Turtle"
GraphicsWindow.Width = gw
GraphicsWindow.Height = gh
GraphicsWindow.Show()
CreateUI()
Controls.ButtonClicked = OnButtonClicked
GraphicsWindow.MouseDown = OnMouseDown
Sub CreateUI
GraphicsWindow.BrushColor = "Black"
GraphicsWindow.DrawText(100, 25, "Enter the sides:")
sidesTextBox = Controls.AddTextBox(200, 20)
Controls.SetSize(sidesTextBox, 50, 30)
drawButton = Controls.AddButton("DrawShape", 280, 20)
Controls.SetSize(drawButton, 100, 30)
clearButton = Controls.AddButton("Clear", 390, 20)
Controls.SetSize(clearButton, 100, 30)
GraphicsWindow.PenColor = "Black"
GraphicsWindow.DrawRectangle(55, 55, 490, 380)
DrawPalette()
EndSub
Sub OnButtonClicked
clickedButton = Controls.LastClickedButton
If clickedButton = drawButton Then
sides = Controls.GetTextBoxText(sidesTextBox)
If sides < 3 or sides > 35 Then
Controls.SetTextBoxText(sidesTextBox, "")
Else
DrawShape()
EndIf
ElseIf clickedButton = clearButton Then
Controls.SetTextBoxText(sidesTextBox, "")
GraphicsWindow.BrushColor = "White"
GraphicsWindow.FillRectangle(55, 55, 490, 380)
GraphicsWindow.PenColor = "Black"
GraphicsWindow.DrawRectangle(55, 55, 490, 380)
EndIf
EndSub
Sub DrawPalette
color[1] = "Red"
color[2] = "DeepPink"
color[3] = "Magenta"
color[4] = "BlueViolet"
color[5] = "MediumSlateBlue"
color[6] = "LimeGreen"
color[7] = "DeepSkyBlue"
color[8] = "Blue"
color[9] = "DarkGreen"
color[10] = "Aqua"
color[11] = "Green"
color[12] = "SpringGreen"
color[13] = "Yellow"
color[14] = "YellowGreen"
color[15] = "SteelBlue"
color[16] = "DarkSlateBlue"
color[17] = "Black"
color[18] = "Orange"
GraphicsWindow.PenColor = "Black"
For i = 1 To 9
GraphicsWindow.Brushcolor = color[i]
paletteColor = Shapes.AddRectangle(40, 40)
Shapes.Move(paletteColor, 4, i * 44 + 6)
Endfor
For i = 1 To 9
GraphicsWindow.Brushcolor = color[i + 9]
paletteColor = Shapes.AddRectangle(40, 40)
Shapes.Move(paletteColor, 554, i * 44 + 6)
EndFor
EndSub
Sub DrawShape
GraphicsWindow.DrawRectangle(55, 55, 490, 380)
Turtle.Show()
Program.Delay(500)
length = 500 / sides
angle = 360 / sides
Turtle.Speed = 10
Turtle.X = 300
Turtle.Y = 240
For j = 1 To 10
For i = 1 To sides
Turtle.Move(length)
Turtle.Turn(angle)
EndFor
Turtle.Turn(36)
EndFor
EndSub
Sub OnMouseDown
x = GraphicsWindow.MouseX
y = GraphicsWindow.MouseY
If y > 50 And y < 446 Then
If Math.Remainder((y - 6), 44) <= 40 Then
paletteIndex = Math.Floor((y - 6) / 44)
If x > 4 And x < 44 Then
Codigo:
' Copyright (c) Microsoft Corporation. All rights reserved.
GraphicsWindow.Hide()
gw = 450
gh = 400
GraphicsWindow.CanResize = "False"
GraphicsWindow.Width = gw
GraphicsWindow.Height = gh
GraphicsWindow.Top = (Desktop.Height - gh) / 2
GraphicsWindow.Left = (Desktop.Width - gw) / 2
GraphicsWindow.Title = "Bounce the Ball"
GraphicsWindow.Show()
speed = 15
imagepathBase = Program.Directory + "\ground.png"
ballimage = Program.Directory + "\ball.png"
GraphicsWindow.FontSize = 14
Controls.ButtonClicked = OnClicked
angle = 30
sec = 0
min = 0
gw = GraphicsWindow.Width
gh = GraphicsWindow.Height
y = gh - 86
x = 210
GraphicsWindow.BrushColor = "Black"
GraphicsWindow.DrawText(10, 10, "Time: 00:00")
itxt = Shapes.AddText("Click on the ball to start the game!")
Shapes.Move(itxt, 100,130)
ball = Shapes.AddImage(ballimage)
base = Shapes.AddImage(imagepathBase)
Shapes.Move(base, 0, gh - 50)
ballbtn = Controls.AddButton("", x, y)
Controls.SetSize(ballbtn, 36, 36)
Shapes.Move(ball, x, y)
Shapes.Move(ballbtn, x, y)
Shapes.SetOpacity(ballbtn, 0)
Sub Onstart
bX = 1
bY = -2
rndNum = Math.GetRandomNumber(200)
topy = rndnum
Loop:
y = y + bY
gw = GraphicsWindow.Width
gh = GraphicsWindow.Height
If x >= gw - 16 Or x <= 0 Then
bX = -bX
EndIf
If y <= rndNum Then
bY = -bY
EndIf
Shapes.Move(ball, x, y)
Shapes.Rotate(ball, angle + 30)
Shapes.Move(ballbtn, x, y)
Program.Delay(speed)
ShowScore()
If (y < gh - 86) Then
Goto Loop
EndIf
EndGame:
GraphicsWindow.ShowMessage("You bounced the ball for " + strMin + ":" + strSec + "
seconds.", "Game Over")
Program.End()
EndSub
Sub OnClicked
Shapes.HideShape(itxt)
speed = speed - 0.5
ShowScore()
Onstart()
EndSub
Sub ShowScore
Solucion:
' Copyright (c) Microsoft Corporation. All rights reserved.
GraphicsWindow.Hide()
gw = 500
gh = 350
scoreBoxLeft = 200
passedQuestion = 0
score = 0
Clicked = ""
i=1
Q[1] = "Nile is the longest river in the world."
Q[2] = "The highest mountain in the world is Mount Everest."
Q[3] = "Zambia is also known as the 'Country of Copper'."
Q[4] = "The coldest place on the earth is in Siberia."
Q[5] = "Sydney is the capital of the USA."
Q[6] = "The river Jordan flows out into the Dead sea."
Q[7] = "Mumbai is the capital of India."
Q[8] = "Africa is the largest coffee growing continent in the world."
Q[9] = "The largest desert in the world is Sahara Desert."
Q[10] = "London is the capital of the UK."
A[1] = "True"
A[2] = "True"
A[3] = "True"
A[4] = "True"
A[5] = "False"
A[6] = "True"
A[7] = "False"
A[8] = "False"
A[9] = "True"
A[10] = "True"
ArrayRandom[1] = "5234162"
ArrayRandom[2] = "1896523"
ArrayRandom[3] = "5974216"
ArrayRandom[4] = "2756194"
randomNumber = Math.GetRandomNumber(Array.GetItemCount(ArrayRandom))
GraphicsWindow.CanResize = "False"
GraphicsWindow.Width = gw
GraphicsWindow.Height = gh
GraphicsWindow.Top = (Desktop.Height - gh) / 2
GraphicsWindow.Left = (Desktop.Width - gw) / 2
GraphicsWindow.Title = "True or False"
GraphicsWindow.Show()
Controls.ButtonClicked = OnButtonClicked
CreateUI()
Sub CreateUI
GraphicsWindow.BrushColor = "Purple"
GraphicsWindow.FontName = "Verdana"
GraphicsWindow.FontSize = 14
GraphicsWindow.DrawRectangle(10, 10, 480, 330)
trueButton = Controls.AddButton("True", 30, 210)
falseButton = Controls.AddButton("False", 320, 210)
Controls.SetSize(trueButton, 150, 100)
Controls.SetSize(falseButton, 150, 100)
GraphicsWindow.DrawText(220, 300, "Result")
resultTextBox = Shapes.AddText("")
Shapes.Move(resultTextBox, 220, 250)
scoreTextBox = Shapes.AddText("Score: 0")
Shapes.Move(scoreTextBox, 404, 15)
StartGame()
EndSub
Sub StartGame
passedQuestion = Text.GetSubText(ArrayRandom[randomNumber], i, 1)
If i <= 7 Then
qx = 60
qy = 90
GraphicsWindow.BrushColor = "LightBlue"
GraphicsWindow.FillRectangle(200, 220, 100, 80)
GraphicsWindow.FillRectangle(20, 50, 460, 100)
GraphicsWindow.BrushColor = "Blue"
GraphicsWindow.DrawBoundText(qx - 20, qy, 420 "" + Q[passedQuestion])
currentAnswer = A[passedQuestion]
Else
Program.Delay(1000)
GraphicsWindow.ShowMessage("Your Score is " + score, "Game Over")
Program.End()
EndIf
i=i+1
EndSub
Sub OnButtonClicked
clickedButtonCaption = Controls.GetButtonCaption(Controls.LastClickedButton)
If currentAnswer = clickedButtonCaption Then
lastAnswer = "Correct"
Shapes.Move(resultTextBox, 220, 250)
score = score + 1
Else
lastAnswer = "Incorrect"
Shapes.Move(resultTextBox, 212, 250)
EndIf
Shapes.SetText(resultTextBox, lastAnswer)
Shapes.SetText(scoreTextBox, "Score: " + score)
StartGame()
EndSub
Code:
' Copyright (c) Microsoft Corporation. All rights reserved.
GraphicsWindow.Hide()
gw = 620
gh = 450
GraphicsWindow.BackgroundColor = "LightBlue"
GraphicsWindow.CanResize = "False"
GraphicsWindow.Width = gw
GraphicsWindow.Height = gh
GraphicsWindow.Top = ( Desktop.Height - gh ) / 2
GraphicsWindow.Left = ( Desktop.Width - gw ) / 2
GraphicsWindow.Title = "Hit the Target"
GraphicsWindow.Show()
Turtle.Hide()
rx = 40
ry = 20
turtlex = 315
turtley = 300
width = 550
height = 390
ScoreboxX = 400
Enterkey = "Return"
target = 10
life = 3
score = 0
GraphicsWindow.FontSize = 30
GraphicsWindow.DrawText(100, 200, "Press ENTER to start the game!")
GraphicsWindow.KeyDown = Onpress
Sub Onpress
enter = enter + 1
If GraphicsWindow.LastKey = Enterkey And enter = 1 Then
GraphicsWindow.Clear()
GraphicsWindow.FontSize = 12
GUI()
MovingShape()
ScoreShow()
Controls.ButtonClicked = hitClick
EndIf
EndSub
Sub hitClick
angle = Math.Round(Controls.GetTextBoxText(angletxt))
distance = Math.Round(Controls.GetTextBoxText(distancetxt))
clicked = Controls.GetButtonCaption(Controls.LastClickedButton)
If clicked = "Hit" Then
GraphicsWindow.PenWidth = 0
Turtle.Angle = angle
Turtle.Move(distance)
If Turtle.x > x and Turtle.x < x + 93 and Turtle.y > y and Turtle.y < y + 96 Then
Shapes.HideShape(target)
score = score + 10
scoreshow()
Program.Delay(500)
If target = score Then
GameEnd()
EndIf
Controls.SetTextBoxText(angletxt, "")
Controls.SetTextBoxText(distancetxt, "")
MovingShape()
Else
Program.Delay(1000)
If life > 1 Then
GraphicsWindow.ShowMessage("Click Ok to continue the game","Reset")
clicked = "Reset"
Else
GameEnd()
EndIf
EndIf
EndIf
If clicked = "Reset" Then
life = life - 1
If score >= 10 Then
score = score - 5
EndIf
scoreshow()
Controls.SetTextBoxText(angletxt, "")
Controls.SetTextBoxText(distancetxt, "")
MovingShape()
If life < 1 Then
GameEnd()
EndIf
EndIf
EndSub
Sub GUI
image = Program.Directory + "\cartoon.gif"
GraphicsWindow.DrawRectangle(rx, ry, width, height)
target = Shapes.AddImage(image)
GraphicsWindow.BrushColor = "Black"
Shapes.Move(target, 100, 50)
Turtle.Show()
Turtle.X = turtlex
Turtle.y = turtley
Turtle.Angle = 0
Codigo:
' Copyright (c) Microsoft Corporation. All rights reserved.
GraphicsWindow.Hide()
gw = 620
gh = 450
GraphicsWindow.CanResize = "False"
GraphicsWindow.Width = gw
GraphicsWindow.Height = gh
GraphicsWindow.Top = (Desktop.Height - gh) / 2
GraphicsWindow.Left = (Desktop.Width - gw) / 2
GraphicsWindow.Title = "Catch the Apples!"
GraphicsWindow.Show()
applesLeft = 30
gameScore = 0
catcherImage = Program.Directory + "\catcher.jpg"
appleimage = Program.Directory + "\apple.jpg"
GraphicsWindow.MouseMove = OnMouseMove
CreateUI()
While applesLeft > 0
DropApple()
applesLeft = applesLeft - 1
Shapes.SetText(applesLeftTextBox, "Apples Left: " + applesLeft)
EndWhile
GraphicsWindow.ShowMessage("Your Score is: " + gameScore, "GameOver")
Program.End()
Sub CreateUI
GraphicsWindow.BackgroundColor = "LightBlue"
catcher = Shapes.AddImage(catcherImage)
apple = Shapes.AddImage(appleimage)
GraphicsWindow.BrushColor = "Gray"
GraphicsWindow.FillRectangle(1, 1, gw, 40)
GraphicsWindow.FontName = "Verdana"
GraphicsWindow.FontSize = 18
GraphicsWindow.BrushColor = "White"
GraphicsWindow.DrawText(220, 5, "Catch the Apples!")
scoreTextBox = Shapes.AddText("Score: 0")
Shapes.Move(scoreTextBox, 480, 5)
applesLeftTextBox = Shapes.AddText("Apples Left: " + applesLeft)
Shapes.Move(applesLeftTextBox, 5, 5)
GraphicsWindow.PenColor = "Black"
GraphicsWindow.DrawLine(0, 50, 620, 50)
Shapes.Move(catcher, 0, gh - 40)
Mouse.HideCursor()
EndSub
Sub OnMouseMove
catcherX = Math.Min(GraphicsWindow.MouseX, 570)
Shapes.Move(catcher, catcherX, gh - 40)
EndSub
Sub DropApple
appleX = Math.GetRandomNumber(600)
appleY = 50
While (appleY < gh + 20)
Shapes.Move(apple, appleX, appleY)
Program.Delay(15)
DetectCatch()
appleY = appleY + 5
EndWhile
EndSub
Sub DetectCatch
If appleY >= gh - 40 And appleX < catcherX + 50 And appleX >= catcherX Then
gameScore = gameScore + 1
Shapes.SetText(scoreTextBox, "Score: " + gameScore)
appleY = gh + 20
EndIf
EndSub
Codigo:
' Copyright (c) Microsoft Corporation. All rights reserved.
GraphicsWindow.Hide()
gw = 350
gh = 350
gridX = 25
gridY = 25
cellSize = 100
GraphicsWindow.CanResize = "False"
GraphicsWindow.Width = gw
GraphicsWindow.Height = gh
GraphicsWindow.Top = (Desktop.Height - gh) / 2
GraphicsWindow.Left = (Desktop.Width - gw) / 2
GraphicsWindow.Title = "Tic-Tac-Toe"
GraphicsWindow.Show()
playerTurn = "True"
GraphicsWindow.MouseMove = OnMouseMove
GraphicsWindow.MouseDown = OnMouseDown
SetupBoard()
gameLoop:
CheckGameOver()
If gameOver = "True" Then
Goto endGame
EndIf
If playerTurn = "True" Then
Program.Delay(1000)
Goto gameLoop
EndIf
TryWin()
If compRow <> -1 And compCol <> -1 Then
PlayComputerTurn()
Goto gameCheck
EndIf
TryBlock()
If compRow <> -1 And compCol <> -1 Then
PlayComputerTurn()
Goto gameCheck
EndIf
' Play Center
compCol = -1
For i = 0 to 2
If cells[i][0] = "O" And cells[i][1] = "O" And cells[i][2] = "" Then
compRow = i
compCol = 2
ElseIf cells[i][0] = "O" And cells[i][1] = "" And cells[i][2] = "O" Then
compRow = i
compCol = 1
ElseIf cells[i][0] = "" And cells[i][1] = "O" And cells[i][2] = "O" Then
compRow = i
compCol = 0
ElseIf cells[0][i] = "O" And cells[1][i] = "O" And cells[2][i] = "" Then
compCol = i
compRow = 2
ElseIf cells[0][i] = "O" And cells[1][i] = "" And cells[2][i] = "O" Then
compCol = i
compRow = 1
ElseIf cells[0][i] = "" And cells[1][i] = "O" And cells[2][i] = "O" Then
compCol = i
compRow = 0
EndIf
EndFor
If cells[0][0] = "O" And cells[1][1] = "O" And cells[2][2] = "" Then
compCol = 2
compRow = 2
ElseIf cells[0][0] = "O" And cells[1][1] = "" And cells[2][2] = "O" Then
compCol = 1
compRow = 1
ElseIf cells[0][0] = "" And cells[1][1] = "O" And cells[2][2] = "O" Then
compCol = 0
compRow = 0
EndIf
EndSub
Sub TryBlock
compRow = -1
compCol = -1
For i = 0 to 2
computerWins = "True"
gameOver = "True"
ElseIf cells[0][i] = "X" And cells[1][i] = "X" And cells[2][i] = "X" Then
playerWins = "True"
gameOver = "True"
ElseIf cells[0][i] = "O" And cells[1][i] = "O" And cells[2][i] = "O" Then
computerWins = "True"
gameOver = "True"
EndIf
EndFor
If cells[0][0] = "X" And cells[1][1] = "X" And cells[2][2] = "X" Then
playerWins = "True"
gameOver = "True"
ElseIf cells[0][0] = "O" And cells[1][1] = "O" And cells[2][2] = "O" Then
computerWins = "True"
gameOver = "True"
ElseIf cells[0][2] = "O" And cells[1][1] = "O" And cells[2][0] = "O" Then
computerWins = "True"
gameOver = "True"
ElseIf cells[0][2] = "X" And cells[1][1] = "X" And cells[2][0] = "X" Then
playerWins = "True"
gameOver = "True"
EndIf
If gameOver <> "True" Then
gameOver = "True"
For i = 0 to 2
For j = 0 To 2
If cells[i][j] = "" Then
gameOver = "False"
EndIf
EndFor
EndFor
EndIf
EndSub
Sub PickCorner
If cells[0][0] = "X" And cells[2][2] = "" Then
compRow = 2
compCol = 2
ElseIf cells[0][2] = "X" And cells[2][0] = "" Then
compRow = 2
compCol = 0
ElseIf cells[2][0] = "X" And cells[0][2] = "" Then
compRow = 0
compCol = 2
ElseIf cells[2][2] = "X" And cells[0][0] = "" Then
compRow = 2
compCol = 2
ElseIf cells[0][0] = "" Then
compRow = 0
compCol = 0
ElseIf cells[0][2] = "" Then
compRow = 0
compCol = 2
ElseIf cells[2][0] = "" Then
compRow = 2
compCol = 0
ElseIf cells[2][2] = "" Then
compRow = 2
compCol = 2
EndIf
EndSub
Sub PickAny
For i = 0 to 2
For j = 0 To 2
If cells[i][j] = "" Then
compRow = i
compCol = j
Goto endPickAny
EndIf
EndFor
EndFor
endPickAny:
EndSub
Sub PlayComputerTurn
r = compRow
c = compCol
cells[r][c] = "O"
GraphicsWindow.BrushColor = "Black"
GraphicsWindow.FontSize = 40
GraphicsWindow.FontBold = "False"
cellText = Shapes.AddText("O")
Shapes.Move(cellText, c * cellSize + gridX + 40, r * cellSize + gridY + 26)
playerTurn = "True"
EndSub
Sub OnMouseDown
If playerTurn = "True" Then
mx = GraphicsWindow.MouseX
my = GraphicsWindow.MouseY
If mx > gridX And my > gridY And mx < (gridX + 3 * cellSize) And my < (gridY + 3 *
cellSize) Then
c = Math.Floor((mx - gridX) / cellSize)
r = Math.Floor((my - gridY) / cellSize)
If cells[r][c] = "" Then
cells[r][c] = "X"
GraphicsWindow.BrushColor = "Black"
GraphicsWindow.FontSize = 40
GraphicsWindow.FontBold = "False"
cellText = Shapes.AddText("X")
Shapes.Move(cellText, c * cellSize + gridX + 40, r * cellSize + gridY + 26)
playerTurn = "False"
EndIf
EndIf
EndIf
EndSub
Sub OnMouseMove
If playerTurn = "True" Then
hover = "False"
DrawCell()
mx = GraphicsWindow.MouseX
my = GraphicsWindow.MouseY
If mx > gridX And my > gridY And mx < (gridX + 3 * cellSize) And my < (gridY + 3 *
cellSize) Then
col = Math.Floor((mx - gridX) / cellSize)
row = Math.Floor((my - gridY) / cellSize)
hover = "True"
DrawCell()
EndIf
EndIf
EndSub
Sub SetupBoard
hover = "False"
For col = 0 to 2
For row = 0 To 2
DrawCell()
EndFor
EndFor
row = -1
col = -1
EndSub
Sub DrawCell
If row >= 0 And col >= 0 And row <= 2 And col <=2 Then
x = col * cellSize + gridX
y = row * cellSize + gridY
If hover = "True" Then
GraphicsWindow.BrushColor = "Azure"
Else
GraphicsWindow.BrushColor = "White"
EndIf
GraphicsWindow.FillRectangle(x, y, cellSize, cellSize)
GraphicsWindow.PenColor = "Black"
GraphicsWindow.DrawRectangle(x, y, cellSize, cellSize)
EndIf
EndSub
Solucion:
' Copyright (c) Microsoft Corporation. All rights reserved.
GraphicsWindow.Hide()
GraphicsWindow.Height = 450
GraphicsWindow.Width = 600
GraphicsWindow.Top = ( Desktop.Height - 450 ) / 2
GraphicsWindow.Left = ( Desktop.Width - 600 ) / 2
GraphicsWindow.CanResize = "False"
GraphicsWindow.Show()
paddleImage = Program.Directory + "\rectangle.png"
ballImage = Program.Directory + "\circle.png"
Left = 42
bStartY = 35
CreatUI()
hitCount = 0
GraphicsWindow.MouseMove = MouseAction
For index = 0 To 15
Array.SetValue("PinkBricks", Index, 1)
Array.SetValue("VioletBricks", Index, 1)
Array.SetValue("AquaBricks", Index, 1)
Endfor
InitBricks()
score = 0
ShowScore()
gw = GraphicsWindow.Width
gh = GraphicsWindow.Height
y = gh - 28
Shapes.Move(ball, x, y)
dX= 1
dY =-2
Loop:
x = x + dX
y = y + dY
If x >= gw - 16 Or x <= 0 Then
dX= -dX
EndIf
If y <= 0 Then
dY = -dY
EndIf
padX = Shapes.GetLeft(paddle)
If y >= gh - 28 + 2 And x >= padX And x <= padX + 70 Then
y = gh - 28 + 2
hitCount = hitCount + 1
If Math.Remainder(hitCount, 3) = 0 Then
For Index = 0 To 15
HidePinkBrick()
HideVioletBrick()
HideAquaBrick()
Endfor
bStartY = bStartY + 20
InitBricks()
EndIf
TestAqua:
For Index = 0 To 15
If Array.GetValue("AquaBricks", Index) = 1 Then
If bStartY > gh - 160 Then
Goto EndGame
EndIf
EndIf
EndFor
TestViolet:
For Index = 0 To 15
If Array.GetValue("VioletBricks", Index) = 1 Then
If bStartY > gh - 100 Then
Goto EndGame
EndIf
EndIf
EndFor
TestPink:
For Index = 0 To 15
If Array.GetValue("PinkBricks", Index) = 1 Then
If bStartY > gh - 40 Then
Goto EndGame
EndIf
EndIf
EndFor
EndTest:
dX= dX- 2 + (x - padX) / 30
If score = oldScore Then
If score <> 0 Then
score = score - 1
EndIf
EndIf
oldScore = score
ShowScore()
dY = -dY
EndIf
Shapes.Move(ball, x, y)
Program.Delay(5)
If y > bStartY - 16 And y < bStartY + 20 Then
Index = (x+8) / 40
Index = Math.Floor(Index)
If Array.GetValue("PinkBricks", Index) = 1 Then
If Index=8 Then
Else
Array.SetValue("PinkBricks", Index, 0)
HidePinkBrick()
Left = Left - 1
score = score + 15
ShowScore()
EndIf
dY = -dY
gameFinish()
EndIf
EndIf
If y > bStartY + 44 And y < bStartY + 80 Then
Index = (x + 8) / 40
Index = Math.Floor(Index)
If Array.GetValue("VioletBricks", Index) = 1 Then
paddle = Shapes.AddImage(paddleimage)
ball = Shapes.AddImage(ballimage)
EndSub
Sub MouseAction
paddleX = GraphicsWindow.MouseX
Shapes.Move(paddle, paddleX - 10, GraphicsWindow.Height - 14)
EndSub
Sub ShowScore
GraphicsWindow.BrushColor = "White"
GraphicsWindow.FillRectangle(520, 10, 200, 20)
GraphicsWindow.BrushColor = "Black"
GraphicsWindow.DrawText(500, 10, "Score: " + score)
EndSub
Sub InitBricks
For Index = 0 To 15
If Index = 8 Then
GraphicsWindow.PenColor = "Black"
GraphicsWindow.BrushColor = "Gray"
Else
If Array.GetValue("PinkBricks", Index) = 1 Then
GraphicsWindow.PenColor = "Black"
GraphicsWindow.BrushColor = "Pink"
Else
GraphicsWindow.PenColor = "White"
GraphicsWindow.BrushColor = "White"
EndIf
EndIf
GraphicsWindow.FillRectangle(Index * 40, bStartY, 40, 20)
GraphicsWindow.DrawRectangle(Index * 40, bStartY, 40, 20)
GraphicsWindow.BrushColor = "Violet"
If Index = 4 Or Index=11 Then
GraphicsWindow.PenColor = "Black"
GraphicsWindow.BrushColor = "Gray"
Else
GraphicsWindow.BrushColor = "White"
GraphicsWindow.FillRectangle(Index * 40, bStartY + 60, 40, 20)
GraphicsWindow.DrawRectangle(Index * 40, bStartY + 60, 40, 20)
EndSub
Sub HideAquaBrick
GraphicsWindow.PenColor = "White"
GraphicsWindow.BrushColor = "White"
GraphicsWindow.FillRectangle(Index * 40, bStartY + 120, 40, 20)
GraphicsWindow.DrawRectangle(Index * 40, bStartY + 120, 40, 20)
EndSub
Sub gameFinish
If Left = 0 Then
GraphicsWindow.ShowMessage("Well Done! Your score is: " + score, "Game Over")
Program.End()
EndIf
EndSub
Codigo:
GraphicsWindow.Title = "Fun with the Turtle"
GraphicsWindow.Height = 300
GraphicsWindow.Width = 500
Turtle.Show()
Turtle.Speed = 10
Turtle.X = 150
Turtle.Y = 150
For i = 0 To 200 Step 5
GraphicsWindow.PenColor = GraphicsWindow.GetRandomColor()
Turtle.Move(i)
Turtle.Turn(90)
EndFor
Turtle.PenUp()
Turtle.Move(260)
Turtle.Turn(60)
Turtle.Move(120)
Turtle.PenDown()
For i = 0 To 200 Step 5
GraphicsWindow.PenColor = GraphicsWindow.GetRandomColor()
Turtle.Move(i)
Turtle.Turn(120)
EndFor
Solucion:
1. Presionando Publish en la barra de herramientas
2. Presionando Import y especificando el ID.
http://www.microsoft.com/express/Windows
http://msdn.microsoft.com/en-us/beginner/
API
Arguments
El objeto Arguments (argumentos) proporciona operaciones para acceder a los argumentos de
la lnea de comando proporcionados al principio del programa.
Array
Este objeto proporciona una manera de almacenar ms de un valor para un nombre dado.
Estos valores pueden ser accedidos por otro ndice.
Clock
Esta clase proporciona acceso al reloj del sistema.
Desktop
Esta clase proporciona mtodos para interactuar con el escritorio.
Dictionary
Esta clase da acceso a un servicio de diccionario (Dictionary) en lnea.
File
El objeto File (archivo) proporciona mtodos para acceder, leer y escribir informacin de un
archivo o a un archivo en el disco. Al utilizar este objeto, es posible guardar o abrir
configuraciones en varias sesiones del programa.
Flickr
Esta clase da acceso a los servicios de fotografa de Flickr.
GraphicsWindow
La clase GraphicsWindow (ventana de grficos) proporciona grficos relacionados con
funcionalidades de entrada y de salida. Por ejemplo, esta clase le permite dibujar y rellenar
crculos y rectngulos.
ImageList
Esta clase ayuda a cargar y almacenar imgenes en memoria.
Math
La clase Math (matemticas) proporciona muchos mtodos tiles relacionados con las
matemticas.
Mouse
La clase Mouse proporciona o asigna propiedades relacionadas con el mouse, tales como la
posicin del cursor, el puntero, etc..
Network
Esta clase de ayuda privada proporciona mtodos de acceso a la red.
Program
La clase Program (programa) proporciona ayuda para controlar la ejecucin del programa.
Shapes
El objeto Shape (forma) permite agregar, mover y rotar formas en la ventana de grficos.
Sound
El objeto Sound (sonido) proporciona operaciones que le permiten reproducir sonidos. Algunos
ejemplos de sonidos se proporcionan en la biblioteca.
Stack
Este objeto proporciona una manera de almacenar valores al igual que se apilan platos. Puede
poner un valor al principio de la pila y sacarlo. Slo puede sacar y poner los valores uno a uno
y el ltimo valor que se pone es el primero que se puede sacar.
Text
El objeto Text (texto) proporciona operaciones tiles para trabajar con texto.
TextWindow
El objeto TextWindow (ventana de texto) proporciona funcionalidades relacionadas con la
entrada y salida de texto. Por ejemplo, con esta clase puede escribir texto en una ventana de
texto o leer texto de ella.
Timer
El objeto Timer (temporizador) proporciona una manera fcil de hacer algo una y otra vez con
un intervalo constante entre medias.
Turtle
La clase Tutle (tortuga) proporciona funcionalidad como la de Logo para dibujar formas
mediante la manipulacin de propiedades de lpiz y primitivas de dibujo.
ARGUMENTS
ARRAY
La matriz a comprobar.
index
El ndice a comprobar.
Returns
"True" o "False" dependiendo de si el ndice se encuentra en la matriz
especificada.
ContainsValue
Array.ContainsValue(array, value)
Indica si la matriz contiene o no el valor dado. Es muy til cuando hay que
decidir si el valor de la matriz se ha almacenado en un ndice o no.
array
La matriz a comprobar.
value
El valor a comprobar.
Returns
"True" o "False" dependiendo de si un valor se presenta en la matriz
especificada.
GetItemCount
Array.GetItemCount(array)
Obtiene el nmero de elementos almacenados en la matriz.
array
La matriz en la que se ejecutar el conteo.
Returns
La cantidad de elementos en la matriz indicada.
GetValue
Array.GetValue(arrayName, index)
Asigna un valor para una matriz e ndice determinados.
arrayName
El nombre de la matriz.
index
El nombre del ndice.
Returns
El valor en el ndice indicado de la matriz indicada.
SetValue
Array.SetValue(arrayName, index, value)
Asigna un valor para una matriz e ndice determinados.
arrayName
El nombre de la matriz.
index
El nombre del ndice.
value
El valor a asignar.
Returns
Nothing
CLOCK
DESKTOP
DICTIONARY
GetDefinition
Dictionary.GetDefinition(word)
Obtiene la definicin de una palabra en ingls.
word
La palabra a definir.
Returns
Las definiciones de la palabra indicada.
GetDefinitionInFrench
Dictionary.GetDefinitionInFrench(word)
Obtiene la definicin de una palabra en francs.
word
La palabra a definir.
Returns
Las definiciones de la palabra indicada.
FILE
filePath
La ruta completa del archivo a leer. Por ejemplo, c:\temp\settings.data.
contents
El contenido a agregar al final del archivo.
Returns
Si la operacin se completa con xito, devuelve "SUCCESS". De lo contrario,
devuelve "FAILED".
CopyFile
File.CopyFile(sourceFilePath, destinationFilePath)
Copia el archivo fuente especificado en la ruta de destino. Si la ruta de destino
no existe, el mtodo tratar de crearla automticamente. Los archivos que ya
existen se sobrescribirn. Es una buena prctica comprobar primero si el
archivo ya existe para evitar sobrescribir archivos que ya existen.
sourceFilePath
La ruta completa del archivo que hay que copiar. Por ejemplo,
c:\temp\settings.data.
destinationFilePath
La ubicacin o la ruta al archivo de destino.
Returns
Si la operacin se completa con xito, devuelve "SUCCESS". De lo contrario,
devuelve "FAILED".
CreateDirectory
File.CreateDirectory(directoryPath)
Crea el directorio indicado.
directoryPath
La ruta completa del directorio a crear.
Returns
Si la operacin se completa con xito, devuelve "SUCCESS". De lo contrario,
devuelve "FAILED".
DeleteDirectory
File.DeleteDirectory(directoryPath)
Borra el directorio especificado.
directoryPath
La ruta completa del directorio a borrar.
Returns
FLICKR
Methods
GetPictureOfMoment
Flickr.GetPictureOfMoment()
Obtiene la URL (ubicacin universal de recurso) de la imagen del momento.
Returns
Una URL (ubicacin universal de recurso) de archivo de la imagen del
momento de Flickr.
GetRandomPicture
Flickr.GetRandomPicture(tag)
Obtiene la URL (ubicacin universal de recurso) de una imagen aleatoria
etiquetada con la etiqueta indicada.
tag
La etiqueta de la imagen solicitada.
Returns
Una URL (ubicacin universal de recurso) de archivo de la imagen aleatoria de
Flickr.
GRAPHICSWINDOW
GraphicsWindow.FontName
Obtiene o establece el nombre de la fuente a utilizar cuando se escribe texto en
la ventana de grficos.
FontSize
GraphicsWindow.FontSize
Obtiene o establece el tamao de la fuente a utilizar cuando se escribe texto en
la ventana de grficos.
Height
GraphicsWindow.Height
Obtiene o cambia el alto de la ventana de grficos.
LastKey (This property is read-only.)
GraphicsWindow.LastKey
Obtiene la ltima tecla que se presion o liber.
Left
GraphicsWindow.Left
Obtiene o cambia la posicin izquierda de la ventana de grficos.
MouseX (This property is read-only.)
GraphicsWindow.MouseX
Obtiene la posicin X del mouse relativa a la ventana de grficos.
MouseY (This property is read-only.)
GraphicsWindow.MouseY
Obtiene la coordenada Y del mouse relativa a la ventana de grficos.
PenColor
GraphicsWindow.PenColor
Obtiene o establece el color del lpiz a utilizar para dibujar formas en la
ventana de grficos.
PenWidth
GraphicsWindow.PenWidth
Obtiene o cambia el ancho del lpiz usado para dibujar formas en la ventana de
grficos.
Title
GraphicsWindow.Title
Obtiene o cambia el ttulo de la ventana de grficos.
Top
GraphicsWindow.Top
Returns
Nothing
DrawEllipse
GraphicsWindow.DrawEllipse(x, y, width, height)
Dibuja una elipse en la pantalla usando el lpiz seleccionado.
x
La coordenada X de la elipse.
y
La coordenada Y de la elipse.
width
El ancho de la elipse.
height
El alto de la elipse.
Returns
Nothing
DrawImage
GraphicsWindow.DrawImage(imageName, x, y)
Dibuja la imagen especificada en memoria a la pantalla, con el tamao
indicado.
imageName
El nombre de la imagen a dibujar.
x
La coordenada X del punto en el cual dibujar la imagen.
y
La coordenada Y del punto en el cual dibujar la imagen.
Returns
Nothing
DrawLine
GraphicsWindow.DrawLine(x1, y1, x2, y2)
Dibuja una lnea de un punto a otro
x1
La coordenada X del primer punto.
y1
La coordenada Y del primer punto.
x2
La coordenada X del segundo punto.
y2
La coordenada Y del segundo punto.
Returns
Nothing
DrawRectangle
GraphicsWindow.DrawRectangle(x, y, width, height)
Dibuja un rectngulo en la pantalla usando el lpiz seleccionado.
x
La coordenada X del rectngulo.
y
La coordenada Y del rectngulo.
width
El ancho del rectngulo.
height
El alto del rectngulo.
Returns
Nothing
DrawResizedImage
GraphicsWindow.DrawResizedImage(imageName, x, y, width, height)
Dibuja la imagen especificada en memoria a la pantalla, con el tamao
indicado.
imageName
El nombre de la imagen a dibujar.
x
La coordenada X del punto en el cual dibujar la imagen.
y
La coordenada Y del punto en el cual dibujar la imagen.
width
El ancho para dibujar la imagen.
height
El alto para dibujar la imagen.
Returns
Nothing
DrawText
GraphicsWindow.DrawText(x, y, text)
Dibuja una lnea de texto en la pantalla en la ubicacin especificada.
x
La coordenada X del punto de inicio del texto.
y
La coordenada Y del punto de inicio del texto.
text
El texto a escribir.
Returns
Nothing
DrawTriangle
GraphicsWindow.DrawTriangle(x1, y1, x2, y2, x3, y3)
Dibuja un tringulo en la pantalla usando el lpiz seleccionado.
x1
La coordenada X del primer punto.
y1
La coordenada Y del primer punto.
x2
La coordenada X del segundo punto.
y2
La coordenada Y del segundo punto.
x3
La coordenada X del tercer punto.
y3
La coordenada Y del tercer punto.
Returns
Nothing
FillEllipse
GraphicsWindow.FillEllipse(x, y, width, height)
Rellena una elipse en la pantalla usando el pincel seleccionado.
x
La coordenada X de la elipse.
y
La coordenada Y de la elipse.
width
El ancho de la elipse.
height
El alto de la elipse.
Returns
Nothing
FillRectangle
GraphicsWindow.FillRectangle(x, y, width, height)
Rellena un rectngulo en la pantalla usando el pincel seleccionado.
x
La coordenada X del rectngulo.
y
La coordenada Y del rectngulo.
width
El ancho del rectngulo.
height
El alto del rectngulo.
Returns
Nothing
FillTriangle
GraphicsWindow.FillTriangle(x1, y1, x2, y2, x3, y3)
Dibuja y rellena un tringulo en la pantalla usando el pincel seleccionado.
x1
La coordenada X del primer punto.
y1
La coordenada Y del primer punto.
x2
La coordenada X del segundo punto.
y2
La coordenada Y del segundo punto.
x3
La coordenada X del tercer punto.
y3
La coordenada Y del tercer punto.
Returns
Nothing
GetColorFromRGB
GraphicsWindow.GetColorFromRGB(red, green, blue)
Crea un color con los valores de rojo, verde y azul proporcionados.
red
IMAGELIST
GetHeightOfImage
ImageList.GetHeightOfImage(imageName)
Obtiene el alto de la imagen almacenada.
imageName
El nombre de la imagen en memoria.
Returns
El alto de la imagen especificada.
GetWidthOfImage
ImageList.GetWidthOfImage(imageName)
Obtiene el ancho de la imagen almacenada.
imageName
El nombre de la imagen en memoria.
Returns
MATH
Cos
Math.Cos(angle)
Obtiene el coseno del ngulo dado en radianes.
angle
El ngulo para calcular su coseno (en radianes).
Returns
El coseno del ngulo dado.
Floor
Math.Floor(number)
Obtiene el valor entero que es menor o igual al nmero decimal dado. Por
ejemplo, 32,233 devolver 32.
number
El nmero al que se va a calcular el mximo valor entero no mayor que l.
Returns
El mximo valor entero no mayor del nmero dado.
GetDegrees
Math.GetDegrees(angle)
Convierte un ngulo dado en radianes a grados.
angle
El ngulo en radianes.
Returns
El ngulo convertido a grados.
GetRadians
Math.GetRadians(angle)
Convierte un ngulo dado en grados a radianes.
angle
El ngulo en grados.
Returns
El ngulo convertido a radianes.
GetRandomNumber
Math.GetRandomNumber(maxNumber)
Obtiene un nmero aleatorio entre 1 y el nmero especificado (incluido).
maxNumber
El mximo valor para el nmero aleatorio solicitado.
Returns
Math.Power(baseNumber, exponent)
Eleva la base a la potencia indicada.
baseNumber
El nmero a ser elevado a la potencia exponente.
exponent
La potencia a la cual elevar el nmero base.
Returns
El nmero base elevado al exponente indicado.
Remainder
Math.Remainder(dividend, divisor)
Divide el primer nmero entre el segundo y devuelve el resto.
dividend
El dividendo.
divisor
El divisor.
Returns
El resto de la divisin.
Round
Math.Round(number)
Redondea un nmero a su valor entero ms prximo. Por ejemplo, 32,233 se
redondea a 32,0 mientras que 32,566 se redondea a 33.
number
El nmero para calcular su nmero entero.
Returns
El valor entero del nmero dado.
Sin
Math.Sin(angle)
Obtiene el seno del ngulo dado en radianes.
angle
El ngulo (en radianes) cuyo seno se necesita.
Returns
El seno del ngulo dado.
SquareRoot
Math.SquareRoot(number)
Obtiene la raz cuadrada de un nmero dado
number
MOUSE
ShowCursor
Mouse.ShowCursor()
Muestra el puntero del mouse en la pantalla.
Returns
Nothing
NETWORK
Methods
DownloadFile
Network.DownloadFile(url)
Descarga un archivo desde la red a un archivo local temporal.
url
La URL del archivo en la red.
Returns
El nombre de un archivo local que corresponde al que se ha descargado.
GetWebPageContents
Network.GetWebPageContents(url)
Obtiene el contenido de la pgina web indicada.
url
La URL (ubicacin universal de recurso) de la pgina web.
Returns
El contenido de la pgina web especificada.
PROGRAM
Methods
Delay
Program.Delay(milliSeconds)
Retrasa la ejecucin del programa por la cantidad indicada de milisegundos.
milliSeconds
La duracin del retraso.
Returns
Nothing
End
Program.End()
Finaliza el programa.
Returns
Nothing
SHAPES
AddLine
Shapes.AddLine(x1, y1, x2, y2)
Agrega una lnea entre los puntos indicados.
x1
La coordenada X del primer punto.
y1
La coordenada Y del primer punto.
x2
La coordenada X del segundo punto.
y2
La coordenada Y del segundo punto.
Returns
La lnea que se ha dibujado en la ventana de grficos.
AddRectangle
Shapes.AddRectangle(width, height)
Agrega un rectngulo con el ancho y alto indicados.
width
El ancho del rectngulo.
height
El alto del rectngulo.
Returns
El rectngulo que se ha dibujado en la ventana de grficos.
AddTriangle
Shapes.AddTriangle(x1, y1, x2, y2, x3, y3)
Agrega un tringulo representado por los puntos indicados.
x1
La coordenada X del primer punto.
y1
La coordenada Y del primer punto.
x2
La coordenada X del segundo punto.
y2
La coordenada Y del segundo punto
x3
La coordenada X del tercer punto.
y3
La coordenada Y del tercer punto.
Returns
El tringulo que se ha dibujado en la ventana de grficos.
Animate
Shapes.Animate(shapeName, x, y, duration)
Mueve una forma con el nombre especificado a nueva posicin.
shapeName
El nombre de la forma a mover.
x
La coordenada X de la nueva posicin.
y
La coordenada Y de la nueva posicin.
duration
La duracin de la animacin, en milisegundos.
Returns
Nothing
GetLeft
Shapes.GetLeft(shapeName)
Obtiene la coordenada izquierda de la forma indicada.
shapeName
El nombre de la forma.
Returns
La coordenada izquierda de la forma.
GetTop
Shapes.GetTop(shapeName)
Obtiene la coordenada superior de la forma indicada.
shapeName
El nombre de la forma.
Returns
La coordenada superior de la forma.
Move
Shapes.Move(shapeName, x, y)
Mueve la forma con el nombre indicado a una nueva posicin.
shapeName
El nombre de la forma a mover.
x
La coordenada X de la nueva posicin.
y
La coordenada Y de la nueva posicin.
Returns
Nothing
Remove
Shapes.Remove(shapeName)
Borra una forma de la ventana de grficos.
shapeName
El nombre de la forma que hay que borrar.
Returns
Nothing
Rotate
Shapes.Rotate(shapeName, angle)
Rota la forma con el nombre indicado el ngulo indicado.
shapeName
El nombre de la forma a rotar.
angle
El ngulo a rotar la forma.
Returns
Nothing
SOUND
Sound.PlayBellRingAndWait()
Reproduce el sonido "timbre" y espera a que termine.
Returns
Nothing
PlayChime
Sound.PlayChime()
Reproduce el sonido "campana".
Returns
Nothing
PlayChimeAndWait
Sound.PlayChimeAndWait()
Reproduce el sonido "campana" y espera a que termine.
Returns
Nothing
PlayChimes
Sound.PlayChimes()
Reproduce el sonido "campanas".
Returns
Nothing
PlayChimesAndWait
Sound.PlayChimesAndWait()
Reproduce el sonido "campanas" y espera a que termine.
Returns
Nothing
PlayClick
Sound.PlayClick()
Reproduce el sonido "clic".
Returns
Nothing
PlayClickAndWait
Sound.PlayClickAndWait()
Reproduce el sonido "clic" y espera a que termine.
Returns
Nothing
Stop
Sound.Stop(filePath)
Para la reproduccin de un archivo de audio. Si el archivo no se est
reproduciendo, esta operacin no realizar ninguna operacin.
filePath
La ruta al archivo de audio. Puede ser un archivo local (por ejemplo,
c:\music\track1.mp3) o un archivo en la web (por ejemplo,
http://contoso.com/track01.wma).
Returns
Nothing
STACK
PushValue
Stack.PushValue(stackName, value)
Agrega un valor a la pila indicada.
stackName
El nombre de la pila.
value
El valor a agregar.
Returns
Nothing
TEXT
El objeto Text (texto) proporciona operaciones tiles para trabajar con texto.
Methods
Append
Text.Append(text1, text2)
Anexa dos entradas de texto y devuelve el resultado como otro texto. Esta
operacin es especialmente til cuando se trabaja con texto desconocido en
variables que pueden tratarse accidentalmente como nmeros y agregarse en
lugar de anexarse.
text1
Primera parte del texto a anexar.
text2
Segunda parte del texto a anexar.
Returns
El texto anexado que contiene las dos partes indicadas.
ConvertToLowerCase
Text.ConvertToLowerCase(text)
Convierte el texto dado a minsculas.
text
El texto a convertir a minsculas.
Returns
El texto convertido a minsculas.
ConvertToUpperCase
Text.ConvertToUpperCase(text)
Convierte el texto dado a maysculas.
text
El texto a convertir a maysculas.
Returns
El texto convertido a maysculas.
EndsWith
Text.EndsWith(text, subText)
Determina si un texto dado es el final de un texto ms largo.
text
La cadena donde buscar.
subText
El texto por el que buscar.
Returns
Verdadero si se encuentra la subcadena al final del texto proporcionado.
GetCharacter
Text.GetCharacter(characterCode)
Devuelve un carcter que se puede usar con texto normal del cdigo Unicode
proporcionado.
characterCode
El cdigo de carcter (basado en Unicode) para el carcter requerido.
Returns
Un carcter Unicode que corresponde con el cdigo indicado.
GetCharacterCode
Text.GetCharacterCode(character)
Dado un carcter Unicode, obtiene el cdigo correspondiente.
character
El carcter del cual se solicita el cdigo.
Returns
Un cdigo basado en Unicode correspondiente al carcter indicado.
GetIndexOf
Text.GetIndexOf(text, subText)
Encuentra la posicin donde una subcadena aparece en el texto especificado.
text
TEXTWINDOW
Left
TextWindow.Left
Obtiene o cambia la posicin a la izquierda de la ventana de texto.
Title
TextWindow.Title
Obtiene o cambia el ttulo de la ventana de texto.
Top
TextWindow.Top
Obtiene o cambia la posicin superior de la ventana de texto.
Methods
Clear
TextWindow.Clear()
Borra el contenido de la ventana de texto.
Returns
Nothing
Hide
TextWindow.Hide()
Oculta la ventana de texto.
Returns
Nothing
Pause
TextWindow.Pause()
Espera a que el usuario escriba algo antes de volver.
Returns
Nothing
PauseIfVisible
TextWindow.PauseIfVisible()
Espera a que el usuario escriba algo una vez que la ventana de texto est
abierta.
Returns
Nothing
PauseWithoutMessage
TextWindow.PauseWithoutMessage()
Espera a que el usuario escriba algo antes de volver.
Returns
Nothing
Read
TextWindow.Read()
Lee la lnea de texto de la ventana de texto. Esta funcin no terminar hasta
que el usuario presione la tecla ENTRAR.
Returns
El texto ledo de la ventana de texto.
TIMER
El objeto Timer (temporizador) proporciona una manera fcil de hacer algo una
y otra vez con un intervalo constante entre medias.
Properties
Interval
Timer.Interval
Obtiene o especifica el intervalo (en milisegundos) y especifica con qu
frecuencia se debe elevar el evento Tick. El valor puede estar entre 10 y
100.000.000.
Events
Tick
Timer.Tick
Desencadena un evento cuando el temporizador cumple un ciclo.
Methods
Pause
Timer.Pause()
Pausa el temporizador. No se desencadenarn eventos Tick.
Returns
Nothing
Resume
Timer.Resume()
Reanuda el temporizador de un estado de pausa. Se desencadenarn eventos
Tick.
Returns
Nothing
TURTLE
Nothing
MoveTo
Turtle.MoveTo(x, y)
Gira y mueve la tortuga a la posicin especificada. Si el lpiz se encuentra
pulsado, dibuja una lnea mientras la mueve.
x
La coordenada X del punto de destino.
y
La coordenada Y del punto de destino.
Returns
Nothing
PenDown
Turtle.PenDown()
Baja el lpiz para permitir que la tortuga dibuje mientras se mueve.
Returns
Nothing
PenUp
Turtle.PenUp()
Levanta el lpiz para dejar de dibujar mientras la tortuga se mueve.
Returns
Nothing
Show
Turtle.Show()
Muestra la tortuga y permite interactuar con ella.
Returns
Nothing
Turn
Turtle.Turn(angle)
Gira la tortuga el ngulo especificado. El ngulo es en grados y puede ser
positivo o negativo. Si el ngulo es positivo, la tortuga gira a la derecha. Si es
negativo, gira a la izquierda.
angle
El ngulo a girar la tortuga.
Returns
Nothing
TurnLeft
Turtle.TurnLeft()
Gira la tortuga 90 grados hacia la izquierda.
Returns
Nothing
TurnRight
Turtle.TurnRight()
Gira la tortuga 90 grados hacia la derecha.
Returns
Nothing