Modify the checkForMatches: method by checking if the center of the shape is inside the shape container's path instead of the shape's starting point.
Add a method, calculatePathCenter:, to the Shape class. This method calculates the centroid of the points in the path, which is the average of the path points' values.
When a match is found, the matched shape needs to be removed from the shape list. The app was crashing when the first shape in the list was the first to be removed from the list. I moved the code to remove the shape from the list to outside the for loop to prevent the crash.