forked from FOSS/BangleApps
horse race
parent
b5677826fd
commit
81456744f6
11
apps.json
11
apps.json
|
@ -93,6 +93,17 @@
|
|||
{"name":"*clickms","url":"click-master-icon.js","evaluate":true}
|
||||
]
|
||||
},
|
||||
{ "id": "horsey",
|
||||
"name": "Horse Race!",
|
||||
"icon": "horse-race.png",
|
||||
"description": "Get several friends to start the game, then compete to see who can press BTN1 the most!",
|
||||
"tags": "game",
|
||||
"storage": [
|
||||
{"name":"+horsey","url":"horse-race.json"},
|
||||
{"name":"-horsey","url":"horse-race.js"},
|
||||
{"name":"*horsey","url":"horse-race-icon.js","evaluate":true}
|
||||
]
|
||||
},
|
||||
{ "id": "compass",
|
||||
"name": "Compass",
|
||||
"icon": "compass.png",
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
require("heatshrink").decompress(atob("mEwxH+AH4A/AH4AVvNPp95F1tPqujF9IuCvPO5wspAAXHF84uFp4uBL84xEvPN5q+rqtiCBl6F7tiAAY9LvQDBF86cDvQvCGLYvEGAr7EF4IwDF7c4GQwuERwIACqpecrlcF4lWLw4ACF7s3F58rGDIvEA4VcFwtWL4ovSCwwvHFoiOHGCQXHXYdcBwQuIDIwsMI5QwEGIKNERgh6JFpIuKAAOAGIYvCqpYJAwUyFxaNIGAovEXBheOF5pfCrl6RYjoTVAYvMRwYOKF76NDwAveGBaNEF8AwLFzgvHeRovoqtWFxtVDQbwSF44KBqouLDYzAYqz8OPg5gSD6K9FGCIvJVoIdLdoxgUDop9NF7gcEPZwvZJgwvnbiwTHF54bLMCEsAAIvVTRBEOF7zBSF7StPGDB1HPpyMVDAgZFbxztWAH4A/AGw"))
|
|
@ -0,0 +1,70 @@
|
|||
Bangle.setLCDMode("doublebuffered");
|
||||
var img = require("Storage").read("*horsey");
|
||||
var mycounter = 0;
|
||||
var players = {};
|
||||
setWatch(x=>{
|
||||
mycounter++;
|
||||
updateAdvertising();
|
||||
},BTN1,{repeat:true});
|
||||
|
||||
function updateAdvertising() {
|
||||
try {
|
||||
NRF.setAdvertising({},{
|
||||
manufacturer: 0x0590,
|
||||
manufacturerData: new Uint8Array([mycounter>>8,mycounter&255]),
|
||||
interval: 60
|
||||
});
|
||||
} catch(e){}
|
||||
}
|
||||
|
||||
function drawPlayers() {
|
||||
g.clear(1);
|
||||
g.setBgColor(0,0.7,0);
|
||||
g.setFont("6x8",2);
|
||||
g.setFontAlign(0,0,1);
|
||||
var max = mycounter;
|
||||
for (var player of players) {
|
||||
max = Math.max(player.cnt, mycounter);
|
||||
}
|
||||
var offset = 0;
|
||||
if (max > 220)
|
||||
offset = max-220;
|
||||
|
||||
var d = 63 - (offset&63);
|
||||
g.fillRect(0,10,240,12);
|
||||
for (var x=d;x<240;x+=64)
|
||||
g.fillRect(x,12,x+2,12+20);
|
||||
var y = 20;
|
||||
g.drawImage(img, mycounter-offset,y);
|
||||
|
||||
for (var player of players) {
|
||||
y+=45;
|
||||
g.drawString(player.name,10,y);
|
||||
g.drawImage(img, player.cnt-offset,20);
|
||||
}
|
||||
|
||||
g.fillRect(0,150,240,152);
|
||||
for (var x=d;x<240;x+=64)
|
||||
g.fillRect(x,152,x+2,160);
|
||||
g.flip();
|
||||
}
|
||||
|
||||
function doScan() {
|
||||
NRF.findDevices(devs=>{
|
||||
devs.forEach(dev => {
|
||||
players[dev.id] = {
|
||||
name : dev.id.substr(12,5),
|
||||
cnt : (dev.manufacturerData[0]<<8)|dev.manufacturerData[1]
|
||||
};
|
||||
});
|
||||
drawPlayers();
|
||||
doScan();
|
||||
},{timeout : 250, filters : [{ manufacturerData:{0x0590:{}} }] });
|
||||
}
|
||||
|
||||
drawPlayers();
|
||||
try { NRF.wake(); } catch (e) {}
|
||||
doScan();
|
||||
setInterval(drawPlayers, 100);
|
||||
|
||||
updateAdvertising();
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"name":"Horse Race",
|
||||
"icon": "*horser",
|
||||
"src":"-horser"
|
||||
}
|
Binary file not shown.
After Width: | Height: | Size: 2.1 KiB |
Loading…
Reference in New Issue