Untitled diff

Created Diff never expires
4 removals
38 lines
5 additions
39 lines
Public Sub Flood(value As Int, x As Int, y As Int, grid As Grid)
Public Sub Fill(value As Int, x As Int, y As Int, grid As Grid)
Dim top = y As Int
Dim matrix(,) = grid.matrix As Int
Dim matrix(,) = grid.matrix As Int
If value = matrix(x, y) Then Return
If value = matrix(x, y) Then Return
'--------------------------------------------------------------
'--------------------------------------------------------------
stack.Clear
stack.Clear
Dim x1 As Int
Dim x1 As Int
Dim spanAbove, spanBelow As Boolean
Dim spanAbove, spanBelow As Boolean
'--------------------------------------------------------------
'--------------------------------------------------------------
stack.Add(Array As Int(x, y))
stack.Add(Array As Int(x, y))
'--------------------------------------------------------------
'--------------------------------------------------------------
Dim p() As Int
Dim p() As Int
Do While (stack.Size > 0)
Do While (stack.Size > 0)
p = stack.Get(stack.Size - 1)
p = stack.Get(stack.Size - 1)
x = p(0) : y = p(1) : stack.RemoveAt(stack.Size - 1)
x = p(0) : y = p(1) : stack.RemoveAt(stack.Size - 1)
'----------------------------------------------------------
'----------------------------------------------------------
x1 = x : Do While (x1 >= 0 And matrix(x1, y) == 0) : x1 = x1 - 1 : Loop
x1 = x : Do While (x1 >= 0 And matrix(x1, y) == 0) : x1 = x1 - 1 : Loop
'----------------------------------------------------------
'----------------------------------------------------------
x1 = x1 + 1 : spanAbove = False : spanBelow = False
x1 = x1 + 1 : spanAbove = False : spanBelow = False
'----------------------------------------------------------
'----------------------------------------------------------
Do While (x1 < grid.sizeX And matrix(x1, y) = 0)
Do While (x1 < grid.sizeX And matrix(x1, y) = 0)
matrix(x1, y) = value
matrix(x1, y) = value
'------------------------------------------------------
'------------------------------------------------------
If (spanAbove = False And y > 0 And matrix(x1, y - 1) = 0) Then
If (spanAbove = False And y > top And matrix(x1, y - 1) = 0) Then
spanAbove = True : stack.Add(Array As Int(x1, y - 1))
spanAbove = True : stack.Add(Array As Int(x1, y - 1))
Else If (spanAbove = True And y > 0 And matrix(x1, y - 1) > 0) Then
Else If (spanAbove = True And y > top And matrix(x1, y - 1) > 0) Then
spanAbove = False
spanAbove = False
End If
End If
'------------------------------------------------------
'------------------------------------------------------
If (spanBelow = False And y < grid.sizeY - 1 And matrix(x1, y + 1) = 0) Then
If (spanBelow = False And y < grid.sizeY - 1 And matrix(x1, y + 1) = 0) Then
spanBelow = True : stack.Add(Array As Int(x1, y + 1))
spanBelow = True : stack.Add(Array As Int(x1, y + 1))
Else If (spanBelow And y < grid.sizeY - 1 And matrix(x1, y + 1) > 0) Then
Else If (spanBelow And y < grid.sizeY - 1 And matrix(x1, y + 1) > 0) Then
spanBelow = False
spanBelow = False
End If
End If
'------------------------------------------------------
'------------------------------------------------------
x1 = x1 + 1
x1 = x1 + 1
Loop
Loop
Loop
Loop
End Sub
End Sub