Battleship

A modern spin on a classic game

A simple turn-based game of war. Place up to 6 ships on a 9x10 grid and try to sink your opponent's ships before they sink yours.

I worked on this project in a Team of 5. I took on the responsibilities of a team lead, which involved keeping the team on track, prioritizing features, and working on the most complex parts of the project.

Other team members lacked some experience with JavaScript, which made this project harder.

This project was done as part of EECS 448 class at the University of Kansas. One of the goals of the project was to write readable code with sufficient documentation for another team of 5 students to be able to pick up our game and add additional features.

While a traditional Battleship game would require some sort of multiplayer support to coordinate the game state between two players, we chose a simpler, and ultimately more intimate approach. Two players are supposed to open the game on separate computers. When any player makes a move, they are supposed to ask the opposite if it was a hit or miss and press the corresponding button in the game when promoted.

Essentially, the state of the game is synchronized through verbal communication between the players, which is intended to make the game feel more personal and meaningful.

Screenshots

Ship Placement
Game Boards

Online demo

Try out the live version

Technologies used

Since there was a varying level of experience among the team members, we decided not to use any fancy framework. Instead, I wrote a tiny MVC library modeled after Backbone.js's views.

Documentation

There is autogenerated documentation based on JsDoc comments and extensive deployment instructions.

Things learned

This projected challenged my meager leadership skills, requiring me to relate to team members to find a way to motivate them and to find a task suitable for their skill level. It also required me to deal with cases when motivation of others didn't match my own or expectations about the scope of the project mismatched.