'================================
'Draw Board
'================================
Sub DrawBoard
' set the screen size
GraphicsWindow.Width = 480
GraphicsWindow.Height = 320
' set the background; do it by drawing a big rectangle because
' GraphicsWindow.GetPixel on a background set with GraphicsWindow.BackgroundColor
' it will not return the correct color
GraphicsWindow.PenWidth = 2
GraphicsWindow.PenColor = "black"
x=20
y=60
dia = 40
For col = 1 To 7
For row = 1 To 6
GraphicsWindow.DrawEllipse(x+dia*(col-1),y+dia*(row-1),40,40)
cell[col][row] = 0
EndFor
EndFor
EndSub
'================================
'Draw Title
'================================
Sub DrawTitle
GraphicsWindow.BrushColor = "DarkGreen"
GraphicsWindow.FontItalic = "False"
GraphicsWindow.FontName = "Comic Sans MS"
GraphicsWindow.FontSize = 20
GraphicsWindow.DrawText(330, 20, "Connect Four")
'============================
'Update Player
'============================
Sub Update_Player
If player = 1 then
GraphicsWindow.BrushColor = "LightBlue"
GraphicsWindow.DrawText(330, 250, "Turn: Player 2")
GraphicsWindow.BrushColor = "Red"
GraphicsWindow.DrawText(330, 250, "Turn: Player 1")
ElseIf player = 2 then
GraphicsWindow.BrushColor = "LightBlue"
GraphicsWindow.DrawText(330, 250, "Turn: Player 1")
GraphicsWindow.BrushColor = "Black"
GraphicsWindow.DrawText(330, 250, "Turn: Player 2")
EndIf
endSub
'============================
'Check for Winner
'============================
Sub check_for_winner
' move a 4x4 map across the board and sum the rows and columns
' looking for 4 or an 8, depending on the player
' test for horizontal winner
For origin_column = 1 to 4
For origin_row = 1 to 3
For row = origin_row to origin_row + 4
For column = origin_column to origin_column + 4
if player = 1 AND cell[column][row] = 1 then
sum = sum + cell[column][row]
endIf
if player = 2 AND cell[column][row] = 2 then
sum = sum + cell[column][row]
endIf
endFor
if sum = player * 4 then
winner = 1
GraphicsWindow.DrawText(350, 220, "Winner")
endIf
sum = 0
endFor
endFor
endFor
' test for vertical winner
For origin_column = 1 to 4
For origin_row = 1 to 3
For column = origin_column to origin_column + 4
For row = origin_row to origin_row + 4
if player = 1 AND cell[column][row] = 1 then
sum = sum + cell[column][row]
endIf
if player = 2 AND cell[column][row] = 2 then
sum = sum + cell[column][row]
endIf
endFor
if sum = player * 4 then
winner = 1
GraphicsWindow.DrawText(350, 220, "Winner")
endIf
sum = 0
endFor
endFor
endFor
' test for diagonal downhill winner
For origin_column = 1 to 4
For origin_row = 1 to 3
For i = 0 to 3
if player = 1 AND cell[origin_column+i][origin_row+i] = 1 then
sum = sum + 1
endIf
if player = 2 AND cell[origin_column+i][origin_row+i] = 2 then
sum = sum + 2
endIf
endFor
if sum = player * 4 then
winner = 1
GraphicsWindow.DrawText(350, 220, "Winner")
endIf
sum = 0
endFor
endFor
if winner = 1 then
GraphicsWindow.DrawText(350, 220, "Winner")
endif
' test for diagonal uphill winner
For origin_column = 1 to 4
For origin_row = 1 to 3
if player = 1 and cell[origin_column][origin_row+3] = 1 Then
sum = sum + 1
endif
if player = 1 And cell[origin_column+1][origin_row+2] = 1 then
sum = sum + 1
EndIf
If player = 1 And cell[origin_column+2][origin_row+1] = 1 Then
sum = sum + 1
EndIf
If player = 1 And cell[origin_column+3][origin_row] = 1 Then
sum = sum + 1
Endif
if player = 2 and cell[origin_column][origin_row+3] = 2 Then
sum = sum + 2
endif
if player = 2 And cell[origin_column+1][origin_row+2] = 2 then
sum = sum + 2
EndIf
If player = 2 And cell[origin_column+2][origin_row+1] = 2 Then
sum = sum + 2
EndIf
If player = 2 And cell[origin_column+3][origin_row] = 2 Then
sum = sum + 2
Endif
TextWindow.WriteLine(sum)
If player = 1 and sum = 4 then
GraphicsWindow.DrawText(350, 205, "Player One Wins")
endIf
If player = 2 and sum = 8 then
GraphicsWindow.DrawText(350, 205, "Player Two Wins")
endIf
sum = 0
endFor
endFor
TextWindow.WriteLine("--")
endSub
'============================
'Show Matrix
'============================
Sub Show_Matrix
TextWindow.Show()
For row = 1 To 6
For col = 1 To 7
TextWindow.Write(cell[col][row]+"-")
EndFor
TextWindow.WriteLine("end")
EndFor