Battleships

Role: Software Engineering and Management Student
Course: SFWR ENG 2AA4 : Software Design I – Introduction to Software Development
Team Size: 2
Project Term: March 2013

Requirements Summary:
Click Here

My Role:
I coded the back end logic. Some functionality that I worked on included:

  • Logic for automated (computer) opponent. This was done by implementing a stack. The stack starts empty, and each time the stack is found to be empty a random coordinate is placed on the stack to be hit. If a hit is made by the computer, the 4 adjacent squares to the most recently hit tile would be added to the stack. If a tile was already hit it would not be added to the stack.
  • Saving and loading of match files, so you can end a match in the middle of a match and have the option to play it the next time the game is run
  • Piece placement. This had the difficulty that pieces had to be restricted to be placed within the game board. The design decision was to place a restriction on where a piece would be placed so that the entire battleship is within the game board.
  • Tile hitting, and victory logic
  • Storing and accessing data for the high score
  • Scoring system algorithm

My partner’s role was mainly was to make the graphics and build most of the Java Swing interface. He also worked on the testing documentation and some other design documents. I played a major role in working at the interface of the display logic and game logic so that they work together. I worked on some of the Module Interface Specification (MIS) and Module Implementation Design (MID) documentation.

This project was meant for a group of 4-5. We were able to complete it as a pair given the same time.

Result:
Battleships Grade

Note that the due date was changed for the entire class, and the 5 marks that were lost was a bonus for submitting it on the original due date.

The executable file and documentation can be found here.

This was updated as part of a project at the Initial Learning Program (ILP) at Tata Consultancy Services (TCS) and the code can be found here.