-
Notifications
You must be signed in to change notification settings - Fork 0
Requirements Specification
Members: Samuel Charnock, Abir Razzak, Veenit Patel, Ryan Touchet (Group 6 Section 2)
Faculty Advisor: Dr. Filippos Vokolos, Ph. D.
The purpose of this document is to provide all requirements that are going to be used in the scope of the checkers project.
The scope will include everything that the developers will need to know in order to achieve all of the requirements specified here.
This document will provide all of the requirements of the project, which include functional and nonfunctional requirements. It will also specify other things such as use cases and diagrams. Key terms will be bolded and a glossary will be provided at the end to describe the terms.
Checkers at its core is a board game involving two players and a board in a battle of wits. Each player shares the board with each player getting 12 pieces, one set colored red, the other set colored black. The objective of the game is for each player to try to remove all of the opponent’s pieces off the board before himself/herself has his/her respective pieces off of the board. Whoever still has pieces of their respective color while the other does not is the winner. Details can be found here: [https://en.wikipedia.org/wiki/Draughts](https://en.wikipedia.org/wiki/Draughts)
The game is intended to be face to face, but for the purposes of this project, the face to face interaction with the board shall be different. Instead, the game is to be run on two entirely separate computers. A **server **shall be used to connect the two computers so that each player can interact with the board which now be digitized.
The main display of the computer shall be of the checkers board and the moves of each player shall have a corresponding graphical interface.
The server is intended to be updated frequently with each player’s interactions and display to both computers the exact same information. An initial start or quit menu shall proceed the game in order to keep the interaction between the players streamlined.
The server shall be able to do the following:
-
Be a host for two players to interact over the internet.
-
Run the game from start to finish
-
Update the moves and interactions of each player and specify other data of the system to the users.
This project should be able to be used by anyone, as long as the total amount of players per game is no more or no less than two.
The following specifies the priorities of the requirements that shall be laid out further into the document. All requirements shall be labeled as one of the three types of priorities that are listed below.
Requirements that are labeled in this category are absolutely essential to the functionality of the project and shall be fully implemented. They shall be tested and verified that they are in fact fully completed.
Requirements that are labeled in this category are not required for the final build. These requirements shall be added if time permits, and is the job of the developers to ensure that these requirements can be easily implemented in the future.
Requirements that are labeled in this category are also not required for the final build. They shall not be considered in the design of the system. These shall only be incorporated if time permits and all Level 2 requirements are satisfied.
3.1.1 Each player should be able to move their respective pieces according to the rules of checkers. Priority One
3.1.2 Pieces should only be able to move into spaces that are possible. Priority One
3.1.3 **Men** shall be able to jump multiple spaces if opposing pieces are in place to allow for jumping. Priority One
3.1.4 If one of the men reaches the side of the board opposite their player, it shall be replaced with a **King **in the same location. Priority One.
3.2.1 Two players should be able to use a server to connect and play the game together. Priority One.
3.2.2 More than one game should be able to occur simultaneously. Priority Two.
3.2.3 A reset board shall be generated upon two players joining the server. Priority One.
3.2.4 A player shall be able to rejoin the game with no reset of the board if disconnected from the server. Priority 3.
3.2.5 Each player shall be able to communicate with the other over the server. Priority One.
3.3.1 Checker pieces shall be removed from the board when the opposing player uses the jumping mechanic over an opposing piece. Priority One.
3.3.2 If a piece reaches the opposing player’s end of the board, that piece shall become a King, and shall have the added movement of being able to move backwards. Priority One.
3.3.3 Every movement of a piece shall update the information about all items on the board. Priority One.
3.4.1 A game shall be started once both players opt in for playing the game. Priority One.
3.4.2 When both players start the game, a reset game shall begin. Priority One.
3.4.3 One of the two players should randomly be selected as the starting player. This will determine which player is assigned which color as well as which player shall go first. Priority One
3.4.4 Once a game has finished and a player has won, the game should automatically reset and await further action from the users. Priority Two.
3.4.5 The game shall sequentially loop back and forth between each player in determining who’s turn it is. Priority One.
3.5.1 Should displays the user interface for the game. The user interface contains the board, chat box, and game information as well as a way to start and quit the game. Priority One.
3.5.2 Should take keyboard and mouse input from the user to interact with the board and chat. Priority One.
3.5.3 Should be able to communicate with the server to exchange information about the state of the game and exchange the chat messages. Priority One.
3.5.4 Users should be able to use the client without any information on the server. Priority Two.
3.5.5 Users should have somewhere on the main screen to see the rules of the game. Priority Two.
4.1.1 Both the client and server shall be developed using C#. The server shall be hosted on Amazon Web Services. Priority One.
4.1.2 The only inputs needed from the user are keyboard and mouse input. Priority One.
4.1.3 The system shall not be interrupted by undesirable environmental behaviors. Priority One.
4.1.4 The system shall be able to function at any time during the day. Priority One.
4.1.5 The system shall be easily modifiable if there are new requirements. Priority Two.
4.1.6 There shall be little to no **lag** in the performance of the system. Priority Three.
4.1.7 Highlighted cells and general user interaction shall have little to no delay. Priority Two.
4.1.8 This client shall be developed using Visual C# and shall be designed so that it can run on Windows and Linux platforms. Priority One.
4.1.9 The developers shall provide a set of steps that a user can easily follow to get to the game and connect to another player. Priority One.
4.2.1 The project shall be tracked according to a schedule. Priority One.
4.2.2 The entire project shall be completely done according to the requirements by August 27th 2019. Priority One.
5.1.1 The board shall display to each player in the form of a standard 8x8 checkers board with black and white spaces. Priority One.
5.1.2 At the start of the game 24 circular pieces shall display on top of the board display. Priority One.
5.1.3 Each piece shall be on the black colored spaces and ordered in the standardized manner. Priority One.
5.1.4 Whoever’s turn it is should have the ability to click on any of his/her pieces, which should then highlight all positions on the board that the selected pieces can legally move to. If the player clicks one of the highlighted positions, the piece shall then move to that space. Priority One.
5.1.5 If the move the player makes includes a jump, the opposing player’s piece(s) shall be removed from the board. Priority One.
5.1.6 If a player selected a piece, and then clicks on that same piece, the interface shall return to before the piece was selected in the first place. Priority One.
5.1.7 If the player selected a piece, and then clicks on a different piece that belongs to that player, the previous piece shall act as "deselected" and the new piece shall be selected, along with the highlighted spaces indicating the moves for the new piece. Priority One.
5.1.8 Any piece that has been converted into a King shall have a visual indication to both players that it is in fact a King. Priority One.
5.1.9 Any pieces removed from the board shall be displayed outside of the board in an orderly fashion according to their color. Priority Three.
5.1.10 To the side of the board should be a chat display, which shall display the communications between the players as well as the log of the moves by each player. Priority One.
5.1.11 Along the top of the board should be a letter corresponding to each column of the board, A through H. Along the left side of the board should be a number corresponding to each row of the board, 1-8. See Figure 1 below. Priority Two.
Figure 1: The layout of the board with a labeled grid
5.1.12 Directly below the chat display shall be another box where each player should be able to type his/her message to the other person. Once done editing they can press enter and it shall appear in the chat display. Priority One.
5.1.13 If the move a player makes includes a jump, and the same piece is able to make another move including a jump afterwards, the player shall be allowed to make that move immediately. Priority One.
5.2.1 The main screen should be what appears to each user upon starting the game. Priority One.
5.2.2 The main screen should have a start button that shall allow the player to start the game with a fresh board. Priority One.
5.2.3 The main screen should have a quit screen that exits the game entirely. Priority One.
5.2.4 The main screen should have a resume game button that shall allow the player to rejoin a game if he/she were disconnected from the game or the server. Priority Two.
5.2.5 The main screen should have a "How to Play" button that should list necessary instructions on how to play Checkers. Priority Two.
King - A man that reached the furthest row. Gains the ability to move backwards (towards player side) diagonally as well.
**Lag** - A slow response from the computer or server. It can be used to describe any computer that is responding slower than expected.
**Man** - The standard checkers piece that can only move forward (towards enemy side) diagonally. The collective whole is known as "**men**".
**Server** - a computer or computer program which manages access to a centralized resource or service in a network.
Checkers Wikipedia: https://en.wikipedia.org/wiki/Draughts
