BeamNG.Earth
A 1:1 scale streamed Earth for BeamNG.drive: real elevation and satellite imagery, floating origin, LOD streaming from a companion server
Play a recursive version of the classic tic-tac-toe game
Translation pending
AI summary · website content
GamesJavaScript · CSSGitHub @Shariq2003OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Tic-Tac-Toe with a twist — the board never fills up. Once all nine squares are taken, the oldest move vanishes, so there are no draws: someone has to win.
The Twist · Rules · Getting Started · How it's built
Classic Tic-Tac-Toe ends in a draw far too often. Here, every move is remembered in a queue — when the board is full and nobody has won, the oldest mark is erased and play continues. You have to think about which of your marks is about to disappear!
flowchart TD
A(["Player clicks an empty square"]) --> B["Place X / O<br/>push move into queue"]
B --> C["Switch player"]
C --> D{"Three in a row?"}
D -- "yes" --> W(["🏆 Winner! highlight line<br/>show New Game"])
D -- "no" --> E{"9 moves on board?"}
E -- "yes" --> F["Remove the OLDEST move<br/>(queue.shift) and free that square"]
E -- "no" --> A
F --> A
Board full, no winner Oldest move (X at top-left) vanishes
X | O | X _ | O | X
---+---+--- ---+---+---
X | O | O ─────────▶ X | O | O
---+---+--- ---+---+---
O | X | X O | X | X
Now the next player can take that freed square.
No installs, no build step:
git clone https://github.com/Shariq2003/Recursive-Tic-Tac-Toe.git
cd Recursive-Tic-Tac-Toe
# open index.html in your browser
| Piece | Implementation |
|---|---|
| Board state | gameGrid — array of 9 cells |
| Move history | moves — a FIFO queue of cell indexes |
| Win check | 8 winning lines checked after every move |
| Recycling | moves.shift() clears the oldest cell when 9 moves are on the board |
| UI | Vanilla DOM, CSS grid, winning cells highlighted |
Recursive-Tic-Tac-Toe/
├── index.html
├── styles.css
└── index.js
⭐ If this twist made you think, consider giving it a star!