Small Basic Curriculum: Show What You Know Answer Key
Small Basic > Curriculum >** **Online > 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
- A programming language.
- IntelliSense.
- 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:
radius = diameter / 2
area = (3.14) * radius * radius
circumference = (3.14) * 2 * radius
Solution:
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 + ".")
Lesson 1.4: Conditions and Loops
TextWindow.Write( "How many student grades would you like to calculate? " )
number = TextWindow.Read()
n = 1
While n <= number
TextWindow.Write( "What is the student's percentage? " )
percentage = TextWindow.Read()
If percentage >= 75 Then
TextWindow.WriteLine( "The student's grade is A." )
ElseIf percentage < 75 And percentage >= 60 Then
TextWindow.WriteLine( "The student's grade is B." )
ElseIf percentage < 60 And percentage >= 35 Then
TextWindow.WriteLine( "The student's grade is C." )
Else
TextWindow.WriteLine( "The student's grade is D." )
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? " )
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
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"
circle = Shapes.AddEllipse(50, 50)
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: " )
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
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: " )
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
Lesson 2.6: Flickr, ImageList, and Network Objects
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
Lesson 3.1: File Input and Output
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
Lesson 3.2: Stacks and Arrays
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) = 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:
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
Solution 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)
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)
Triangle = Controls.AddButton( "Triangle" , 40, 345)
Controls.SetSize(Triangle, 120, 30)
Rectangle = Controls.AddButton( "Rectangle" ,40,375)
Controls.SetSize(Rectangle, 120, 30)
Circle = Controls.AddButton( "Circle" , 40, 405)
Controls.SetSize(Circle, 120, 30)
Rotate = Controls.AddButton( "Rotate" , 230, 360)
Controls.SetSize(Rotate, 60, 60)
Zoom = Controls.AddButton( "Zoom" , 290, 360)
Controls.SetSize(Zoom, 60, 60)
FreeHand = Controls.AddButton( "Draw" , 390, 360)
Controls.SetSize(FreeHand, 60, 60)
Clear = Controls.AddButton( "Clear" , 450, 360)
Controls.SetSize(Clear, 60, 60)
Exit = Controls.AddButton("Exit", 530, 360)
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
rect = Shapes.AddRectangle(100, 100)
Shapes.Move(rect, 250, 150)
EndIf
If y > 405 And y < 435 Then
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.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:" )
NameTxtBox = Controls.AddTextBox(120, 35)
Controls.SetSize(NameTxtBox, 150, 20)
'Address
GraphicsWindow.DrawText(x, y + 40, "Address:" )
AddressTxtBox = Controls.AddMultiLineTextBox(120, 70)
Controls.SetSize(AddressTxtBox, 150, 40)
'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
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
nxtBtn = Controls.AddButton( "<" ,50,370)
bckBtn = Controls.AddButton( ">" ,500,370)
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
images[i] = ImageList.LoadImage(SmallBasicImage[i])
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
images[i] = ImageList.LoadImage(SmallBasicImage[i])
GraphicsWindow.DrawResizedImage(images[i], 50, 50, 500, 300)
TextWindow.WriteLine( "Image Name:" + SmallBasicImage[i])
EndIf
EndIf
EndSub
Lesson 4.1: Playing with Shapes
Solution:
' 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)
Shapes.Move(stick, 174, 238)
GraphicsWindow.BrushColor = "Pink"
petals[1] = Shapes.AddEllipse(70, 55)
Shapes.Move( petals[1], 93, 115)
Shapes.Rotate( petals[1], 15)
petals[2] = Shapes.AddEllipse(70, 55)
Shapes.Move(petals[2], 148, 81)
Shapes.Rotate(petals[2], 105)
petals[3] = Shapes.AddEllipse(75, 55)
Shapes.Move( petals[3], 185, 135 )
Shapes.Rotate( petals[3], 200 )
petals[4] = Shapes.AddEllipse(75, 55)
Shapes.Move( petals[4], 135, 175)
Shapes.Rotate( petals[4], 90)
GraphicsWindow.BrushColor = "Yellow"
circ = Shapes.AddEllipse(25, 25)
Shapes.Move(circ, 162, 140)
GraphicsWindow.BrushColor = "Green"
For i = 1 To 2
leafs[i] = Shapes.AddEllipse(50, 25)
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"
leaf1 = Shapes.AddEllipse(50, 25)
Shapes.Move(leaf1, px + 20, py + 40)
leaf2 = Shapes.AddEllipse(50, 25)
Shapes.Move(leaf2, px + 115, py + 340)
GraphicsWindow.BrushColor = "Pink"
petal1 = Shapes.AddEllipse(65, 50)
Shapes.Move(petal1, px + 105, py + 30)
Shapes.Rotate(petal1, 15)
petal2 = Shapes.AddEllipse(65, 50)
Shapes.Move(petal2, px + 20, py + 230)
Shapes.Rotate(petal2, 105)
petal3=Shapes.AddEllipse(65, 50)
Shapes.Move(petal3, px + 105, py + 230)
Shapes.Rotate(petal3, 200)
petal4 = Shapes.AddEllipse(65, 50)
Shapes.Move(petal4, px + 20, py + 330)
Shapes.Rotate(petal4, 90)
GraphicsWindow.BrushColor = "Brown"
stik = Shapes.AddRectangle(5, 50)
Shapes.Move(stik, px + 40, py + 130)
GraphicsWindow.BrushColor = "Yellow"
circle = Shapes.AddEllipse(25, 25)
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"
Submitbtn = Controls.AddButton( "Submit" , 300, 390)
Controls.SetSize(Submitbtn, 70, 35)
end = Clock.ElapsedMilliseconds
start = Clock.ElapsedMilliseconds
blink = 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
' 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 = clickedButtonCaptionThen
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
Lesson 4.3: Collision Detection
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>= catcherXThen
gameScore = gameScore + 1
Shapes.SetText(scoreTextBox, "Score: " + gameScore)
appleY = gh + 20
EndIf
EndSub
Lesson 4.4: Advanced Games
' 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 = 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.Title = "Paddle Game"
GraphicsWindow.FontSize = 14
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
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
- By clicking Publish on the toolbar.
- By clicking Import and specifying the unique program ID.