4.31: Converting from Pixel Coordinates to Box Coordinates
- Page ID
def getBoxAtPixel(x, y): for boxx in range(BOARDWIDTH): for boxy in range(BOARDHEIGHT): left, top = leftTopCoordsOfBox(boxx, boxy) boxRect = pygame.Rect(left, top, BOXSIZE, BOXSIZE) if boxRect.collidepoint(x, y): return (boxx, boxy) return (None, None)
We will also need a function to convert from pixel coordinates (which the mouse clicks and mouse movement events use) to box coordinates (so we can find out over which box the mouse event happened). Rect objects have a
collidepoint() method that you can pass X and Y coordinates too and it will return
True if the coordinates are inside (that is, collide with) the Rect object’s area.
In order to find which box the mouse coordinates are over, we will go through each box’s coordinates and call the
collidepoint() method on a Rect object with those coordinates. When
True, we know we have found the box that was clicked on or moved over and will return the box coordinates. If none of them return
True, then the
getBoxAtPixel() function will return the value
(None, None). This tuple is returned instead of simply returning
None because the caller of
getBoxAtPixel() is expecting a tuple of two values to be returned.