Graded Homework 6

Functionality | Documentation | Design | Total
--- | --- | --- | ---
5 | 4 | 4.5 | 4.7

Hey @rileychapman and @ptitchener,

The game itself is awesome! I think you guys found the right module to work with for your animations. There are, however, a few things that need to be addressed.

#### MVC Pattern

I like your implementation of the MVC model, but I don't agree with all the components of it. In general, MVC interaction involves the model keeping track of all objects in your app, the controller updating the model, and the view displaying the objects in the model. The first paragraph of [the Wikipedia article](http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller) describes this interaction pretty well. 

<img src="http://upload.wikimedia.org/wikipedia/commons/thumb/a/a0/MVC-Process.svg/500px-MVC-Process.svg.png" width="50%" alt="Model-View-Controller interaction" title="MVC Interaction" />

In your case, you do a great job at identifying the objects in your app, adding them to model, and displaying them via your view component. You lack in making sure the controller is what updates the model. You give each object access to your app's model component, which violates the concept of MVC itself.

Feel free to reach out to me for clarification.

#### Code Readability

PyGame often makes it really hard to write clean (read: readable) code, hence there's more emphasis on documentation and high-level code structure. You have a lot of different components to your game that (IMO) should have been divided into different modules. You have one file that has ~1,000 lines of code, making it hard to follow along. :confused: I personally would have divided up into something like: models.py, view.py, controller.py, main.py. Doing this will also make it incredibly easy to avoid merge conflicts.

In addition, I think you have too many things going on in a single method. For example, in the `update` method of the `Guy` class, you should divide it up into smaller methods, like `check_collision`, `accelerate`, etc. There's too much going on in it as it is now, IMHO.

#### Others

- I've added some comments under the "Files Changed" tab, so look at it and feel free to ask me for clarification.
- There seems to be a bug with the movement of the enemies? The one on the second platform will get stuck against the wall and the others will bounce before it hits the wall or the edge of the platform. I don't remember this happening when you guys first showed me the game; was there a commit that never got pushed?

Overall, excellent work. You guys are definitely the closest I've seen to use PyGame as it was meant to be; I'm glad I got to play the game itself as well :smile: