It looks like your students have some really great ideas for games. The common issue I see in this code is not knowing what should go inside or outside the draw loop. You may want to do a short review lesson with your students, reminding them that anything that sets up the game, such as creating sprites, initializing variables, etc., should go outside the draw loop and anything that involves updating sprites, such as moving them with the counter pattern or checking for interactions, should go inside the draw loop.
I would also advise them to look at sample programs or projects that have similar behaviors to what they are looking for. For example, there plenty of games in the second half of the unit that “loop” sprites back to the other side of the screen once they either travel off screen or have an interaction with the player sprite.
We are working on a “bug report” sheet that might be helpful in getting students to reason a little more about the bugs that they are having.
For students who simply do not know how to implement a feature, you may want to refer them back to the problem solving process, in particular the “prepare” step. What are previous ways that this problem has been solved? Can they break this problem down into smaller parts? etc.
I’ll let you know when we have the bug report sheet, and please let us know how it goes with the students!