/cpp-snake-mp

Primary LanguageMakefileCreative Commons Attribution Share Alike 4.0 InternationalCC-BY-SA-4.0

CPPND: Capstone Multiplayer Snake Game

This is the capstone project of the Udacity C++ Nanodegree Program. It is based on the Snake Game example code and has been extended to a multiplayer game via Sockets. Both snakes cannot intersect with each other and the goal is to eat as many food as possible.

The build folder is only included for convenience (built for Apple Silicon). To build the project, please use the commands as described.

Dependencies for Running Locally

Basic Build Instructions

  1. Clone this repo
  2. Make a build directory in the top level directory: mkdir build && cd build
  3. Compile: cmake .. && make
  4. Run it as host: ./SnakeGame
  5. Run it as client: ./SnakeGame IP_ADDRESS_OF_HOST

Known Caveats

  • Competing snake's position out of sync: This is because the game is not running on a server but on different machines. Each player only sends the input to the other player, and their machine is responsible for the game rendering. This is not a problem for the game itself but can confuse the player.

Rubrics covered

  • The project demonstrates an understanding of C++ functions and control structures.
  • The project accepts user input and processes the input. (command line arguments)
  • The project uses Object Oriented Programming techniques.
  • The project uses destructors appropriately.
  • Classes use appropriate access specifiers for class members.
  • Class constructors utilize member initialization lists.
  • Classes encapsulate behavior.
  • The project makes use of references in function declarations.
  • The project uses multithreading. (see Game::SetupSocket)

CC Attribution-ShareAlike 4.0 International

Shield: CC BY-SA 4.0

This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

CC BY-SA 4.0