The MathWorks Blokus Duo Design Contest
Blokus Duo: The Final Chapter - All-Accelerator Design Contest at HEART 2015 at Boston, June 2015.

Rules of Blokus Duo

123456789abcde
1
2
3
4
5 S
6
7
8
9
a S
b
c
d
e
Fig.1: The Blokus Duo Board
Fig.2 Corner-to-corner Contact
Allowed Prohibited
o o
oo oo
ohh ohh
kohh kohh
ks ks
ksss ksss
kks kks

Board

Blokus Duo is played on a 14x14 board, as shown in Fig.1.

Tiles

Each player has 21 different-shaped tiles (Fig.3). Any rotations of tiles are allowed as Fig.4.

Move Restrictions

Basic rule:
To start, both players have a set of 21 tiles above. Tiles has color to identify the player (i.e., player A has green tiles and player B has red tiles.) Each player places one tile at one time.
First move:
Players must cover one of the cell marked "S" in Fig.1, at (5,5) or(a,a) on their first move.
Corner-to-corner contact:
Newly placed tile must have at least one corner-to-corner contact with a tile of the same color. Additionally, newly placed tile must NOT have edge-to-edge contact with any tile of the same color. With any tile of different color, edge-to-edge contact is allowed. For example, The right-hand-side situation in Fig.2 violates this rule between "k" tile and "o" tile in red.

Scores

Game continues until both pass, one player plays all tiles, or one player makes an invalid move. Then the players' scores are calculated.

Fig.3 Types of Player Tiles
Monomino: Domino: Trominoes: Tetrominodes:
a: b: c: d: e: f: g: h: i:
Pentominoes:
j: k: l: m: n: o: p: q: r: s: t: u:
Fig.4 Tile Rotation Patterns in "t" tile
0: 1: 2: 3: 4: 5: 6: 7:

Communication Protocol

123456789abcde
1
2
3
4
5
6
7
8
9
a
b
c
d
e
Fig.5: The four-letter code example: a4t3

FPGA boards must equip RS-232C (D-Sub 9pin) interface to communicate the host PC. The boards send their team ID (to start the match), their move in each turn, and receives the opponent's move in each turn via RS-232C link.

The four-letter code

The FPT2013 Competition Blokus Duo protocol will use a simple four-letter code to represent a move, between the FPGA boards and host PC.

The four-letter code represents [X, Y, Tile type code, Tile rotation pattern]. The "X and Y coordinate" is written in 1-9 and a-e (lower-case) as in Fig.1 and 5, to point the "center" of a tile to be placed, filled in gray in Fig.3. "Tile type code" indicates the player's tile in Fig.2, in a lower-case alphabet. The last letter stands for the tile's orientation, as in Fig.4.

Fig.5 is an example of the four-letter code "a4t3" alone on the board.

"0000" is a special four-letter code that means "pass."

Communication Protocol (Preliminary: version 0.0, Jan.10, 2014)

Important Note: This protocol is preliminary, still subject to change.

RS-232C link is driven at 115200 bps, no parity and 1 stop bit. All communications are done in ASCII characters, case sensitive.

Initialization:
Host sends "0" to both boards. FPGA boards should response "1XX" (XX is the pre-assigned team code) in 1 sec.
First player starts:
Host sends "25" or "2A" to the first player. "25" means that the first move must cover (5,5) and "2A" is about (a,a). The FPGA board must send the four-letter code in 1 sec.
Second player starts:
Host sends "35XXXX" or "3AXXXX" to request the second player's first move. The move must cover (5,5) for "35XXXX" and (a,a) for "3AXXXX". "XXXX" is the opponent's first move. The FPGA board must send the four-letter code in 1 sec.
Move:
Host sends "4XXXX" (XXXX is opponent's move in the four-letter code.) The FPGA board must send the four-letter code in 1 sec.
Pass:
If no possible move found within 1 sec after receiving "3XXXX", the FPGA board must send "0000" instead of a valid four-letter code. Exceeding 1 sec limit results in immediate loss of game.
Termination:
Host will send "9" at the end of a game. Code "0" follows if next match is scheduled.
  • Player can do a hard reset of the FPGA at this point, if declared to referee before the match starts.

The protocol / codes above are summarized in table 1.

Table 1: Communication code summary
Code Sent by Description Response Code
0 Host Code 0 initiates the match. Code 1
1XX Board Response to code 0.
XX: team code.
none
2X Host First move request for first player.
X: "5" to the player who covers (5,5) and "A" for (a,a).
Four-letter code
3XYYYY Host First move request for second player.
X: "5" to the player who covers (5,5) and "A" for (a,a).
YYYY: Opponent's move.
Four-letter code
4XXXX Host Move request.
XXXX: Opponent's move.
Four-letter code
9 Host Termination. Code "0" may follows to this code.none

Example of Board-Host-Board Communication

An example of the message sequences and resulting board situation are given and illustrated in Table 2 and Fig.6. The team code of board 1 and 2 are "AA" and "BB", respectively. The first player is board 1.

123456789abcde
11111 122
21 12
3 12
4 12
5 12
6 2
7 2
8 2
9 2
a 2
b
c
d
e
Fig.6: The board after message sequence #12 of Table 2.
Table 2: Example of message sequences between Board 1, 2 and Host
Seq # From: Host
To: Board 1
From: Board 1
To: Host
From: Host
To: Board 2
From: Board 2
To: Host
10 0
2 1AA 1BB
325
4 53e0
5 3A53e0
6 a8e0
74a8e0
8 21k7
9 421k7
10 94j0
11494j0
12 61a0
13 461a0
14 71b3
15471b3
(game continues)

If you find any problem in the protocol, please contact osana at eee.u-ryukyu.ac.jp .