Time for action — checking neighboring horizontal tiles

We will create two methods for checking the neighboring tiles, as we need to do this for each axis (x and y), separately.

  1. Inside the game class, add a new method called CheckGemsX. As parameters, it will take the column and row, the gem type, and a mark flag.
    Method CheckGemsX:Int(column:Int, row:Int, gem:Int, mark:Bool = False)
    
  2. First, add a local found variable of the type INT. It will be set once we find similar gems.
    Local found:Int = 0
    
  3. Initialize the slot.
    tileMap[column-1][row-1] = -1
    
  4. Check if column is greater than 1. It means there must be gems on the left.
    If column > 1 Then
    
  5. Start a FOR loop, stepping backwards from column -1 to the first gem on the left.
    For Local c:Int = (column-1) To 1 Step -1
    
  6. If the gem found isn't the same, exit the FOR loop.
    If tileMap[c-1][row-1] <> gem Then Exit
    
  7. If the mark flag was set, fill the value 99 into the tile slot. It is used if we want to mark tiles to delete them later.
    If mark Then
    tileMap[c-1][row-1] = 99
    Else
    
  8. If the flag isn't set, just count the gems by raising found by 1.
    found += 1
    Endif
    
  9. Close the FOR loop, and the first IF check.
    Next
    Endif
    
  10. Now to the gems on the right. First, check if column isn't greater than the field columns of the game class.
    If column < columns Then
    
  11. Next start a FOR loop, ranging from column+1 to columns
    For Local c:Int = (column+1) To columns
    
  12. Check if the found gem is the same. If not, exit the FOR loop.
    If tileMap[c-1][row-1] <> gem Then Exit
    
  13. If the mark flag is set, fill the value 99 into the slot.
    If mark Then
    tileMap[c-1][row-1] = 99
    Else
    
  14. If not, raise found by 1.
    found += 1
    Endif
    
  15. Close the FOR loop and the IF check.
    Next
    Endif
    
  16. If the mark flag was set, fill the value 99 into the slot of the actual gem, too. You want to delete it also, not only the neighboring tiles.
    If mark Then
    tileMap[column-1][row-1] = 99
    Else
    
  17. If not, restore the slot with the gem parameter.
    tileMap[column-1][row-1] = gem
    Endif
    
  18. Return the number of gems we have found, and then close the method.
    Return found
    End
    
..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
18.189.188.238