From e25680b0c0c713e203eb811bb19dd9d1a8afd497 Mon Sep 17 00:00:00 2001 From: Gordon Williams Date: Tue, 12 Nov 2019 17:55:13 +0000 Subject: [PATCH] Add 'Click Master' multiplayer game --- apps.json | 11 +++++++++ apps/click-master-icon.js | 1 + apps/click-master.js | 50 ++++++++++++++++++++++++++++++++++++++ apps/click-master.json | 5 ++++ apps/click-master.png | Bin 0 -> 1323 bytes 5 files changed, 67 insertions(+) create mode 100644 apps/click-master-icon.js create mode 100644 apps/click-master.js create mode 100644 apps/click-master.json create mode 100644 apps/click-master.png diff --git a/apps.json b/apps.json index 98c148603..9c293b480 100644 --- a/apps.json +++ b/apps.json @@ -82,6 +82,17 @@ {"name":"*astroid","url":"asteroids-icon.js","evaluate":true} ] }, + { "id": "clickms", + "name": "Click Master", + "icon": "click-master.png", + "description": "Get several friends to start the game, then compete to see who can press BTN1 the most!", + "tags": "game", + "storage": [ + {"name":"+clickms","url":"click-master.json"}, + {"name":"-clickms","url":"click-master.js"}, + {"name":"*clickms","url":"click-master-icon.js","evaluate":true} + ] + }, { "id": "compass", "name": "Compass", "icon": "compass.png", diff --git a/apps/click-master-icon.js b/apps/click-master-icon.js new file mode 100644 index 000000000..e59c4990f --- /dev/null +++ b/apps/click-master-icon.js @@ -0,0 +1 @@ +require("heatshrink").decompress(atob("mEwwhC/AHmIAAIWThAXCwAuVGCYuCkQwTCYOE7tIGCQSBkf/mgXUof/nsoF6kzJAQXSlvd7vSC4/d6B3L7vUC40NBQKnJwQMB7sgFwwXJGAVNBoI+ECoQJGGApgCBoZECC5YwBMAQ+C6AXFJBJWFCgoXQ6AXIJBJZGC7xIOC8Jg/C9ZIMC8RIMFhIXMU5HTnoLBJBQXIn/zRykNC5ruJn5HBRqnT9q8hXZalKCxoyICx4yFRJIA/AH4AQA==")) diff --git a/apps/click-master.js b/apps/click-master.js new file mode 100644 index 000000000..b9f76364b --- /dev/null +++ b/apps/click-master.js @@ -0,0 +1,50 @@ +var ME = "-= ME =-"; +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]) + }); +} catch(e){} +} + +function drawPlayers() { + g.clear(1); + g.setFont("6x8",2); + var l = [{name:ME,cnt:mycounter}]; + for (p of players) l.push(p); + l.sort((a,b)=>a.cnt-b.cnt); + var y=0; + l.forEach(player=>{ + if (player.name==ME) g.setColor(1,0,0); + else g.setColor(1,1,1); + g.drawString(player.name,10,y); + g.drawString(player.cnt,180,y); + y+=16; + }); +} + +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 : 1000, filters : [{ manufacturerData:{0x0590:{}} }] }); +} + +drawPlayers(); +try { NRF.wake(); } catch (e) {} +doScan(); +updateAdvertising(); diff --git a/apps/click-master.json b/apps/click-master.json new file mode 100644 index 000000000..6a2874259 --- /dev/null +++ b/apps/click-master.json @@ -0,0 +1,5 @@ +{ + "name":"Click Master", + "icon": "*clickms", + "src":"-clickms" +} diff --git a/apps/click-master.png b/apps/click-master.png new file mode 100644 index 0000000000000000000000000000000000000000..bff973976e4109295d391f4c8b7f51bf1bf68307 GIT binary patch literal 1323 zcmV+`1=RY9P)wnZjcunA>3NLk;kwgXLuP=9j0 z_uMFG92Un0ia(4z4SWoE9b6(P&!67l-Fsb>rHE|<{o?mH+2c@@z>RDoL14+Y$RtY% z6L;lJqRcUm(@QR`(HUGNCqCqoCrW8}llS~6=uN=9cEW;9#ECDI3p9AwQ&wPrn4IkF zrsnc{oQ@R@xQvZ?*a*BaI+BNCB+Mu);)m<k3kN663C#5T&eELbc(>B)qAmsO8qoN`h1dk>`VFp}g7crkUz-7_ z&EJ86Wg9b^B-{hQN#LG=LGa2`JaVo!!O8Clvn;on1HDTIVqBv^e+B3(Kq11{1&pO-SGS4YidbB>N;O+P2XmI*G4f6}cgY}K$;Olv2D;sNF(%y;m9Sof4Ibg(5b>`|e#E^<@M z!$vV!u8ObGyC#3OdBT(EsU6&M+YDLM64k>GnVdaSgD@AQgIH`Q9^(&(5^AqOTcoPP zZgt!>kdQX$TMQhsH_9_qg&NrHYXTmPv$UZUA-0D?3x{2RA+@q9RF_PXs|Elx=x+gi z(8d(TkQyv)wy`-2byoJTRJKn@=H@PGU&PxEmQvJmx)HRx*smS;rpwFtYMO(~$eif=~7{KCY?r;s-tE`9+$ zVSr1B90aQgsO+6sudmWfYJp|HAd+!GpTU@WTTAmuRli6V1I z7nZfoNj#+7fZR^Le{g)&_A6p$?x#U|fGSztk@z0#x~L@`bhY;X?t;t5(iNACFc^!a zDzq<|V`?j4nji7cfg1E`3DJw7-DxXy;5;f@Fgxod@MlUzQoi9dSTYqnn}G@#`guA7 zTtL`@k@JBB+Ag~ZbpJ}(ICCPg-jyH~z!G4L+Z=J6MRY6qMxEO)as#CG$kWDY