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

Specifications
There are several important requirements for KickShot. The most obvious requirements are that it be bug free and fun to play. Ideally, KiskShot should also be intuitive, requiring little explanation of mechanics. Lastly, KickShot must be cross platform. KickShot is currently being implemented in the Panda.js game engine so it can be cross platform. It can be played in a web browser, as well as on smartphones, tablets, or computers.

Challenges
This semester's team chose to roll back last semester's changes in favor of writing clearer, more 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
 * The player can only have so many cards at a time
 * 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

Here is a schedule for development:

Our poster from EXPO: