First of all, you should have a way to store the information about the neighbours of each sprite onto the sprite itself. For example, each sprite should have 4 booleans (TopLeft, TopRight, BottomLeft, BottomRight), set to true if a sprite is attached at that position, and set to false otherwise.
Then you coud implement some sort of flood fill algorithm that, starting from the center of the shape, navigates to all sprites in a predefined and fixed order. Each time you visit a sprite, you store its neighbours on some sort of object (even a string). You then have a "code" that represents the shape you have on screen.
For example, for your first shape, you start from the top-left sprite and proceed in clockwise order. The first sprite has only a neighbour on BottomRight, so you store something like "0001". The following sprite has only a neighbout on BottomLeft, so you store "0010" and so on. The shape will then have code "0001 0010 1000 0100"
You could then store the codes for your 3 shapes, and check if the code of the player's shape matches one of those.
This is only a rough idea, but maybe it can help you.