Skip to content

Instantly share code, notes, and snippets.

@michaelschade
Last active April 4, 2022 16:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save michaelschade/667904b0e6ff3020c0eac026b266c1d9 to your computer and use it in GitHub Desktop.
Save michaelschade/667904b0e6ff3020c0eac026b266c1d9 to your computer and use it in GitHub Desktop.
// To run, paste the below into your Chrome console on
// https://www.nytimes.com/games/wordle/index.html from an incognito window
//
// Tile `evaluation` options are:
// - absent: grey, not in word
// - present: yellow, in word but wrong position
// - correct: green
const answers = [
[
{ letter: 'H', evaluation: 'correct' },
{ letter: 'A', evaluation: 'correct' },
{ letter: 'P', evaluation: 'correct' },
{ letter: 'P', evaluation: 'correct' },
{ letter: 'Y', evaluation: 'correct' }
],
[
{ letter: 'B', evaluation: 'correct' },
{ letter: 'I', evaluation: 'correct' },
{ letter: 'R', evaluation: 'correct' },
{ letter: 'T', evaluation: 'correct' },
{ letter: 'H', evaluation: 'correct' }
],
[
{ letter: ' ', evaluation: 'correct' },
{ letter: 'D', evaluation: 'correct' },
{ letter: 'A', evaluation: 'correct' },
{ letter: 'Y', evaluation: 'correct' },
{ letter: ' ', evaluation: 'correct' }
],
[
{ letter: 'B', evaluation: 'correct' },
{ letter: 'R', evaluation: 'correct' },
{ letter: 'A', evaluation: 'present' },
{ letter: 'I', evaluation: 'present' },
{ letter: 'N', evaluation: 'correct' }
],
[
{ letter: 'B', evaluation: 'correct' },
{ letter: 'R', evaluation: 'correct' },
{ letter: 'I', evaluation: 'correct' },
{ letter: 'A', evaluation: 'correct' },
{ letter: 'N', evaluation: 'correct' }
],
[
{ letter: '!', evaluation: 'correct' },
{ letter: '!', evaluation: 'correct' },
{ letter: '!', evaluation: 'correct' },
{ letter: '!', evaluation: 'correct' },
{ letter: '!', evaluation: 'correct' }
]
];
function typeTile(row, tile, letter, evaluation) {
return new Promise(resolve => {
setTimeout(() => {
row.setAttribute('letters', (row.getAttribute('letters') || '') + letter);
tile.setAttribute('evaluation', evaluation);
tile.setAttribute('letter', letter);
resolve(true);
}, 300);
});
}
function flipTile(tile) {
return new Promise(resolve => {
setTimeout(() => {
const tileDiv = tile.shadowRoot.querySelectorAll('.tile')[0];
tileDiv.setAttribute('data-animation', 'flip-out');
tileDiv.setAttribute('data-state', tile.getAttribute('evaluation'));
resolve(true);
}, 300);
});
}
function typeRow(row, rowIndex) {
return new Promise(resolve => {
setTimeout(async () => {
const tiles = row.shadowRoot.querySelectorAll('game-tile');
for (const [tileIndex, tile] of tiles.entries()) {
const answer = answers[rowIndex][tileIndex];
await typeTile(row, tile, answer.letter, answer.evaluation);
};
resolve(true);
}, 600);
});
}
function flipRow(row) {
return new Promise(resolve => {
setTimeout(async () => {
const tiles = row.shadowRoot.querySelectorAll('game-tile');
for (const [tileIndex, tile] of tiles.entries()) {
await flipTile(tile, tileIndex);
}
resolve(true);
}, 500);
});
}
const rows = document.querySelectorAll('game-app')[0].shadowRoot.querySelectorAll('game-row');
for (const [rowIndex, row] of rows.entries()) {
await typeRow(row, rowIndex);
await flipRow(row);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment