# Show What You Know Answer Key

On this page, you will find the answer key for the Show What You Know section from each lesson.

## Lesson 1.1: Introduction to Small Basic

1. A programming language.
2. IntelliSense.
3. By clicking Run on the Toolbar or by pressing F5 on the keyboard.

## Lesson 1.2: Statements, Properties, and Operations

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.")

## Lesson 1.3: Variables

You can use the following formulas for calculation:

circumference = (3.14) * 2 * radius

Solution:

TextWindow.Write(“What is the diameter of the circle? ")

circumference = (3.14) * 2 * radius

TextWindow.WriteLine("The area of the circle is " + area + ".")

TextWindow.WriteLine("The circumference of the circle is " + circumference + ".")

## Lesson 1.4: Conditions and Loops

TextWindow.Write("How many student grades would you like to calculate? ")

n = 1

While n <= number

TextWindow.Write("What is the student’s percentage? ")

If  percentage >= 75 Then

ElseIf  percentage < 75 And percentage >= 60  Then

ElseIf  percentage < 60 And percentage >= 35 Then

Else

EndIf

n = n + 1

EndWhile

## Lesson 1.5: Branching and Subroutines

If i < 10 then

TextWindow.WriteLine("")

TextWindow.Write("What is the name of a city? ")

TextWindow.Write("How warm is that city (in degrees Celsius)? ")

TextWindow.Write("Is it rainy (Y/N)? ")

TextWindow.Write("Is it windy (Y/N)? ")

'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

## Lesson 2.1: Graphics Window

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")

## Lesson 2.2: Turtle Graphics

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()

For i = 0 To 200 Step 5

GraphicsWindow.PenColor = GraphicsWindow.GetRandomColor()

Turtle.Move(i)

Turtle.Turn(150)

EndFor

## Lesson 2.3: Exploring Shapes

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"

Shapes.Move(circle, 0, 50)

Shapes.Animate(circle, 250, 50, 1000)

## Lesson 2.4: Sound, Program, and Text Objects

TextWindow.Title = "Let’s take a quiz…"

TextWindow.WriteLine("Name the third planet from the Sun: ")

Sound.PlayChime()

TextWindow.WriteLine("You are absolutely right!")

Else

TextWindow.WriteLine("That is incorrect.")

Sound.PlayBellRing()

EndIf

## Lesson 2.5: Clock, Desktop, and Dictionary Objects

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: ")

TextWindow.Write("Enter Minute: ")

TextWindow.Write("AM/PM?: ")

alarm = hour + ":" + minute + ":00 " + AmPmStatus

TextWindow.WriteLine("Alarm Time: " + alarm)

EndSub

## Lesson 2.6: Flickr, ImageList, and Network Objects

While picture < 10

ImagePath = Flickr.GetRandomPicture("Animals")

GraphicsWindow.Height = ImageList.GetHeightOfImage(Images)

GraphicsWindow.Width = ImageList.GetWidthOfImage(Images)

GraphicsWindow.DrawImage(Images, 0, 0)

Program.Delay(2000)

picture = picture + 1

EndWhile

## Lesson 3.1: File Input and Output

TextWindow.Write("Enter the name of the new directory: ")

File.CreateDirectory(DirectoryName)

filepath = "\\myserver\Share\FileIO.txt"

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.Write("Enter data to be added in the file:")

File.AppendContents(files[1]," " + AppendedData)

TextWindow.WriteLine("File content after adding data is as follows: ")

EndIf

## Lesson 3.2: Stacks and Arrays

TextWindow.WriteLine("Flight Reservations")

TotalSeats = 10

For i = 1 To TotalSeats

TextWindow.Write("Enter Passenger Name: ")

TextWindow.WriteLine("Seat number " + i + " is reserved by " + Name[i])

GetDetails()

EndFor

Sub GetDetails

If Array.GetItemCount(Name) = TotalSeatsThen

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

## Lesson 3.3: The Math Object

Solution 1:

Shapes.Move(Rectangle, 250, 150)

For i = 0 To Math.GetRandomNumber(30)

Program.Delay(500)

Shapes.Rotate(Rectangle, i * 25)

EndFor

Solution 2:

start:

GraphicsWindow.Width = 600

GraphicsWindow.Height = 450

TextWindow.Write("Enter a radius for the circle: ")

Height = Area / 2

Width = Area / 2

x = Math.GetRandomNumber(GraphicsWindow.Width / 2)

y = Math.GetRandomNumber(GraphicsWindow.Height / 2)

GraphicsWindow.DrawEllipse(x, y, Height, Width)

Gotostart

## Lesson 3.4: Events and Interactivity

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)

Controls.SetSize(Triangle, 120, 30)

Controls.SetSize(Rectangle, 120, 30)

Controls.SetSize(Circle, 120, 30)

Controls.SetSize(Rotate, 60, 60)

Controls.SetSize(Zoom, 60, 60)

Controls.SetSize(FreeHand, 60, 60)

Controls.SetSize(Clear, 60, 60)

Controls.SetSize(Exit, 60, 60)

EndSub

Sub MouseAction

x = GraphicsWindow.MouseX

y = GraphicsWindow.MouseY

GraphicsWindow.PenWidth = 1

If x > 40 And x < 160 Then

GraphicsWindow.BrushColor = GraphicsWindow.GetRandomColor()

If y > 345 And y < 375 Then

draw = 0

j = 0

z = 1

tri = Shapes.AddTriangle(20, 20, 100, 100, 150, 20)

Shapes.Move(tri, 80, 100)

EndIf

If y > 375 And y < 405 Then

draw = 0

j = 0

z = 2

Shapes.Move(rect, 250, 150)

EndIf

If y > 405 And y < 435 Then

draw = 0

j = 0

z = 3

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.IsLeftButtonDownThen

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.IsLeftButtonDownThen

GraphicsWindow.DrawLine(OrgX, OrgY, x, y)

EndIf

EndIf

OrgX = x

OrgY = y

EndIf

EndSub

## Lesson 3.5: The Controls Object

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:")

Controls.SetSize(NameTxtBox, 150, 20)

'Telephone details

GraphicsWindow.DrawText(x, y + 90, "Telephone:")

Controls.SetSize(TelphoneTxtBox, 150, 20)

'Email -id

GraphicsWindow.DrawText(x, y + 125, "E-mail ID:")

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)

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

## Lesson 3.6: Debugging Aids

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

Controls.SetSize(nxtBtn, 50, 50)

Controls.SetSize(bckBtn, 50, 50)

EndSub

Sub SlideShow

If Controls.GetButtonCaption(Controls.LastClickedButton) = ">" Then

If i < Array.GetItemCount(SmallBasicImage) Then

i = i + 1

GraphicsWindow.DrawResizedImage(images[i], 50, 50, 500, 300)

TextWindow.WriteLine("Image Name:" + SmallBasicImage[i])

EndIf

EndIf

If Controls.GetButtonCaption(Controls.LastClickedButton) = "<" Then

If i > 1 Then

i = i - 1

GraphicsWindow.DrawResizedImage(images[i], 50, 50, 500, 300)

TextWindow.WriteLine("Image Name:" + SmallBasicImage[i])

EndIf

EndIf

EndSub

## Lesson 4.1: Playing with Shapes

Solution:

GraphicsWindow.Hide()

gw = 620

gh = 450

endtime = Clock.ElapsedMilliseconds

starttime = 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"

Shapes.Move(stick, 174, 238)

GraphicsWindow.BrushColor = "Pink"

Shapes.Move( petals[1], 93, 115)

Shapes.Rotate( petals[1], 15)

Shapes.Move(petals[2], 148, 81)

Shapes.Rotate(petals[2], 105)

Shapes.Move( petals[3], 185, 135 )

Shapes.Rotate( petals[3], 200 )

Shapes.Move( petals[4], 135, 175)

Shapes.Rotate( petals[4], 90)

GraphicsWindow.BrushColor = "Yellow"

Shapes.Move(circ, 162, 140)

GraphicsWindow.BrushColor = "Green"

For i = 1 To 2

Shapes.Move(leafs[i], 223 -(i * 48), 258)

Shapes.Rotate(leafs[i], 180 * i)

EndFor

Hide()

px = 420

py = 20

pw = 90

ph = 100

GraphicsWindow.DrawRectangle(px, py, 180, 200)

GraphicsWindow.DrawRectangle(px, 220, 180, 200)

GraphicsWindow.DrawRectangle(px, py, pw, ph)

GraphicsWindow.DrawRectangle(px + 90, py, pw, ph)

GraphicsWindow.DrawRectangle(px, py + 100, pw, ph)

GraphicsWindow.DrawRectangle(px + 90, py + 100, pw, ph)

GraphicsWindow.DrawRectangle(px, py + 200, pw, ph)

GraphicsWindow.DrawRectangle(px + 90, py + 200, pw, ph)

GraphicsWindow.DrawRectangle(px, py + 300, pw, ph)

GraphicsWindow.DrawRectangle(px + 90, py + 300, pw, ph)

GraphicsWindow.BrushColor = "Green"

Shapes.Move(leaf1, px + 20, py + 40)

Shapes.Move(leaf2, px + 115, py + 340)

GraphicsWindow.BrushColor = "Pink"

Shapes.Move(petal1, px + 105, py + 30)

Shapes.Rotate(petal1, 15)

Shapes.Move(petal2, px + 20, py + 230)

Shapes.Rotate(petal2, 105)

Shapes.Move(petal3, px + 105, py + 230)

Shapes.Rotate(petal3, 200)

Shapes.Move(petal4, px + 20, py + 330)

Shapes.Rotate(petal4, 90)

GraphicsWindow.BrushColor = "Brown"

Shapes.Move(stik, px + 40, py + 130)

GraphicsWindow.BrushColor = "Yellow"

Shapes.Move(circle, px + 120, py + 130)

EndSub

Sub Hide

For i = 1 To 8

Shapes.SetOpacity(petals[i], 10)

EndFor

For i = 1 To 2

Shapes.SetOpacity(leafs[i], 10)

EndFor

Shapes.SetOpacity(circ, 10)

Shapes.SetOpacity(stick, 10)

EndSub

Sub MouseMove

x = GraphicsWindow.MouseX

y = GraphicsWindow.MouseY

If Mouse.IsLeftButtonDownThen

Shapes.Move(sh, x, y)

EndIf

EndSub

Sub onMouseUpEvent

If bsh = stick Then

If (Shapes.GetLeft(sh) + 10) >= Shapes.GetLeft(bsh) And  (Shapes.GetLeft(sh) - 10) <= Shapes.GetLeft(bsh) Then

Shapes.SetOpacity(bsh, 100)

Shapes.Remove(sh)

dropped = dropped + 1

Else

Shapes.Move(sh, shx, shy)

EndIf

EndIf

If (Shapes.GetLeft(sh) + 10) >= Shapes.GetLeft(bsh) And  (Shapes.GetLeft(sh) - 10) <= Shapes.GetLeft(bsh) And (Shapes.GetTop(sh) + 10) >= Shapes.GetTop(bsh) And  (Shapes.GetTop(sh) - 10) <= Shapes.GetTop(bsh) Then

Shapes.SetOpacity(bsh, 100)

Shapes.Remove(sh)

dropped=dropped + 1

Else

Shapes.Move(sh, shx, shy)

EndIf

EndSub

Sub starttimer

GraphicsWindow.BrushColor = "Black"

Controls.SetSize(Submitbtn, 70, 35)

end = Clock.ElapsedMilliseconds

start = Clock.ElapsedMilliseconds

gamestart = Clock.ElapsedMilliseconds

init = 0

While init < 1

game = Clock.ElapsedMilliseconds - start

GraphicsWindow.BrushColor = "#3975e5"

GraphicsWindow.FontSize = 15

GraphicsWindow.FillRectangle(250, 20, 120, 25)

GraphicsWindow.BrushColor = "Black"

tsecamt = Math.Round(game / 1000)

tsec    = Math.Remainder(tsecamt, 60)

tming   = Math.Floor(tsecamt / 60)

tmin    = Math.Remainder(tming, 60)

thour   = Math.Floor(tming / 60)

If tsec < 10 Then

strSec = Text.Append(":0", tsec)

Else

strSec = Text.Append( ":", tsec)

EndIf

If tmin < 10 Then

strMin = Text.Append( "0", tmin)

Else

strMin = Text.Append( "", tmin)

EndIf

sec = Text.Append(strMin, strSec)

GraphicsWindow.DrawText(250, 22, " Time:  " + thour + ":" + sec )

GraphicsWindow.FontSize = 10

end = Clock.ElapsedMilliseconds

fps = 0

Program.Delay(1000)

EndWhile

EndSub

Sub OnclickButton

If Controls.GetButtonCaption(Controls.LastClickedButton) = "Submit" Then

IF dropped = 8 Then

init = 2

GraphicsWindow.ShowMessage("Congratulations! You took " + thour +":"+ tsec + " seconds to complete the flower.","Result")

Program.End()

EndIf

EndIf

EndSub

## Lesson 4.2: Responding to Events

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)

Controls.SetSize(trueButton, 150, 100)

Controls.SetSize(falseButton, 150, 100)

GraphicsWindow.DrawText(220, 300, "Result")

Shapes.Move(resultTextBox, 220, 250)

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])

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)

Shapes.Move(resultTextBox, 220, 250)

score = score + 1

Else

Shapes.Move(resultTextBox, 212, 250)

EndIf

Shapes.SetText(scoreTextBox, "Score: " + score)

StartGame()

EndSub

## Lesson 4.3: Collision Detection

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"

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!")

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>= catcherXThen

gameScore = gameScore + 1

Shapes.SetText(scoreTextBox, "Score: " + gameScore)

appleY = gh + 20

EndIf

EndSub

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()

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

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 = oldScoreThen

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

If Index=4 Or Index=11 Then

Else

Array.SetValue("VioletBricks", Index, 0)

HideVioletBrick()

Left = Left - 1

score = score + 10

ShowScore()

EndIf

dY = -dY

gameFinish()

EndIf

EndIf

If y > bStartY + 104 And y < bStartY + 140 Then

Index = (x + 8) / 40

Index = Math.Floor(Index)

If Array.GetValue("AquaBricks", Index) = 1 Then

If Index = 2 Or Index = 7 Or Index = 13 Then

Else

Array.SetValue("AquaBricks", Index, 0)

HideAquaBrick()

score = score + 5

ShowScore()

Left = Left - 1

EndIf

dY = -dY

gameFinish()

EndIf

EndIf

If y < ghThen

Goto Loop

EndIf

EndGame:

GraphicsWindow.ShowMessage("Your score is: " + score, "Game Over")

Program.End()

Sub CreatUI

GraphicsWindow.FontSize = 14

EndSub

Sub MouseAction

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

If Array.GetValue("VioletBricks", Index) = 1 Then

GraphicsWindow.PenColor = "Black"

GraphicsWindow.BrushColor = "Violet"

Else

GraphicsWindow.PenColor = "White"

GraphicsWindow.BrushColor = "White"

EndIf

EndIf

GraphicsWindow.FillRectangle(Index * 40, bStartY + 60, 40, 20)

GraphicsWindow.DrawRectangle(Index * 40, bStartY + 60, 40, 20)

GraphicsWindow.BrushColor = "Aqua"

If Index = 2 Or Index = 7 Or Index = 13 Then

GraphicsWindow.PenColor = "Black"

GraphicsWindow.BrushColor = "Gray"

Else

If Array.GetValue("AquaBricks", Index) = 1 Then

GraphicsWindow.PenColor = "Black"

GraphicsWindow.BrushColor = "Aqua"

Else

GraphicsWindow.PenColor = "White"

GraphicsWindow.BrushColor = "White"

EndIf

EndIf

GraphicsWindow.FillRectangle(Index * 40, bStartY + 120, 40, 20)

GraphicsWindow.DrawRectangle(Index * 40, bStartY + 120, 40, 20)

EndFor

EndSub

Sub HidePinkBrick

GraphicsWindow.PenColor = "White"

GraphicsWindow.BrushColor = "White"

GraphicsWindow.FillRectangle(Index * 40, bStartY, 40, 20)

GraphicsWindow.DrawRectangle(Index * 40, bStartY, 40, 20)

EndSub

Sub HideVioletBrick

GraphicsWindow.PenColor = "White"

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

## Lesson 5.1: Sharing Code

1. By clicking Publish on the toolbar.

2. By clicking Import and specifying the unique program ID.