In The Game
  • Home
  • World Cup
  • Blog
  • Games
  • AFL
    • Overview

    • Matches
    • Ladder

    • Player Stats
    • Player Ratings
    • Player Game Logs
    • Player Comparison
    • Card Deck
    • Age Curves

    • Team Stats
    • Team Game Logs
    • Team Ratings

    • Definitions
  • Football
    • Overview

    • Matches
    • Leagues

    • World Cup 2026
    • Simulator
    • Wall Chart
    • Pick Your Bracket
    • Title Race
    • Group Projections
    • Match Predictions
    • Player Stats
    • Player Ratings
    • Venues
    • Team Strength
    • Head to Head

    • Player Stats
    • Player Ratings
    • Player Game Logs
    • Player Comparison
    • Card Deck

    • Team Stats
    • Team Game Logs
    • Team Ratings

    • Definitions
  • About
Skip to content

Top Trumps · Built on our ratings

Play the Game

Every player is a card, every stat is real. Duel the CPU, draft a roguelike deck, or chase a Higher / Lower streak — then take on today’s Daily Run (same hand for everyone) and climb the global leaderboard.

Football Football Card Deck 2,800+ players across 15 leagues — Panna ratings plus real per-90 stats. Play → AFL AFL Card Deck Every AFL player — TORP ratings + box-score totals, by season or all-time. Play →

How to play

Daily RunToday's seeded roguelike — the same opponents and draws for everyone. Your best depth + streak feed the global leaderboard.
Gaffer's RunThe roguelike: climb a ladder of CPUs, draft one of three cards after each win, lose a fight and the run's over.
Higher / LowerEndless streak — is the next card's stat higher or lower than this one? One wrong call ends it.
Quick DuelClassic Top Trumps — pick your card's strongest stat and beat the CPU's hidden card.
Build Your HandDrag cards into the tray to assemble your own deck, then duel the exact hand you picked.

Today’s Daily Run leaderboard

Show code
statsEsc = window.statsEsc
gamesDate = { const d = new Date(); return d.getFullYear() + "-" + String(d.getMonth() + 1).padStart(2, "0") + "-" + String(d.getDate()).padStart(2, "0") }
gamesBoards = {
  const base = (window.WORKER_BASE_URL || "").replace(/\/$/, "")
  const board = async (sport) => {
    if (!base) return null
    try {
      const r = await fetch(`${base}/api/run-score?sport=${sport}&day=${gamesDate}`)
      if (!r.ok) { console.warn("[run-score] HTTP " + r.status, await r.text().catch(() => "")); return null }
      return (await r.json()).scores || []
    }
    catch (e) { console.warn("[games] board fetch failed:", e); return null }
  }
  return { football: await board("football"), afl: await board("afl") }
}

{
  const panel = (label, href, scores) => {
    const rows = (scores || []).slice(0, 8).map((s, i) =>
      `<div class="gb-row"><span class="gb-rank">${i + 1}</span><span class="gb-name">${statsEsc(s.name)}</span><span class="gb-depth">${s.depth}/8</span></div>`).join("")
    const body = scores == null ? `<div class="gb-empty">Leaderboard offline</div>`
      : (rows || `<div class="gb-empty">No runs yet today — <a href="${href}">be the first</a>.</div>`)
    return `<div class="gb-panel"><div class="gb-head"><a href="${href}">${label}</a><span class="gb-day">${gamesDate}</span></div>${body}</div>`
  }
  const div = document.createElement("div")
  div.className = "games-boards"
  div.innerHTML = panel("Football", "/football/cards.html", gamesBoards.football) + panel("AFL", "/afl/cards.html", gamesBoards.afl)
  return div
}

See the full leaderboard — all-time best & longest streaks →

 

Pete Owen · Sydney · © 2026 · Source

My Teams | Settings | Photo Credits | Privacy | Disclaimer