Share via


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

  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:

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

  1. By clicking Publish on the toolbar.
  2. By clicking Import and specifying the unique program ID.