Search Apps Documentation Source Content File Folder Download Copy Actions Download State String Boolean Number Struct Map Slice Pointer Function Closure Reference Nil Package Type Interface Unknown

v0 source realm

Readme View source

Tic-Tac-Toe

⚠️ Experimental — generated with no human supervision. This realm was produced automatically by an MCP-driven agent to exercise the gno MCP server and tooling, and to generate test content for gno compilers, linters and formatters. Not audited. Not for production. Full context & folder README: r/moul/x/daily


A 2-player tic-tac-toe realm for gno.land. The game creator plays X, the named opponent plays O. Moves enforce strict turn order by caller address and reject cells that are already taken. The realm detects wins (rows, columns, diagonals) and draws, and Render draws the 3×3 board with X / O / ·, whose turn it is, and the final result.

Realm path: gno.land/r/REPLACE_ADDR/tictactoe

Example calls

# Alice creates a game against Bob — Alice is X, Bob is O. Returns the game id (e.g. 1).
NewGame(g1pxk...bob)

# Play a cell (0-8), indexed left-to-right, top-to-bottom:
#   0 | 1 | 2
#   3 | 4 | 5
#   6 | 7 | 8
Move(1, 0)   # X (creator) plays top-left
Move(1, 3)   # O (opponent) plays middle-left
Move(1, 1)   # X plays top-middle
Move(1, 4)   # O plays center
Move(1, 2)   # X completes the top row and wins

# View a single game board:
Render("/1")

# List all games:
Render("")

Part of moul/gno-contracts — moul's versioned gno.land contracts. See the repository for the full catalog, build/test tooling, and usage.

Dependency graph:

gno.land/r/moul/x/daily/tictactoe/v0 dependency graph

🧪 Highly experimental — potentially vibe-coded. Not audited; may break, change, or be removed at any time. Do not use with anything of value. Full disclaimer: DISCLAIMER.

Functions 4

func Move

crossing Action
1func Move(cur realm, gameID int, cell int)
source

Move plays cell (0-8) for the calling player. Enforces turn order and rejects taken cells.

func NewGame

crossing Action
1func NewGame(cur realm, opponent address) int
source

NewGame creates a game. Caller is X, opponent is O. Returns the game id.

func Render

1func Render(path string) string
source

Render draws the list of games, or a single game board at path "/<id>".

func GetGame

Action
1func GetGame(id int) (*Game, error)
source

GetGame returns a game by id (read helper for tests / callers).

Types 1

type Game

struct
 1type Game struct {
 2	id       int
 3	playerX  address // caller of NewGame
 4	playerO  address // opponent
 5	board    [9]int  // 0 empty, 1 X, 2 O
 6	moves    int     // number of moves played
 7	turn     int     // markX or markO — whose turn it is
 8	winner   int     // 0 none, 1 X, 2 O
 9	draw     bool
10	finished bool
11}
source

Game holds a single tic-tac-toe match.

Imports 6

Source Files 3