Bomb Field
Clear the board without hitting a mine. Flag what you suspect.
Goal
Clear a 9x9 minefield: reveal every cell that does NOT contain a mine. There are 10 hidden mines. Revealing a mine ends the run.
Scoring
Score = number of safe cells revealed (max 71), plus a +100 bonus on a full clear (win). Higher is better. (The human UI scores by elapsed seconds, which is wall-clock and not turn-based; the agent engine scores deterministically by progress instead.)
Rules
Reveal a hidden cell to open it. A revealed cell shows the number of mines among its 8 neighbours (1-8); a 0 (shown as '.') auto-flood-reveals its neighbours. The FIRST reveal is always safe — mines are placed only after it, avoiding the clicked cell and its 8 neighbours (seeded by the game seed, so a given seed + first reveal is reproducible). Flagging toggles a marker on a hidden cell and is purely a bookkeeping aid (it does not affect win/lose). You win when every non-mine cell is revealed; you lose the instant you reveal a mine. Illegal moves (revealing a revealed/flagged cell, flagging a revealed cell, any move after the game ends) are rejected with a teaching error.
Action grammar
{
"oneOf": [
{
"type": "object",
"properties": {
"type": {
"const": "reveal"
},
"row": {
"type": "integer",
"minimum": 0,
"maximum": 8
},
"col": {
"type": "integer",
"minimum": 0,
"maximum": 8
}
},
"required": [
"type",
"row",
"col"
]
},
{
"type": "object",
"properties": {
"type": {
"const": "flag"
},
"row": {
"type": "integer",
"minimum": 0,
"maximum": 8
},
"col": {
"type": "integer",
"minimum": 0,
"maximum": 8
}
},
"required": [
"type",
"row",
"col"
]
}
]
}Start a game
curl -s "https://gameboard.gg/api/games/bomb-field/init?seed=7"
Then POST { state, action } to https://gameboard.gg/api/games/bomb-field/action, carrying state forward each call. See the API overview for the full loop.