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

Package memory implements "Memory Match", a concentration game on a 4x4 grid of 8 emoji pairs. The board is shuffled ...

Readme View source

🧠 Memory Match

⚠️ 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 concentration game on a 4x4 grid of 8 emoji pairs. The board is shuffled deterministically from the current block height (there is no on-chain RNG), so every NewGame produces a reproducible layout for a given height. Flip tiles two at a time: matching pairs stay face-up, mismatches flip back on your next move. The realm tracks your move count and matched pairs and reports the solved state.

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

How to play

  • Flip(index int) — reveal the tile at index (0–15, row-major). The first reveal starts an attempt; the second completes a move. Matching faces stay up; a mismatch shows both tiles until your next Flip clears them.
  • NewGame() — reshuffle the board using the current block height as the seed.
  • Render(path) — renders the grid (❓ hidden, emoji revealed/matched), the move count, matched-pair count, and whether the game is solved.

Example calls

# start a fresh, height-seeded board
NewGame()

# reveal cell 0, then cell 5
Flip(0)
Flip(5)

# view the board
gnokey query vm/qrender --data "gno.land/r/REPLACE_ADDR/memory:"

Solve all 8 pairs to win; the render then shows your total move count.


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

🧪 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.

Overview

Package memory implements "Memory Match", a concentration game on a 4x4 grid of 8 emoji pairs. The board is shuffled deterministically from the current block height (no on-chain RNG exists), so a NewGame started at a given height always produces the same layout.

Functions 3

func Flip

crossing Action
1func Flip(cur realm, index int)
source

Flip reveals the tile at index (0..15).

Rules:

  • If two tiles are already showing from a previous unmatched attempt, this Flip first clears them (they turn back to hidden), then reveals the requested tile as the first of a new attempt.
  • Revealing the second tile of an attempt completes a move: matching faces stay face-up (matched); a mismatch leaves both showing until the next Flip clears them.
  • Flipping an already-matched or already-showing tile is rejected.

func NewGame

crossing Action
1func NewGame(cur realm)
source

NewGame reshuffles the board using the current block height as the seed.

func Render

1func Render(path string) string
source

Render draws the board as Markdown: a 4x4 grid, move count and solved state.

Imports 4

  • chain stdlib
  • chain/runtime stdlib
  • strconv stdlib
  • strings stdlib

Source Files 3