'generates the computer colours/code for the game'
For i = 1 To 4
colourgenerator[i] = Math.GetRandomNumber(6)
TextWindow.Write(colourgenerator[i])
EndFor
For i = 1 To 4
backup[i] = colourgenerator[i]
EndFor
'clears the current and creates the main game textwindow when the new game button is clicked
Controls.ButtonClicked = ButtonClicked
Buttonclicked()
Sub Buttonclicked
ButtonClicked = Controls.LastClickedButton
'generates the circles for the colours to be filled in by the player'
x = 120
y = 10
While y < 750
While x < 350
GraphicsWindow.DrawEllipse(x, y, 50, 50)
x = x + 70
EndWhile
x = 120
y = y + 70
EndWhile
'generate the smaller circles for the black and white pegs'
x = 400
y = 10
While y < 750
While x < 450
GraphicsWindow.DrawEllipse(x, y, 20, 20)
x = x + 30
EndWhile
x = 400
y = y + 70
EndWhile
x = 400
y = 40
While y < 750
While x < 450
GraphicsWindow.DrawEllipse(x, y, 20, 20)
x = x + 30
EndWhile
x = 400
y = y + 70
EndWhile
x = 120
y = 10
index = 1
'generates the buttons which the fills the circles with specified colours when clicked, then it stores the colour clicked into an array'
GraphicsWindow.BrushColor = "Red"
Red = Controls.AddButton("Red", 50, 80)
GraphicsWindow.BrushColor = "Blue"
blue = Controls.AddButton("Blue", 50, 140)
GraphicsWindow.BrushColor = "Yellow"
yellow = Controls.AddButton("Yellow", 50, 200)
GraphicsWindow.BrushColor = "#30FA11"
green = Controls.AddButton("Green", 50, 260)
GraphicsWindow.BrushColor = "#FF9933"
orange = Controls.AddButton("Orange", 50, 320)
GraphicsWindow.BrushColor = "#A505F5"
purple = Controls.AddButton("Purple", 50, 380)
EndIf
If buttonclicked = Red Then
GraphicsWindow.BrushColor = "Red"
GraphicsWindow.FillEllipse(x, y, 50, 50)
counter = counter + 1
If x < 320 Then
x = x + 70
ElseIf y < 700 Then
x = 120
y = y + 70
EndIf
If index < 5 Then
input[index] = 1
index = index + 1
EndIf
ElseIf buttonclicked = blue Then
GraphicsWindow.BrushColor = "Blue"
GraphicsWindow.FillEllipse(x, y, 50, 50)
if x < 320 Then
x = x + 70
ElseIf y < 700 Then
x = 120
y = y + 70
EndIf
If index < 5 Then
input[index] = 2
index = index + 1
EndIf
ElseIf buttonclicked = yellow Then
GraphicsWindow.BrushColor = "Yellow"
GraphicsWindow.FillEllipse(x, y, 50, 50)
if x < 320 Then
x = x + 70
ElseIf y < 700 Then
x = 120
y = y + 70
EndIf
If index < 5 Then
input[index] = 3
index = index + 1
EndIf
ElseIf buttonclicked = green Then
GraphicsWindow.BrushColor = "#30FA11"
GraphicsWindow.FillEllipse(x, y, 50, 50)
if x < 320 Then
x = x + 70
ElseIf y < 700 Then
x = 120
y = y + 70
EndIf
If index < 5 Then
input[index] = 4
index = index + 1
Endif
ElseIf buttonclicked = orange Then
GraphicsWindow.BrushColor = "#FF9933"
GraphicsWindow.FillEllipse(x, y, 50, 50)
If x < 320 Then
x = x + 70
ElseIf y < 700 Then
x = 120
y = y + 70
EndIf
If index < 5 Then
input[index] = 5
index = index + 1
Endif
ElseIf buttonclicked = purple Then
GraphicsWindow.BrushColor = "#A505F5"
GraphicsWindow.FillEllipse(x, y, 50, 50)
If x < 320 Then
x = x + 70
ElseIf y < 700 Then
x = 120
y = y + 70
EndIf
If index < 5 Then
input[index] = 6
index = index + 1
Endif
EndIf
For index1 = 1 To 4
input1[index1] = input[index]
EndFor
'compares the four colours clicked with the computer genearted colour, black pegs is then added for every colour that is in the correct position and colour'
If index = 5 Then
TextWindow.Clear()
For i = 1 To 4
For index = 1 To 4
If input[index] = colourgenerator[i] Then
If index = i Then
blackpeg = blackpeg + 1
colourgenerator[i] = "null"
input[index] = "null1"
Endif
Endif
EndFor
EndFor
For i = 1 to 4
For index = 1 to 4
If input[index] = colourgenerator[i] Then
whitepeg = whitepeg + 1
colourgenerator[i] = "null"
input[index] = "null1"
EndIf
EndFor
EndFor
switch = 1
For i = 1 To 4
colourgenerator[i] = backup[i]
EndFor
For index = i To 4
input[index] = input1[index1]
EndFor
index = 1
ElseIf blackpeg = 4 Then
DrawFeedback()
TextWindow.Clear()
TextWindow.WriteLine("You Win!!! You did it in " + try + " guesses")
EndIf
EndIf
EndSub
Sub DrawFeedback
Stack.PushValue("local", x)
Stack.PushValue("local", y)
Stack.PushValue("local", blackpeg)
Stack.PushValue("local", whitepeg)
x = 400
y = y - 70
GraphicsWindow.BrushColor = "Black"
While 0 < blackpeg
GraphicsWindow.FillEllipse(x, y, 20, 20)
GraphicsWindow.DrawEllipse(x, y, 20, 20)
x = x + 30
If 430 < x Then
x = 400
y = y + 30
EndIf
blackpeg = blackpeg - 1
EndWhile
GraphicsWindow.BrushColor = "White"
While 0 < whitepeg
GraphicsWindow.FillEllipse(x, y, 20, 20)
GraphicsWindow.DrawEllipse(x, y, 20, 20)
x = x + 30
If 430 < x Then
x = 400
y = y + 30
EndIf
whitepeg = whitepeg - 1
EndWhile
whitepeg = Stack.PopValue("local")
blackpeg = Stack.PopValue("local")
y = Stack.PopValue("local")
x = Stack.PopValue("local")
EndSub