diff --git a/apps.json b/apps.json index f83312034..9c10c9dba 100644 --- a/apps.json +++ b/apps.json @@ -551,7 +551,7 @@ { "id": "cubescramble", "name": "Cube Scramble", - "version":"0.03", + "version":"0.04", "description": "A random scramble generator for the 3x3 Rubik's cube", "icon": "cube-scramble.png", "tags": "", diff --git a/apps/cubescramble/ChangeLog b/apps/cubescramble/ChangeLog index 6de5b7211..46852864a 100644 --- a/apps/cubescramble/ChangeLog +++ b/apps/cubescramble/ChangeLog @@ -1,3 +1,4 @@ 0.01: Initial Release 0.02: Replace icon with one found on https://icons8.com 0.03: Re-render icon fixing display in settings +0.04: Improved UX and display solve time diff --git a/apps/cubescramble/README.md b/apps/cubescramble/README.md index 779e32489..1c1603372 100644 --- a/apps/cubescramble/README.md +++ b/apps/cubescramble/README.md @@ -1,12 +1,11 @@ # Cube Scramble -A random scramble generator for the 3x3 Rubik's cube +A random scramble generator for the 3x3 Rubik's cube with a basic timer. ## Future features I'm keen to complete this project with -* Add a timer * Add the ability for times to be stored and exported ## Requests diff --git a/apps/cubescramble/cube-scramble.js b/apps/cubescramble/cube-scramble.js index c0b1d11c3..8a7c2eb34 100644 --- a/apps/cubescramble/cube-scramble.js +++ b/apps/cubescramble/cube-scramble.js @@ -1,4 +1,3 @@ - // Scramble code from: https://raw.githubusercontent.com/bjcarlson42/blog-post-sample-code/master/Rubik's%20Cube%20JavaScript%20Scrambler/part_two.js const makeScramble = () => { const options = ["F", "F2", "F'", "R", "R2", "R'", "U", "U2", "U'", "B", "B2", "B'", "L", "L2", "L'", "D", "D2", "D'"]; @@ -59,16 +58,32 @@ const getRandomInt = max => Math.floor(Math.random() * Math.floor(max)); // retu const getRandomIntBetween = (min, max) => Math.floor(Math.random() * (max - min) + min); const presentScramble = () => { - g.clear(); - E.showMessage(makeScramble().join(" ")); + E.showPrompt(makeScramble().join(" "), { + title: "cube scramble", + buttons: {"solve": true, "reset": false} + }).then((v) => { + if (v) { + const start = new Date(); + E.showPrompt(" ", { + title: "cube scramble", + buttons: {"stop": true} + }).then(() => { + const time = parseFloat(((new Date()).getTime() - start.getTime()) / 1000); + E.showPrompt(String(time.toFixed(3)), { + title: "cube scramble", + buttons: {"next": true} + }).then(() => { + presentScramble(); + }); + }); + } else { + presentScramble(); + } + }); }; const init = () => { presentScramble(); - - setWatch(() => { - presentScramble(); - }, BTN1, {repeat:true}); }; init();