I would use logic such as on overlapping/collecting penguin, set a global variable itemPeng=1
Then when you get to the final screen, you compare everything that is set to 1, if itemPeng=1 then make the object peng on the final screen visible.
This allows you to have the final screen setup in a way where all items are already displayed in the boxes where they should be but made visible/invisible depending on if you have collected it. The global variables allow you to steer clear of using global objects, persist behaviours and instance variables that can become unreliable when used for something like this.
If you want to get a bit more complex and you're displaying them in the order that they are collected in the game then it kind of becomes a real inventory system. Arrays are good for this, as one is collected you 'push' the item to your inventory array which is a list of items. When you reach the final layout, each object would be displayed according to their position, so the first space is 0,0 of the array, second space is item at 1,0, third space is item at 2,0 displayed in the order they were collected.
There are a few ways to handle this, just better not to use the method where you are pulling the actual object through the game with you, I would use global variables for a simple method, and an array for a more complex approach.