{"id":5285,"date":"2026-07-23T17:25:12","date_gmt":"2026-07-23T20:25:12","guid":{"rendered":"https:\/\/muttstudio.com.br\/games\/tic-tac-toe\/"},"modified":"2026-07-23T18:47:35","modified_gmt":"2026-07-23T21:47:35","slug":"tic-tac-toe","status":"publish","type":"page","link":"https:\/\/muttstudio.com.br\/en\/games\/tic-tac-toe\/","title":{"rendered":"Tic-Tac-Toe"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"5285\" class=\"elementor elementor-5285 elementor-5243\" data-elementor-settings=\"{&quot;ha_cmc_init_switcher&quot;:&quot;no&quot;}\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e374f28 e-flex e-con-boxed e-con e-parent\" data-id=\"e374f28\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-0b7e5f8 elementor-widget elementor-widget-html\" data-id=\"0b7e5f8\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n<style>\n  :root{\n    --paper:#F4F4F2;\n    --panel:#1C2128;\n    --panel-soft:#262C35;\n    --ink:#20262E;\n    --ink-soft:#5C6470;\n    --brass:#8FB99B;\n    --brass-soft:#DCEBE0;\n    --error:#C0524A;\n    --success:#4F8A63;\n    --line-thin: rgba(28,33,40,0.14);\n    --line-thick: #1C2128;\n    --radius: 14px;\n    --mono: 'Courier New', 'Cascadia Code', 'SF Mono', monospace;\n    --sans: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;\n  }\n\n  *{ box-sizing:border-box; }\n\n  .app{\n    width:100%;\n    max-width:480px;\n    margin: 0 auto;\n  }\n\n  .title-block{\n    text-align:center;\n    margin-bottom:22px;\n  }\n\n  .title-block h1{\n    font-family: var(--mono);\n    font-size:2.2rem;\n    letter-spacing: 0.04em;\n    margin:0 0 6px;\n    color:var(--panel);\n    position:relative;\n    display:inline-block;\n  }\n\n  .title-block h1::after{\n    content:'';\n    position:absolute;\n    left:8%;\n    right:8%;\n    bottom:-6px;\n    height:3px;\n    background: var(--ink-soft);\n    border-radius:2px;\n  }\n\n  .title-block p{\n    margin:14px 0 0;\n    color:var(--ink-soft);\n    font-size:0.92rem;\n  }\n\n  .status-row{\n    display:flex;\n    justify-content:space-between;\n    align-items:center;\n    gap:10px;\n    margin-bottom:16px;\n  }\n\n  .status-card{\n    background:var(--panel);\n    color:#fff;\n    border-radius: var(--radius);\n    padding:12px 10px;\n    display:flex;\n    flex-direction:column;\n    align-items:center;\n    justify-content:center;\n    gap:2px;\n    flex:1;\n  }\n\n  .status-card.draw-card{\n    background: var(--panel-soft);\n  }\n\n  .status-card .label{\n    font-family: var(--sans);\n    font-size:0.68rem;\n    color:#9AA3AF;\n    text-transform:uppercase;\n    letter-spacing:0.08em;\n  }\n\n  .status-card .value{\n    font-family: var(--mono);\n    font-size:1.25rem;\n    font-weight:700;\n  }\n\n  .status-card.score-x .value{ color: var(--brass-soft); }\n  .status-card.score-o .value{ color: #E7C9C6; }\n\n  .tabs{\n    display:flex;\n    background: rgba(28,33,40,0.06);\n    border-radius: var(--radius);\n    padding:5px;\n    margin-bottom:18px;\n    gap:4px;\n  }\n\n  .tab{\n    flex:1;\n    border:none;\n    background:transparent;\n    padding:10px 4px;\n    border-radius: 10px;\n    font-family: var(--sans);\n    font-weight:600;\n    font-size:0.86rem;\n    color: var(--ink-soft);\n    cursor:pointer;\n    transition: background 0.15s, color 0.15s;\n  }\n\n  .tab.active{\n    background:#fff;\n    color: var(--panel);\n    box-shadow: 0 2px 6px rgba(0,0,0,0.08);\n  }\n\n  .turn-indicator{\n    text-align:center;\n    font-family: var(--mono);\n    font-weight:700;\n    font-size:0.95rem;\n    color: var(--panel);\n    background: var(--brass-soft);\n    border-radius: var(--radius);\n    padding:10px 0;\n    margin-bottom:16px;\n    letter-spacing:0.03em;\n    transition: background 0.15s, color 0.15s;\n  }\n\n  .turn-indicator.thinking{\n    background: var(--panel-soft);\n    color: #C7CBD1;\n  }\n\n  .board-wrap{\n    position:relative;\n  }\n\n  .board{\n    display:grid;\n    grid-template-columns: repeat(3, 1fr);\n    grid-template-rows: repeat(3, 1fr);\n    background:#fff;\n    border:2.5px solid var(--line-thick);\n    border-radius: 0;\n    overflow:hidden;\n    aspect-ratio:1\/1;\n    box-shadow: 0 8px 24px rgba(28,33,40,0.10);\n  }\n\n  .cell{\n    display:flex;\n    align-items:center;\n    justify-content:center;\n    font-family: var(--mono);\n    font-size: clamp(2.4rem, 14vw, 4rem);\n    font-weight:700;\n    color: var(--panel);\n    background:#fff;\n    cursor:pointer;\n    border:1px solid var(--line-thin);\n    user-select:none;\n    position:relative;\n    transition: background 0.12s;\n  }\n\n  .cell[data-c=\"0\"]{ border-left: 2px solid var(--line-thick); }\n  .cell[data-c=\"2\"]{ border-right: 2px solid var(--line-thick); }\n  .cell[data-r=\"0\"]{ border-top: 2px solid var(--line-thick); }\n  .cell[data-r=\"2\"]{ border-bottom: 2px solid var(--line-thick); }\n\n  .cell.filled{ cursor:default; }\n\n  .cell.x-mark{ color: var(--panel); }\n  .cell.o-mark{ color: var(--error); }\n\n  .cell.hinted{\n    background: rgba(143,185,155,0.30);\n  }\n\n  .cell.win-cell{\n    background: var(--brass-soft);\n    color: var(--success) !important;\n  }\n\n  .win-banner{\n    position:absolute;\n    inset:0;\n    background: rgba(28,33,40,0.92);\n    color:#fff;\n    display:none;\n    flex-direction:column;\n    align-items:center;\n    justify-content:center;\n    border-radius:0;\n    text-align:center;\n    padding:20px;\n    gap:8px;\n  }\n  .win-banner.show{ display:flex; }\n  .win-banner .big{\n    font-family: var(--mono);\n    font-size:1.6rem;\n    color: var(--brass-soft);\n  }\n  .win-banner .small{\n    font-size:0.85rem;\n    color:#C7CBD1;\n  }\n  .win-banner button{\n    margin-top:12px;\n    background: var(--brass);\n    border:none;\n    color:var(--panel);\n    font-weight:700;\n    padding:10px 20px;\n    border-radius:10px;\n    cursor:pointer;\n    font-size:0.9rem;\n  }\n\n  .actions{\n    display:flex;\n    gap:12px;\n    margin-top:18px;\n  }\n\n  .actions button{\n    flex:1;\n    padding:13px 0;\n    border-radius: var(--radius);\n    border:none;\n    background: rgba(28,33,40,0.06);\n    color: var(--panel);\n    font-weight:600;\n    font-size:0.9rem;\n    cursor:pointer;\n    display:flex;\n    align-items:center;\n    justify-content:center;\n    gap:8px;\n  }\n\n  .actions button svg{ width:16px; height:16px; }\n  .actions button:active{ background: rgba(28,33,40,0.12); }\n\n  .reset-score{\n    display:block;\n    margin:14px auto 0;\n    background:none;\n    border:none;\n    color: var(--ink-soft);\n    font-size:0.8rem;\n    text-decoration:underline;\n    cursor:pointer;\n  }\n<\/style>\n\n<div class=\"app\">\n  <div class=\"title-block\">\n    <h1>Jogo da Velha<\/h1>\n    <p>Escolha o modo de jogo e tente vencer antes do seu advers\u00e1rio.<\/p>\n  <\/div>\n\n  <div class=\"status-row\">\n    <div class=\"status-card score-x\">\n      <span class=\"label\">X<\/span>\n      <span class=\"value\" id=\"score-x\">0<\/span>\n    <\/div>\n    <div class=\"status-card draw-card\">\n      <span class=\"label\">Empates<\/span>\n      <span class=\"value\" id=\"score-draw\">0<\/span>\n    <\/div>\n    <div class=\"status-card score-o\">\n      <span class=\"label\">O<\/span>\n      <span class=\"value\" id=\"score-o\">0<\/span>\n    <\/div>\n  <\/div>\n\n  <div class=\"tabs\">\n    <button class=\"tab\" data-mode=\"2p\">2 Jogadores<\/button>\n    <button class=\"tab active\" data-mode=\"cpu-facil\">CPU F\u00e1cil<\/button>\n    <button class=\"tab\" data-mode=\"cpu-dificil\">CPU Dif\u00edcil<\/button>\n  <\/div>\n\n  <div class=\"turn-indicator\" id=\"turn-indicator\">Vez de X<\/div>\n\n  <div class=\"board-wrap\">\n    <div class=\"board\" id=\"board\"><\/div>\n    <div class=\"win-banner\" id=\"win-banner\">\n      <div class=\"big\" id=\"win-title\">X venceu!<\/div>\n      <div class=\"small\" id=\"win-sub\"><\/div>\n      <button id=\"win-new\">Jogar novamente<\/button>\n    <\/div>\n  <\/div>\n\n  <div class=\"actions\">\n    <button id=\"hint-btn\">\n      <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M9 18h6M10 21h4M12 3a6 6 0 0 0-4 10.5c.6.6 1 1.4 1 2.5h6c0-1.1.4-1.9 1-2.5A6 6 0 0 0 12 3z\"\/><\/svg>\n      Dica\n    <\/button>\n    <button id=\"new-game-btn\">\n      <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M23 4v6h-6M1 20v-6h6\"\/><path d=\"M3.5 9a9 9 0 0 1 14.6-3.4L23 10M1 14l4.9 4.4A9 9 0 0 0 20.5 15\"\/><\/svg>\n      Novo jogo\n    <\/button>\n  <\/div>\n\n  <button class=\"reset-score\" id=\"reset-score-btn\">Zerar placar<\/button>\n<\/div>\n\n<script>\n(function(){\n  const WIN_LINES = [\n    [0,1,2],[3,4,5],[6,7,8],\n    [0,3,6],[1,4,7],[2,5,8],\n    [0,4,8],[2,4,6]\n  ];\n\n  let board = Array(9).fill(null);   \/\/ 'X' | 'O' | null\n  let current = 'X';                 \/\/ whose turn\n  let mode = 'cpu-facil';            \/\/ '2p' | 'cpu-facil' | 'cpu-dificil'\n  let gameOver = false;\n  let cpuThinking = false;\n  let scores = { X: 0, O: 0, draw: 0 };\n\n  const boardEl = document.getElementById('board');\n  const turnEl = document.getElementById('turn-indicator');\n  const winBanner = document.getElementById('win-banner');\n  const winTitle = document.getElementById('win-title');\n  const winSub = document.getElementById('win-sub');\n  const scoreXEl = document.getElementById('score-x');\n  const scoreOEl = document.getElementById('score-o');\n  const scoreDrawEl = document.getElementById('score-draw');\n\n  function buildBoardDOM(){\n    boardEl.innerHTML = '';\n    for(let r=0;r<3;r++){\n      for(let c=0;c<3;c++){\n        const idx = r*3+c;\n        const cell = document.createElement('div');\n        cell.className = 'cell';\n        cell.dataset.idx = idx;\n        cell.dataset.r = r;\n        cell.dataset.c = c;\n        cell.addEventListener('click', () => handleCellClick(idx));\n        boardEl.appendChild(cell);\n      }\n    }\n  }\n\n  function isCpuTurn(){\n    if(mode === '2p') return false;\n    return current === 'O';\n  }\n\n  function render(){\n    const cells = boardEl.children;\n    for(let i=0;i<9;i++){\n      const cell = cells[i];\n      const val = board[i];\n      cell.textContent = val || '';\n      cell.classList.toggle('filled', !!val);\n      cell.classList.toggle('x-mark', val === 'X');\n      cell.classList.toggle('o-mark', val === 'O');\n      cell.classList.remove('hinted');\n    }\n    if(!gameOver){\n      turnEl.classList.toggle('thinking', cpuThinking);\n      turnEl.textContent = cpuThinking ? 'CPU pensando...' : ('Vez de ' + current);\n    }\n    scoreXEl.textContent = scores.X;\n    scoreOEl.textContent = scores.O;\n    scoreDrawEl.textContent = scores.draw;\n  }\n\n  function getWinner(b){\n    for(const line of WIN_LINES){\n      const [a,c,d] = line;\n      if(b[a] && b[a] === b[c] && b[a] === b[d]){\n        return { winner: b[a], line };\n      }\n    }\n    if(b.every(v => v !== null)) return { winner: 'draw', line: null };\n    return null;\n  }\n\n  function endGame(result){\n    gameOver = true;\n    cpuThinking = false;\n    if(result.winner === 'draw'){\n      scores.draw++;\n      winTitle.textContent = 'Empate!';\n      winSub.textContent = 'Ningu\u00e9m venceu essa rodada.';\n    } else {\n      scores[result.winner]++;\n      winTitle.textContent = result.winner + ' venceu!';\n      winSub.textContent = 'Placar \u2014 X: ' + scores.X + '  \u2022  Empates: ' + scores.draw + '  \u2022  O: ' + scores.O;\n      result.line.forEach(i => boardEl.children[i].classList.add('win-cell'));\n    }\n    render();\n    winBanner.classList.add('show');\n  }\n\n  function handleCellClick(idx){\n    if(gameOver || cpuThinking || board[idx]) return;\n    if(isCpuTurn()) return;\n    playMove(idx, current);\n  }\n\n  function playMove(idx, player){\n    board[idx] = player;\n    render();\n    const result = getWinner(board);\n    if(result){\n      endGame(result);\n      return;\n    }\n    current = current === 'X' ? 'O' : 'X';\n    render();\n    if(isCpuTurn()){\n      cpuThinking = true;\n      render();\n      setTimeout(cpuMove, 450);\n    }\n  }\n\n  function emptyIndices(b){\n    const out = [];\n    for(let i=0;i<9;i++) if(!b[i]) out.push(i);\n    return out;\n  }\n\n  function randomMove(b){\n    const empties = emptyIndices(b);\n    return empties[Math.floor(Math.random() * empties.length)];\n  }\n\n  \/\/ Minimax: returns {score, index} \u2014 score positive favors 'O' (maximizer), negative favors 'X'\n  function minimax(b, player){\n    const result = getWinner(b);\n    if(result){\n      if(result.winner === 'draw') return { score: 0 };\n      return { score: result.winner === 'O' ? 10 : -10 };\n    }\n    const empties = emptyIndices(b);\n    const moves = [];\n    for(const idx of empties){\n      b[idx] = player;\n      const { score } = minimax(b, player === 'X' ? 'O' : 'X');\n      moves.push({ idx, score });\n      b[idx] = null;\n    }\n    if(player === 'O'){\n      let best = moves[0];\n      for(const m of moves) if(m.score > best.score) best = m;\n      return { score: best.score, index: best.idx };\n    } else {\n      let best = moves[0];\n      for(const m of moves) if(m.score < best.score) best = m;\n      return { score: best.score, index: best.idx };\n    }\n  }\n\n  function bestMoveFor(b, player){\n    const empties = emptyIndices(b);\n    if(empties.length === 9) return 4; \/\/ strong opening\n    const { index } = minimax(b.slice(), player);\n    return index;\n  }\n\n  function cpuMove(){\n    if(gameOver) return;\n    let idx;\n    if(mode === 'cpu-dificil'){\n      idx = bestMoveFor(board, 'O');\n    } else {\n      \/\/ F\u00e1cil: mostly random, but still takes an obvious win or block sometimes\n      idx = Math.random() < 0.35 ? bestMoveFor(board, 'O') : randomMove(board);\n    }\n    cpuThinking = false;\n    playMove(idx, 'O');\n  }\n\n  document.getElementById('hint-btn').addEventListener('click', () => {\n    if(gameOver || cpuThinking) return;\n    if(mode !== '2p' && current !== 'X') return;\n    const idx = bestMoveFor(board, current);\n    if(idx === undefined || idx === null) return;\n    boardEl.children[idx].classList.add('hinted');\n  });\n\n  function newRound(){\n    board = Array(9).fill(null);\n    current = 'X';\n    gameOver = false;\n    cpuThinking = false;\n    winBanner.classList.remove('show');\n    document.querySelectorAll('.cell').forEach(c => c.classList.remove('win-cell','hinted'));\n    render();\n  }\n\n  document.getElementById('new-game-btn').addEventListener('click', newRound);\n  document.getElementById('win-new').addEventListener('click', newRound);\n\n  document.getElementById('reset-score-btn').addEventListener('click', () => {\n    scores = { X: 0, O: 0, draw: 0 };\n    render();\n  });\n\n  document.querySelectorAll('.tab').forEach(tab => {\n    tab.addEventListener('click', () => {\n      document.querySelectorAll('.tab').forEach(t => t.classList.remove('active'));\n      tab.classList.add('active');\n      mode = tab.dataset.mode;\n      newRound();\n    });\n  });\n\n  \/\/ ---------- Init ----------\n  buildBoardDOM();\n  newRound();\n})();\n<\/script>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>:root{ &#8211;paper:#F4F4F2; &#8211;panel:#1C2128; &#8211;panel-soft:#262C35; &#8211;ink:#20262E; &#8211;ink-soft:#5C6470; &#8211;brass:#8FB99B; &#8211;brass-soft:#DCEBE0; &#8211;error:#C0524A; &#8211;success:#4F8A63; &#8211;line-thin: rgba(28,33,40,0.14); &#8211;line-thick: #1C2128; &#8211;radius: 14px; &#8211;mono: &#8216;Courier New&#8217;, &#8216;Cascadia Code&#8217;, &#8216;SF Mono&#8217;, monospace; &#8211;sans: -apple-system, BlinkMacSystemFont, &#8216;Segoe UI&#8217;, Roboto, Helvetica, Arial, sans-serif; } *{ box-sizing:border-box; } .app{ width:100%; max-width:480px; margin: 0 auto; } .title-block{ text-align:center; margin-bottom:22px; } .title-block h1{ font-family: var(&#8211;mono); font-size:2.2rem; letter-spacing: 0.04em; [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"parent":5279,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"site-sidebar-layout":"no-sidebar","site-content-layout":"page-builder","ast-site-content-layout":"full-width-container","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-5285","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Tic-Tac-Toe - Mutt Studio<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/muttstudio.com.br\/en\/games\/tic-tac-toe\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tic-Tac-Toe - Mutt Studio\" \/>\n<meta property=\"og:description\" content=\":root{ &#8211;paper:#F4F4F2; &#8211;panel:#1C2128; &#8211;panel-soft:#262C35; &#8211;ink:#20262E; &#8211;ink-soft:#5C6470; &#8211;brass:#8FB99B; &#8211;brass-soft:#DCEBE0; &#8211;error:#C0524A; &#8211;success:#4F8A63; &#8211;line-thin: rgba(28,33,40,0.14); &#8211;line-thick: #1C2128; &#8211;radius: 14px; &#8211;mono: &#8216;Courier New&#8217;, &#8216;Cascadia Code&#8217;, &#8216;SF Mono&#8217;, monospace; &#8211;sans: -apple-system, BlinkMacSystemFont, &#8216;Segoe UI&#8217;, Roboto, Helvetica, Arial, sans-serif; } *{ box-sizing:border-box; } .app{ width:100%; max-width:480px; margin: 0 auto; } .title-block{ text-align:center; margin-bottom:22px; } .title-block h1{ font-family: var(&#8211;mono); font-size:2.2rem; letter-spacing: 0.04em; [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/muttstudio.com.br\/en\/games\/tic-tac-toe\/\" \/>\n<meta property=\"og:site_name\" content=\"Mutt Studio\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/muttstudio\" \/>\n<meta property=\"article:modified_time\" content=\"2026-07-23T21:47:35+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@muttstudio\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/muttstudio.com.br\\\/en\\\/games\\\/tic-tac-toe\\\/\",\"url\":\"https:\\\/\\\/muttstudio.com.br\\\/en\\\/games\\\/tic-tac-toe\\\/\",\"name\":\"Tic-Tac-Toe - Mutt Studio\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/muttstudio.com.br\\\/en\\\/#website\"},\"datePublished\":\"2026-07-23T20:25:12+00:00\",\"dateModified\":\"2026-07-23T21:47:35+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/muttstudio.com.br\\\/en\\\/games\\\/tic-tac-toe\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/muttstudio.com.br\\\/en\\\/games\\\/tic-tac-toe\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/muttstudio.com.br\\\/en\\\/games\\\/tic-tac-toe\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"In\u00edcio\",\"item\":\"https:\\\/\\\/muttstudio.com.br\\\/en\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Games\",\"item\":\"https:\\\/\\\/muttstudio.com.br\\\/en\\\/games\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Tic-Tac-Toe\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/muttstudio.com.br\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/muttstudio.com.br\\\/en\\\/\",\"name\":\"Mutt Studio\",\"description\":\"Resolvemos problemas com design e tecnologia.\",\"publisher\":{\"@id\":\"https:\\\/\\\/muttstudio.com.br\\\/en\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/muttstudio.com.br\\\/en\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/muttstudio.com.br\\\/en\\\/#organization\",\"name\":\"Mutt Studio\",\"url\":\"https:\\\/\\\/muttstudio.com.br\\\/en\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/muttstudio.com.br\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/muttstudio.com.br\\\/wp-content\\\/uploads\\\/2022\\\/11\\\/logo-muttstudio-oficial-sem-fundo.svg\",\"contentUrl\":\"https:\\\/\\\/muttstudio.com.br\\\/wp-content\\\/uploads\\\/2022\\\/11\\\/logo-muttstudio-oficial-sem-fundo.svg\",\"width\":493,\"height\":117,\"caption\":\"Mutt Studio\"},\"image\":{\"@id\":\"https:\\\/\\\/muttstudio.com.br\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/muttstudio\",\"https:\\\/\\\/x.com\\\/muttstudio\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/muttstudio\",\"https:\\\/\\\/www.behance.net\\\/MuttStudio\",\"https:\\\/\\\/www.youtube.com\\\/@muttstudio\",\"https:\\\/\\\/www.instagram.com\\\/muttstudio\\\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Tic-Tac-Toe - Mutt Studio","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/muttstudio.com.br\/en\/games\/tic-tac-toe\/","og_locale":"en_US","og_type":"article","og_title":"Tic-Tac-Toe - Mutt Studio","og_description":":root{ &#8211;paper:#F4F4F2; &#8211;panel:#1C2128; &#8211;panel-soft:#262C35; &#8211;ink:#20262E; &#8211;ink-soft:#5C6470; &#8211;brass:#8FB99B; &#8211;brass-soft:#DCEBE0; &#8211;error:#C0524A; &#8211;success:#4F8A63; &#8211;line-thin: rgba(28,33,40,0.14); &#8211;line-thick: #1C2128; &#8211;radius: 14px; &#8211;mono: &#8216;Courier New&#8217;, &#8216;Cascadia Code&#8217;, &#8216;SF Mono&#8217;, monospace; &#8211;sans: -apple-system, BlinkMacSystemFont, &#8216;Segoe UI&#8217;, Roboto, Helvetica, Arial, sans-serif; } *{ box-sizing:border-box; } .app{ width:100%; max-width:480px; margin: 0 auto; } .title-block{ text-align:center; margin-bottom:22px; } .title-block h1{ font-family: var(&#8211;mono); font-size:2.2rem; letter-spacing: 0.04em; [&hellip;]","og_url":"https:\/\/muttstudio.com.br\/en\/games\/tic-tac-toe\/","og_site_name":"Mutt Studio","article_publisher":"https:\/\/www.facebook.com\/muttstudio","article_modified_time":"2026-07-23T21:47:35+00:00","twitter_card":"summary_large_image","twitter_site":"@muttstudio","twitter_misc":{"Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/muttstudio.com.br\/en\/games\/tic-tac-toe\/","url":"https:\/\/muttstudio.com.br\/en\/games\/tic-tac-toe\/","name":"Tic-Tac-Toe - Mutt Studio","isPartOf":{"@id":"https:\/\/muttstudio.com.br\/en\/#website"},"datePublished":"2026-07-23T20:25:12+00:00","dateModified":"2026-07-23T21:47:35+00:00","breadcrumb":{"@id":"https:\/\/muttstudio.com.br\/en\/games\/tic-tac-toe\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/muttstudio.com.br\/en\/games\/tic-tac-toe\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/muttstudio.com.br\/en\/games\/tic-tac-toe\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"In\u00edcio","item":"https:\/\/muttstudio.com.br\/en\/"},{"@type":"ListItem","position":2,"name":"Games","item":"https:\/\/muttstudio.com.br\/en\/games\/"},{"@type":"ListItem","position":3,"name":"Tic-Tac-Toe"}]},{"@type":"WebSite","@id":"https:\/\/muttstudio.com.br\/en\/#website","url":"https:\/\/muttstudio.com.br\/en\/","name":"Mutt Studio","description":"Resolvemos problemas com design e tecnologia.","publisher":{"@id":"https:\/\/muttstudio.com.br\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/muttstudio.com.br\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/muttstudio.com.br\/en\/#organization","name":"Mutt Studio","url":"https:\/\/muttstudio.com.br\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/muttstudio.com.br\/en\/#\/schema\/logo\/image\/","url":"https:\/\/muttstudio.com.br\/wp-content\/uploads\/2022\/11\/logo-muttstudio-oficial-sem-fundo.svg","contentUrl":"https:\/\/muttstudio.com.br\/wp-content\/uploads\/2022\/11\/logo-muttstudio-oficial-sem-fundo.svg","width":493,"height":117,"caption":"Mutt Studio"},"image":{"@id":"https:\/\/muttstudio.com.br\/en\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/muttstudio","https:\/\/x.com\/muttstudio","https:\/\/www.linkedin.com\/company\/muttstudio","https:\/\/www.behance.net\/MuttStudio","https:\/\/www.youtube.com\/@muttstudio","https:\/\/www.instagram.com\/muttstudio\/"]}]}},"_links":{"self":[{"href":"https:\/\/muttstudio.com.br\/en\/wp-json\/wp\/v2\/pages\/5285","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/muttstudio.com.br\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/muttstudio.com.br\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/muttstudio.com.br\/en\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/muttstudio.com.br\/en\/wp-json\/wp\/v2\/comments?post=5285"}],"version-history":[{"count":2,"href":"https:\/\/muttstudio.com.br\/en\/wp-json\/wp\/v2\/pages\/5285\/revisions"}],"predecessor-version":[{"id":5287,"href":"https:\/\/muttstudio.com.br\/en\/wp-json\/wp\/v2\/pages\/5285\/revisions\/5287"}],"up":[{"embeddable":true,"href":"https:\/\/muttstudio.com.br\/en\/wp-json\/wp\/v2\/pages\/5279"}],"wp:attachment":[{"href":"https:\/\/muttstudio.com.br\/en\/wp-json\/wp\/v2\/media?parent=5285"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}