## Overview

The Block Game is a resource sharing game where two players try to maximize their earnings by complete valid sets of 3 blocks. Each game consists of 9 blocks, 3 squares, 3 triangles, and 3 circles. Each set of shapes comes in 3 colors, purple, red, and blue. Players play a series of `n` rounds and take turns picking blocks to create a valid set. A valid set consists of all the same shape, all the same color, or all different shapes and colors.

The current code for this project is in: `game/control_panel`, `game/game_flow`

But is being replaced by: `game/server/server.py`, `game/server/games/block_game.py`, `game/agents`, and `game/ui/block_game`

---

### Block Game

![Block Game](/img/block_game.png)

### Sets

Example of Valid Set

![Valid Set](/img/ValidSet.png)

Example of Invalid Set

![Invalid Set](/img/InvalidSet.png)

### Game Modes

In our lab, the block game had 3 game modes each with different submodes. These submodes are what types of communication which will occur between the players. All game modes except AI-AI can be played either virtually or physical setting.

- Human - Human

  Submodes:

  - Open Communication

  - No Communication

- More information [here](/games/block_game/HumanvsHuman)

- Human - AI

  Submodes:

  - Personal Touch

  - Strategy Communication

  - Strategy Communication and Personal Touch

  - No Communication

- More information [here](/games/block_game/HumanvsAI)

* AI - AI

  Submodes:

  - Strategy Communication

  - No Communication

- More information [here](/games/block_game/AIvsAI)

### GUI and Server

To read more on the inplementation of the GUI and Server go [here](/games/block_game/Framework)

---

## Implementations So Far

- Old GUI and Game Flow in `control_panel` and `game_flow`

---

## In Progress

- New GUI and Agents in `game/ui/block_game`, and `game/agents`

---

### To run full game from sawyer_ws

- `roslaunch robot_demo game_server.launch`
- `cd src/game/control_panel`
- `flutter run -d Linux`

### To run GUI from sawyer_ws

- `cd src/game/control_panel`
- `flutter run -d Linux`

---

### Further Reading
