Sample of the Week

This week's featured sample of the week comes from mcleod_ideafix.  This is a fun little point and shoot game, involving the Turtle in a clever way.

 'Point-and-shoot   
'(C)1989 McLeod/IdeaFix. https://www.zxprojects.com   
  
'Target size   
TargetSize=30   
winner=0   
wanttoplay=1   
  
'A vector-screen style window   
GraphicsWindow.BackgroundColor="Black"  
GraphicsWindow.PenColor="Green"  
GraphicsWindow.Clear()   
  
Game()   
  
Sub Game   
    While (wanttoplay=1)   
        GetRnd()   
        DrawTarget()   
        Turtle.PenUp()   
           
        'Game loop   
        While (winner=0)   
            Shoot()   
        EndWhile   
           
        winner=0   
        TextWindow.Write("Another game? (y/n) ")   
        answ = TextWindow.Read()   
        If (Text.StartsWith(Text.ConvertToLowerCase(answ),"n")) Then  
            wanttoplay=0   
        Else  
            GraphicsWindow.Clear()   
            Turtle.PenDown()   
            GraphicsWindow.PenColor="Green"  
        EndIf   
    EndWhile   
EndSub   
  
Sub Shoot   
    TextWindow.Write("Angle? ")   
    ang=TextWindow.ReadNumber()   
    TextWindow.Write("Distance? ")   
    dist=TextWindow.ReadNumber()   
  
    Turtle.Turn(ang)   
    Turtle.Move(dist)   
    Turtle.Turn(-ang)   
       
    xs=dist*Math.Cos(Math.GetRadians(ang))   
    ys=dist*Math.Sin(Math.GetRadians(ang))   
       
    If (xs>=xmin And xs<=xmax And ys>=ymin And ys<=ymax) Then  
        Sound.PlayChimes()   
        Turtle.Speed=100   
        Turtle.Move(-15)   
        Turtle.PenDown()   
        'The boom! visual effect   
        For n=1 To 36   
            GraphicsWindow.PenColor=GraphicsWindow.GetRandomColor()   
            Turtle.Move(30)   
            Turtle.Turn(150)   
        EndFor   
        Turtle.PenUp()   
        Turtle.Move(15)   
        Turtle.Turn(ang)   
        Turtle.Move(-dist)   
        Turtle.Turn(-ang)           
        Turtle.Hide()        
        TextWindow.WriteLine("Target cleared!! You WIN")   
        winner=1   
    Else  
        TextWindow.Write("Target failed!! Try again (press RETURN)")   
        TextWindow.Read()   
        Turtle.Speed=100   
        Turtle.Turn(ang)   
        Turtle.Move(-dist)   
        Turtle.Turn(-ang)   
        Turtle.Speed=7   
        winner=0   
    EndIf   
EndSub   
  
Sub GetRnd   
    'These variables should store the current Height and Width of 
    'GraphicsWindow, but it seems not to work   
    he=480   
    wi=640   
       
    If (he < wi) Then  
        distance=40+Math.GetRandomNumber(he/2-TargetSize-40)   
    Else  
        distance=40+Math.GetRandomNumber(wi/2-TargetSize-40)   
    EndIf   
    angle=Math.GetRandomNumber(360)   
       
    xmin=distance*Math.Cos(Math.GetRadians(angle))   
    ymin=distance*Math.Sin(Math.GetRadians(angle))   
    xmax=xmin+TargetSize   
    ymax=ymin+TargetSize   
EndSub   
  
Sub DrawTarget   
    Turtle.Speed=100       
    Turtle.PenUp()   
    Turtle.Turn(angle)   
    Turtle.Move(distance)   
    Turtle.Turn(-angle)   
    Turtle.PenDown()   
    For n=1 To 4   
        Turtle.Move(TargetSize)   
        Turtle.TurnRight()   
    EndFor   
    Turtle.PenUp()   
    Turtle.Turn(angle)   
    Turtle.Move(-distance)   
    Turtle.Turn(-angle)   
    Turtle.PenDown()   
    Turtle.Speed=7   
EndSub

And here's the screenshot.

Do you want your samples to be featured here?  Post them in our forums and we'll pick one each week.