mirror of https://github.com/espruino/BangleApps
79 lines
1.9 KiB
JavaScript
79 lines
1.9 KiB
JavaScript
const affirmative = [
|
|
'È certo.',
|
|
'È decisamente\ncosì.',
|
|
'Senza alcun\ndubbio.',
|
|
'Sì,\nsenza dubbio.',
|
|
'Ci puoi\ncontare.',
|
|
'Da quanto\nvedo,\nsì.',
|
|
'Molto\nprobabilmente.',
|
|
'Le prospettive\nsono buone.',
|
|
'Sì.',
|
|
'I segni\nindicano\ndi sì.'
|
|
];
|
|
const nonCommittal = [
|
|
'È difficile\ndirlo,\nprova di nuovo.',
|
|
'Rifai la domanda\npiù tardi.',
|
|
'Meglio non\nrisponderti\nadesso.',
|
|
'Non posso\npredirlo ora.',
|
|
'Concentrati e\nrifai la\ndomanda.'
|
|
];
|
|
const negative = [
|
|
'Non ci\ncontare.',
|
|
'La mia\nrisposta\nè no.',
|
|
'Le mie\nfonti dicono\ndi no.',
|
|
'Le prospettive\nnon sono\nbuone.',
|
|
'È molto\ndubbio.'
|
|
];
|
|
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('Ponimi una\ndomanda\nSì/No e\ntocca lo\nschermo');
|
|
}
|
|
|
|
g.clear();
|
|
|
|
Bangle.loadWidgets();
|
|
Bangle.drawWidgets();
|
|
ask();
|
|
|
|
// 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" }); |