Added jbm8b

pull/421/head
Johan Bové 2020-02-04 22:47:28 +01:00
parent c7ba910aef
commit 459df6ef40
6 changed files with 117 additions and 0 deletions

2
apps/jbm8b/Changelog Normal file
View File

@ -0,0 +1,2 @@
0.01: First working version
0.02: Added delay in replying for dramatic effect

View File

@ -0,0 +1,23 @@
{
"id": "jbm8b",
"name": "Magic 8 Ball",
"icon": "app.png",
"description": "A simple fortune telling app",
"tags": "game",
"storage": [
{
"name": "+jbm8b",
"url": "app.json"
},
{
"name": "-jbm8b",
"url": "app.js"
},
{
"name": "*jbm8b",
"url": "app-icon.js",
"evaluate": true
}
],
"version": "1.1.0"
}

1
apps/jbm8b/app-icon.js Normal file
View File

@ -0,0 +1 @@
require("heatshrink").decompress(atob("slkgRC/AF1a1WpoAWSgO//4AB/1QDCNvC4QZCGaELC4gAB/BITAAmAGCoyQGBAABMpkHC5P/8AYLl4YK/pJWPxkDC5ZLLj4YM/gYJv4YM/4YJC5v/4BiVMhUPDBz8IYpbJMPZx9JC559HPZ4AB6AYFg4YQ+CUVSxEfDCCWGn4YQSwytH/2V34YHoCtMRYMBBQ+AC4YNHLAcvZBcCBg30gFZgELZBbfH8DPB8ALHZAjfH4C2B/hWHDAg+HwC2B/yIHKwL4KoCsCDA76EDBYDDAAf8DAZaBDCy7HwF/JRLTDgBzBSox8KBAIYK6CuCdg4YM+DQBAQQAGDBZwBtVARA4YMSQILBSgwYFRgSWGgEBBQ4YMUQa6HDBnwSQPQPhgYH4CuKPhlAfJQYMCgeAHw4YK/ySD4AlIDBP8gYEC6CWG/wYP8D6GDAgkGDBjTDgALGDBn8DAcPBYzDDMY4YLSpn4DAcLUI+/cgoAD+gYDg75HIwJzBBY3wDAZ0DAAfAEIPgJwYYIOgYMFig9I6AYDEo67DVow9BDAZXH/+QEZH/wAYERIwAB1SXCUIwAEXYwAK/wYFLA4AJfAj6IABT4EcJIAJYwjIJABLGEV5QAIVoqvKVpoABl4XO/oYHhYYO+gYHgYYO8AYHPp57HAAM/C5n+C5D7Oe4ziRMRIAB34YLoAYKj7FTWB5JLAAN/JKr8LexB+PGBoABg4wWAAMvSSIAGt4XC/xIPAAkV1WVCyYA/AH4A/AH4Ai"))

85
apps/jbm8b/app.js Normal file
View File

@ -0,0 +1,85 @@
const affirmative = [
'It is\ncertain.',
'It is\ndicededly\nso.',
'Without\na doubt.',
'Yes\ndefinitely.',
'You may\nrely\non it.',
'As I see,\nit yes.',
'Most\nlikely.',
'Outlook\ngood.',
'Yes.',
'Signs point\nto yes.'
];
const nonCommittal = [
'Reply hazy,\ntry again.',
'Ask again\nlater.',
'Better not\ntell you\nnow.',
'Cannot\npredict\nnow.',
'Concentrate\nand\nask again.'
];
const negative = [
'Don\'t\ncount on it.',
'My reply\nis no.',
'My sources\nsay no.',
'Outlook\nis not\nso\ngood.',
'Very\ndoubtful.'
];
const title = 'Magic 8 Ball';
const answers = [affirmative, nonCommittal, negative];
function getRandomArbitrary(min, max) {
return Math.random() * (max - min) + min;
}
function predict() {
// affirmative, negative or non-committal
let max = answers.length;
const a = Math.floor(getRandomArbitrary(0, max));
// sets max compared to answer category
max = answers[a].length;
const b = Math.floor(getRandomArbitrary(0, max));
// get the answer
const response = answers[a][b];
return response;
}
function draw(msg) {
// console.log(msg);
g.clear();
E.showMessage(msg, title);
}
function reply(button) {
const theButton = (typeof button === 'undefined' || isNaN(button)) ? 1 : button;
const timer = Math.floor(getRandomArbitrary(0, theButton) * 1000);
// Thinking...
draw('...');
setTimeout('draw(predict());', timer);
}
function ask() {
draw('Ask me a\nYes or No\nquestion\nand\ntouch the\nscreen');
}
g.clear();
Bangle.loadWidgets();
// Event Handlers
Bangle.on('touch', (button) => reply(button));
setWatch(ask, BTN1, {repeat:true, edge:"falling"});
setWatch(reply, BTN3, {repeat:true, edge:"falling"});
// Back to launcher
setWatch(Bangle.showLauncher, BTN2, {repeat:false, edge:"falling"});
Bangle.on('lcdPower', (on) => {
if (on) {
Bangle.drawWidgets();
ask();
}
});

6
apps/jbm8b/app.json Normal file
View File

@ -0,0 +1,6 @@
{
"name": "Magic 8 Ball",
"icon": "*jbm8b",
"src": "-jbm8b",
"version": "1.1.0"
}

BIN
apps/jbm8b/app.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB