Zero refreshes required. This is Sudoku as you've never seen it. Away from the prying eyes of your co-workers and your boss. Powered by the dark arts of window.location.hash
. So powerful that just loading the page will cause your browser's history to rue the day.
Playable right here, Secret Suduko unlocked a series of unique experiences for me. It's not every day that you find yourself brute forcing a 19th-century newspaper puzzle. Or, better yet, getting Travis CI to do it for you.
test('app plays without error', () => {
const game = main(this, sudoku);
game.startGame();
for (let i = 0; i < 20000; i++) {
// 0-81, 0-9
if (game.play(Math.floor(Math.random() * 82), Math.floor(Math.random() * 10)) === true) {
/* This test will usually complete the game six times over,
adjust the difficulty randomly on completion */
game.startGame(Math.floor(Math.random() * 6));
};
}
});
It turns out that all you need are some emotes, a few eventlisteners, and a dream. Many thanks to Rob McGuire-Dale and his wonderful Sudoku generator/solver.
// Main render functions
this.squaresFilled = () => this.board.join('').match(/[^.]/g).length
this.completeness = () => `${this.squaresFilled()}/81`;
this.start = () => `Secret_Sudoku_~_${this.completeness()}_~_row:`;
this.render = (extra = '') => {
window.location.hash = `${this.start()}${this.rowMap[this.row]}__${this.prettifyRow(this.currRow(), this.cursor)}${extra}`;
}
Secret Sudoku is the perfect project to work on to help me relax in the evenings. It makes programming feel far more fun than logic abstraction should. Taking pull-requests today and every day hereafter.
healeycodes / secret-sudoku
🎲 Play Sudoku in your browser's URL bar!
Secret Sudoku
Hidden from prying eyes..
Play the classic game of Sudoku in your URL bar!
A Sunday project, powered by window.location.hash
and ☕
Avaliable @ https://healeycodes.github.io/secret-sudoku/
Install
npm install
Test
npm test
-
Uses Jest to test main functions and brute-force play the game to completion on different difficulties.
-
On GitHub, uses continious integration powered by Travis CI!
Deploy
Place the project files at the directory you wish you host the game (assuming HTTP/S).
For local-use, just open index.html
Join 150+ people signed up to my newsletter on programming and personal growth!
I tweet about tech @healeycodes.
Top comments (2)
Hey this is a very near project! How did you come up with this? I'm so fascinated by its simplicity, well done!
I just love the interactive web! My first idea was cloning an arcade game :)