1 final project super snake description in this assignment you will be
Search for question
Question
1
Final Project:
Super Snake
Description:
In this assignment, you will be tasked with refactoring and redesigning the Snake game in Chapter 17 to improve its structure, readability, and maintainability. The goal is to separate different functions into their own classes and apply design patterns where appropriate. You will also need to enhance the gameplay by introducing new features and challenges. You can work in groups of 4 people. Use everything you’ve learned so far to upgrade Snake to the next level!
Tasks:
**Task 1: Code Refactoring**
200 Points
- Review the existing Snake game codebase provided to you.
- Identify areas where code can be refactored to improve readability and reduce redundancy.
- Separate different functions into their own classes to increase modularity and maintainability.
- Refactor code with Refactoring techniques.
- Utilize the concepts from our lectures and previous assignments
**Task 2: Design Pattern Implementation** (Must choose 2):
100 Points
- Identify opportunities to apply design patterns within the codebase.
Some ideas:
- Implement the Strategy Pattern to separate audio-related functionality into the `Audio` and `AudioContext` classes.
- Implement the Builder Pattern to create different `Apple` types with different properties and effects on the player.
- Use the Decorator Pattern for Snake to apply power ups, harmful effects, and cool features.
** These are recommended design patterns; you may use any which are applicable. **
Refer to Design patterns lecture.
Mandatory:
Change up the design completely:
UI elements
Character models
Sound elements / music
Background
**Task 3: Gameplay Enhancements** (Must choose 4)
200 Points
Introduce randomness to assign scores to good apples and bad apples.
Power-Ups: Introduce power-up items that the snake can collect. These power-ups can have various effects, such as increasing the snake's speed, making it invulnerable for a short time, or allowing it to eat bad apples without penalties.
Obstacles: Add obstacles on the game board that the snake needs to avoid. Colliding with an obstacle could result in a penalty, such as a decrease in the snake's length or speed.
High Scores and Leaderboards: Implement a high score system that keeps track of the best scores achieved by players. Display the current game score as well while the game is running.
Sound Effects and Music: Enhance the audio experience with background music and different sound effects for various in-game actions.
Progressive Difficulty: Make the game progressively harder as the player advances, with faster apples spawning, more obstacles, or additional challenges. This keeps the game interesting for longer periods.
Game Over Screen: After a game over, show the player's final score and provide options to restart the game or return to the start screen.
If you have other ideas, run them by me first, but be creative. These features are just suggestions.
Your game needs to have a “wow” factor. This could include lots of extra features, how well designed (and fun) the game is, or just good old-‐fashioned polish—anything that will make your game really stand out!
**Submission Details**
If you encounter difficulties with any part of the assignment, document your efforts and any issues faced. The goal is not just to implement design patterns but also to learn from the challenges you encounter during the refactoring process. I do expect tangible improvements to the Snake Game that are more than just a few new classes. Try your best to improve this game according to the assignment’s requirements.
Final Report and Submission:
100 points
Thorough report of the changes you made, with proper formatting, images, a tutorial on the UI of the game and how to play the game.
Git logs as well