py-gambit

Simple Chess game written in Python using 'chess' library.

View the Project on GitHub reema-eilouti/py-gambit

Midterm-Project

test

Team Members:

Chess Board

- Summary of idea.
The chess board from our previous lab, but more enhanced, where you have more than two queens, you can have your horses/castles etc.

- What problem or pain point does it solve?
To visually know when my rocks are under attack and be prompted.

- Minimum Viable Product (MVP) definition.
A chess board, holding two teams rocks, you move both rocks, the program prompts you when you are under attack.

User Stories

Solo Mode

  1. As a player, I want solo play mode, so that I can play that game when no one is around.
    • Feature Tasks:
      • Player can choose what color to play with.
      • Player can restart the game if wanted.
    • Acceptance Tests:
      • Ensure the color the player choose is correct.
      • Ensure the game is re-started when the player choose to restart the game.

Multiplayer Mode

  1. As a player, I want a multiplayer mode, so that I can play with others.
    • Feature Tasks:
      • Players can choose to set a timer.
      • Players can choose to end the game with a draw or surrender.
    • Acceptance Tests:
      • Ensure the timer is working when players set it.
      • Ensure the game is ended when the players end the game.

Available Moves

  1. As a player, I want to see my available moves, so that I can move a piece of mine to attack directly a piece of other player pieces

    • Feature Tasks:
      • Player/s can require to highlight all pieces of his/her can move.
      • Player/s can require to see the highlighted pieces available moves.
    • Acceptance Tests:
      • Ensure the highlighted pieces have correct moves and available for each player when they are required.
      • Ensure the available moves for the highlighted pieces are shown in the screen correctly.

Under Attack

  1. As a player, I want a hint, upon request, to help know if a piece of mine is under attack or know its attacker pieces, so that I can move piece and avoid opponent’s potential attacks.
    • Feature Tasks:
      • Player/s can require to be notified of a piece of his/her is under attack.
      • Player/s can require to know attacker pieces of a piece of his/her.
    • Acceptance Tests:
      • Ensure that attackers, if exit, are shown for players when it is requested

Chess Pieces

  1. As a player, I want to be reminded with the possible valid moves, when I attempt an invalid move.
    • Feature Tasks:
      • Player/s is notified when he/she attempts an illegal move and gets all legal moves, at the second failed attempt.
    • Acceptance Tests:
      • Ensure that user get a warning message, and a list of the legal moves is shown for player when entering an illelgal move.

Wireframe

Domain Model

domain_model

Database

Cooperation Plan

Aseel -> Good analytical skills and conceptual thinking.

Hamzh -> Good debugging skills.

Hisham -> Good planning skills and strategic thinking.

Reema -> Good organizational skills.

Yahya -> Good trouble shooting skills and positive energy.

Having team members with good planning, strategic thinking and organizational skills will empower our team to have an efficient project plan especially in the early stages. Also, having members with good analytical skills will help us define our problem domain and to visualize the parts of the solution beforehand, and to provide the best strategy to handle the problem. Finally, having members in our team with good debugging and trouble shooting skills will help us solve errors/bugs in a timely manner and contribute to better optimize the solution.

We have room to improve ourselves in time and task management also in decision making relating to choosing the most convenient algorithm and in our testing skills.

We plan on scheduling stand up meetings daily to divide the tasks and responsibilities for each team member, review previous work and also discuss any challenges we face.

Conflict Plan

Firstly after meeting in a zoom call were all team members are present we will look for the branch with the issue and compare the last commit with the current work and decide on which parts to keep and which to remove.

We will have an internal meeting to discuss the matter in a diplomatic way ensuring the any misunderstandings are resolved with minimal damage. If we failed to solved internally, we’ll probably ask the instructional team for advice.

Communication is key when it comes to team work, we agreed on a strategy that ensures all team members are on the same page, by adding clear docstrings to each function and explaining it to the team by the responsible person.

During our daily meetings, we will make sure to communicate with members not contributing enough, and discuss possible working solution, as to overcome the issue.

If the conflict was not solved internally, we will escalate the conflict by reaching out the instructional team for help, support and advice.

Communication Plan

The agreed on time availability is between 9:00 am - 5:00 pm. Extra working hours will be determined upon discussion according to each member availability.

We will be holding our meetings one Zoom, and we’ll use Slack for quick updates and announcements.

Breaks will be taken upon agreements, without a fixed schedule.

We will have a team meeting, where will re-prioritize the tasks according to their impact on the final outcome, and cooperate to meet the deadline.

Working during weekends and after hours will be upon every team member’s approval.

Every decision the team will make, will be based on voting.

Every time a member has the right to share his thoughts, perspectives and ideas regarding any work done.

Work Plan

Based on the problem domain, time available, and strengths of each team member tasks will be identified and assigned. Progress and the task completion will be monitored using a project tool by the team leader, following the agreed on timeline.

We will be using GitHub projects for managing the project, the team leader will be responsible for making sure that each feature task is being delivered on time.

Git Process

All project’s file will be on GitHub, including the README file, the python files, Jupyter Notebooks.

Each team member will be set as an owner of the repository. Such that branches will be created according to features.

Each feature will have it’s own branch, pull request will be created after work is done.

Pull Requests will be reviewed daily in a session, and the team leader will be responsible for merging the approved PRs at the end of that session.