Pac-Man
First Place Winning Project
Overview
As part of the CS-107 EPFL introduction to programming course, I worked with a teammate to recreate the classic Pac-Man game in Java. We competed against approximately 300 teams and were proud to win first place.
This project helped me learn Java and object-oriented programming, along with other valuable skills, such as collaboration, problem-solving, and project management.
1st Place EPFL
Award
Development
Developing a Pac-Man Game
Collaboration
The project began with a base code repository that contained abstracted JavaFX functions, along with a document that outlined the initial code and steps to implement the base features.
My teammate and I worked together to delegate the work and add extensions to the game. We used Git for collaboration and created a Google doc to gather helpful resources and links.
Arcade-inspired Design Elements
Design
For the game's design, we opted to use custom assets that originated from the original game graphics. I added a unique feel to the game by incorporating an arcade-inspired design with small details like glow, retro arcade style, VHS lines, and a joystick that moves based on user input. These elements created an immersive and nostalgic gaming experience.
Technical Challenges and Innovations
Challenges
Several technical challenges arose during the project, including implementing the window stack-based system, creating a smooth camera that interpolates to its desired location, and re-adapting the sound system to our use.
Additionally, implementing the ghosts' AI was one of the most interesting and innovative aspects of the project, as it gave each ghost its own personality.
Key Elements and Additions
Features
The main features of the game included a player GUI, leaderboard, ghost algorithms, and a score/points system. In addition, we added several extensions to the game, such as glow, arcade elements, a bonus map, new ghosts and so much more. These additions made the game more engaging and enjoyable for players.
Conclusion
Learning and Growth
Reflexion
Overall, this project was a success that allowed me to learn a lot about programming and game development. It was an opportunity to push my limits with extensions, adding functionality, and designing elements that added to the gaming experience.
This project helped me improve my skills in Java, Git, collaboration, problem-solving, and project management. It was a challenging and rewarding experience that I will always remember.