Kickshot

KickShot is an app based on the board game of the same name by Aziz Makhani. The game is split into three levels of play, aptly named Level 1, Level 2, and Level 3. Each successive level introduces additional complexity to the game. Level 1 was completed during the Fall 2014 semester. This semester's team has been tasked with implementing Level 2.

Background
KickShot is a soccer board game conceptualized by Aziz Makhani, a local soccer referee. KickShot includes three levels of play and the iteration being implemented this semester is Level 2. Level 2 builds off Level 1 by adding cards, new rules, several ways to score a goal, and two halves of play. Eventually, Level 3 will add even more cards, along with additional rules and a difficult AI opponent.

Deliverables
This semester's team aims to deliver a finished Level 2 version of KickShot that includes:
 * 7 playable cards
 * New Rules that provide more options for offense and defense
 * Several ways to score
 * Shooting left or right, which can be blocked with the correct card
 * Passing into a goal
 * Direct free kicking into a goal
 * 2 halves of play that end when the players run out of cards to play

KickShot Warm-Up
These rules were taken from the previous KickShot wiki: http://mindworks.shoutwiki.com/wiki/KickShot_for_Android
 * Cards will be added for game play.
 * There are 6 type of cards on either Home or Away side, and only one type of the Referee card will be added in WarmUp.
 * No card need to be used for kick off.
 * Without using a card will skip the current turn.
 * Draw a new card after using a card.
 * Only one chance each turn to trade a card if no card is usable.
 * Traded card can be used immediately, if it is usable.
 * Different card has different rules

Pass
 * 17 total pass cards on either Home/Away side.
 * Only used in Offence Phase.
 * Roll 2 dices, advance ball based on the high die.
 * Ball will turn over if roll 1 on either dice.
 * Goal if ball advance to the end of opponent's zone without rolling 1 on either dice.

GoalShot
 * 5 Left Goal Shot and 5 Right Goal Shot on either Home/Away Side.
 * Only used in Offence Phase.
 * Roll 2 dices, advance ball based on the sum of two dies.
 * Ball will turn over if ball doesn't reach the end of opponent's zone.
 * Opponent must use the same direction Goal Block to block the ball, otherwise goal!
 * Draw one Referee Card if use Goal Shot and reach the end of opponent's zone.

Intercept
 * 5 Intercept cards on either Home/Away Side.
 * Only used in Defence Phase.
 * Roll 2 dices, succeed to intercept（turn the ball over) if no dice roll of 1 on either die.

GoalBlock Direct Free Kick
 * 5 Left Goal Block and 5 Right Goal Block on either Home/Away Side.
 * Only used in Defence Phase.
 * Block the ball immediately if opponent use Goal Shot and reach the end of zone.
 * Must use the same direction Goal Block to block the ball, otherwise goal!
 * After block, roll two dices, advance the ball out based on the sum of two dies. Ball will turn over if rolling 1 on either dice.
 * 5 Direct Free Kick cards, which are the only Referee Cards for WarmUp.
 * Can be used either in Offence or Defence Phase.
 * The same effect as Pass if use in Offence Phase.
 * The same effect as Intercept if use in Defence Phase.

Specifications
KickShot is currently being implemented in the Panda.js game engine so it can be played in a web browser. This allows it to be cross platform.

Challenges
This semester's team chose to roll back last semester's changes in favor of writing clearer, or easily extensible code. Other considerations of implementing the board game include:
 * Adding cards to the game
 * Data structure
 * Manage multiple decks of cards and hands
 * Graphics and animations
 * Drawing cards
 * Playing cards
 * Viewing cards in hand
 * New set of rules
 * Redesign turns
 * Able to pick a card and play it
 * Cards have unique rules
 * Roll-offs between players
 * Goal scoring attempts
 * Goal blocking attempts
 * Intercept attempts
 * Pass attempts
 * Rule enforcement
 * Cards can only be used a appropriate times
 * Artificial Intelligence
 * Needs to calculate possible moves
 * Better AI will compare moves and choose the best one.

Project Learning
Over the course of the semester, our team has learned more about the Panda.js engine we are using for development, javascript, and control flow.

Documents Archive
Current work can be viewed on Github here: https://github.com/RedCardDev/KickShotLevelTwo