CMU 15-112: Fundamentals of Programming and Computer Science
Collab 6 (Due Monday 12-Oct at 8pm ET (Pittsburgh-time))
...but submit at the end of your collab section!




  1. Super Snake!
    You made Super Pong in week 4, and now it's time to make Super Snake! You and your partner(s) are going to add some neat new features to our Snake demo in the notes. The group will briefly discuss the following required features, a few of the extra features, and just a bit about how one might implement them. Then, you and your partner(s) will try to add as many of these features as possible, starting from the Snake demo in the course notes.

    This collab is open-ended and we want you to be creative! You will all implement all of the Required Features below, though you'll note we aren't very specific about the details. We know creativity is hard, but we think you can do some cool stuff here.

    Required Features:
    1. Include a simple splash page (i.e. a title screen before you start the game)
    2. Pressing a digit toggles a creative mode with the Extra Features you add. Your features should all work together well!
    3. Each time you toggle creative mode, a 'toast' message appears indicating the game's current mode, and stays visible for 3 seconds (hint: use time.time())
    4. Add a score counter of some sort. Count goes up when food is eaten.
    5. Identify the head of the snake by using a different color, adding a very simple face, etc.
    6. Make some sort of other graphical improvement (like a different food or background or snake appearance) to your snake demo so that it doesn't look like everyone else's! Have fun (but don't spend all your time here!)

    Then you should implement a few of the features from the Extra Features list, and perhaps some that we haven't thought of. It's up to you whether you want to start with a bunch of easy features or do one or two of the really hard ones. Your code must demonstrate effort, however, and your TA should be able to see you have collaborated well. Creativity will be rewarded!


    Extra Features: Now try to implement a fun combination of some of these features and your own!
    1. Wraparound (snake wraps around instead of losing on wall collision)
    2. Immortality (snake doesn't die if eats self)
    3. Poison (like food, only it kills the snake)
    4. Portals (has two parts, as the snake enters the first portal it then exits the second portal)
    5. Difficulty speeds up (timerFired decreases) every time food is acquired
    6. Game starts with 3 lives, game over only happens when none left
    7. Give the snake a face that rotates to indicate direction
    8. Add moving obstacles
    9. Snake shrinks if it hasn't eaten in X steps
    10. Food shrinks and gets worth less for every step it isn't picked up
    11. Add power ups (i.e. extra life, speed decrease, multiple foods)
    12. Add a high score board (CHALLENGE: Can you make one that saves/loads a text file when you restart the game?)
    13. CHALLENGE: "Over-the-shoulder" mode: the head of the snake always stays in the middle of the grid, and the tail and the food move with wraparound to make it an infinite world.
    14. EXTRA CHALLENGE: "Over-the-shoulder" mode WITH WORLD ROTATION: The snake is centered like before, but the snake always faces up (north)! So, when you turn the snake, the world (grid, food, and the rest of the snake) should rotate 90 degrees!
    15. EXTRA CHALLENGING: Make an AI/Autoplayer
    16. EXTRA CHALLENGING: Two-Player Mode
    17. Can you come up with something new...?


  2. Discuss solutons to Super Snake
    TAs will lead a discussion where all teams show what features they implemented, and very briefly how they were implemented. As before, your TA will be individually grading you based on demonstrated effort and good collaboration, so participate! (As always, this means you and your partner(s) should all speak and contribute.)



  3. Video Discussion: Facebook and Instagram
    Watch this video on Facebook and Instagram's recent decisions and discuss! This is open-ended, though here are some starter questions if you need them:
    1. What responsibility do tech companies have to eliminate bias?
    2. What responsibility do tech companies have to reduce the spread of misleading information?
    3. Do you agree or disagree with the decisions made by Facebook and Instagram (and others)?
    4. How much or little do you believe these companies influence societal beliefs and behaviors?

    Note: You are graded on attentiveness, participation, and courtesy. (Please pay attention and be respectful.)





  4. SUBMIT TO AUTOLAB!
    Note the submission deadline at the top of the page. You must submit to autolab by that time. The time is in ET (Pittsburgh time) and is an absolutely final deadline. You should submit immediately after your group is finished! No work will be accepted after the deadline (unless of course your collab meeting is after the deadline).

    Submit collab6.py to Autolab (Note: this is a python file, not a zip file!).
    All you need to submit in collab6.py is your Super Snake game, with as many features as you were able to add! Remember to leave a comment at the top of your file explaining what features you added.

    (While we hope your file runs, you won't receive a zero on the collab if it doesn't, as long as we can see your genuine effort in the code.) You are graded on demonstrated effort during the collab session, and your submission should provide extra evidence of that effort. There is no autograder.

    If you realize you messed up your submission (i.e. submitted a blank file, zip file, etc) you can submit up to 5 times, but you really ought not need to.

    Remember, no late work is accepted! Uploading to autolab takes a few minutes at most. Do not wait until the deadline and risk getting a zero.