mirror of https://github.com/espruino/BangleApps
Add files via upload
parent
060d59837b
commit
0e33217d9a
|
@ -0,0 +1,3 @@
|
||||||
|
0.01: New App!
|
||||||
|
0.02: Updated to be more responsive re suggestion by Gordon
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
require("heatshrink").decompress(atob("mEwwhC/AFkLC6+wC6u73YuVC7JIUCwIZBLywwTIwYwTC4QwUC4OwGCgXCCoQwRXwYwTO4wwQO4wwQO44wPO44wPO5G7olACY9EAAVLO44LCCosECwYXDGAm0BQIvFCwoABCwIcCCoQuHCwwXEAAguFBQgFBoEEC451GIwQVDAgIXBIhQwECoYEBYAS5NCogEBC6BGFVAQXPGAoXRGAoXSO6owGC6Z3VGAoXUd4gWRGAYXVIwQXUIwReSC7gWUgELFyoXBCyoA/ACwA=="))
|
|
@ -1 +1,121 @@
|
||||||
//temporary
|
Bangle.setLCDTimeout(30);
|
||||||
|
|
||||||
|
var buf = Graphics.createArrayBuffer(160,160,1,{msb:true});
|
||||||
|
|
||||||
|
function flip() {
|
||||||
|
g.setColor(1,1,1);
|
||||||
|
g.drawImage({width:160,height:160,bpp:1,buffer:buf.buffer},40,40);
|
||||||
|
buf.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
var genA = new Uint8Array(324);
|
||||||
|
var genB = new Uint8Array(324);
|
||||||
|
var generation=0;
|
||||||
|
var start=Date.now();
|
||||||
|
var currentY=1;
|
||||||
|
|
||||||
|
function initDraw(gen){
|
||||||
|
for (let y = 1; y<17; ++y)
|
||||||
|
for (let x = 1; x<17; ++x) {
|
||||||
|
var r = Math.random()<0.5?1:0;
|
||||||
|
gen[x+y*18] = r;
|
||||||
|
if (r==1){
|
||||||
|
var Xr=10*(x-1);
|
||||||
|
var Yr=10*(y-1);
|
||||||
|
buf.fillRect(Xr,Yr, Xr+7,Yr+7);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
flip();
|
||||||
|
}
|
||||||
|
|
||||||
|
function howlong(){
|
||||||
|
var now = Date.now();
|
||||||
|
const duration = Math.floor(now-start);
|
||||||
|
start=now;
|
||||||
|
++generation;
|
||||||
|
g.setFont("6x8",2);
|
||||||
|
g.setFontAlign(-1,-1,0);
|
||||||
|
g.drawString('Gen:'+generation+' '+duration+'ms ',20,220,true);
|
||||||
|
}
|
||||||
|
|
||||||
|
function next(){
|
||||||
|
"ram";
|
||||||
|
var cur=genA, fut=genB, y=currentY;
|
||||||
|
var count=(p)=>{return cur[p-19]+cur[p-18]+cur[p-17]+cur[p-1]+cur[p+1]+cur[p+17]+cur[p+18]+cur[p+19];};
|
||||||
|
for (let x = 1; x<17; ++x){
|
||||||
|
var ind = x+y*18;
|
||||||
|
var nc = count(ind);
|
||||||
|
var r = (cur[ind]==1 && nc==2 || nc==3)?1:0;
|
||||||
|
fut[ind]=r;
|
||||||
|
if (r==1){
|
||||||
|
var Xr=10*(x-1);
|
||||||
|
var Yr=10*(y-1);
|
||||||
|
buf.fillRect(Xr,Yr, Xr+7,Yr+7);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (y==16){
|
||||||
|
flip();
|
||||||
|
var tmp = genA; genA=genB; genB=tmp;
|
||||||
|
howlong();
|
||||||
|
currentY=1;
|
||||||
|
} else ++currentY;
|
||||||
|
}
|
||||||
|
|
||||||
|
function reset(){
|
||||||
|
g.setColor(1,1,1);
|
||||||
|
initDraw(genA);
|
||||||
|
currentY=1;
|
||||||
|
generation = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
var intervalRef = null;
|
||||||
|
|
||||||
|
function stopdraw() {
|
||||||
|
if(intervalRef) {clearInterval(intervalRef);}
|
||||||
|
}
|
||||||
|
|
||||||
|
function startdraw() {
|
||||||
|
g.clear();
|
||||||
|
Bangle.drawWidgets();
|
||||||
|
g.reset();
|
||||||
|
g.setColor(1,1,1);
|
||||||
|
g.setFont("6x8",2);
|
||||||
|
g.setFontAlign(0,0,3);
|
||||||
|
g.drawString("Reset",230,200);
|
||||||
|
intervalRef = setInterval(next,60);
|
||||||
|
}
|
||||||
|
|
||||||
|
function setButtons(){
|
||||||
|
setWatch(Bangle.showLauncher, BTN2, {repeat:false,edge:"falling"});
|
||||||
|
setWatch(reset, BTN3, {repeat:true,edge:"rising"});
|
||||||
|
}
|
||||||
|
|
||||||
|
var SCREENACCESS = {
|
||||||
|
withApp:true,
|
||||||
|
request:function(){
|
||||||
|
this.withApp=false;
|
||||||
|
stopdraw();
|
||||||
|
clearWatch();
|
||||||
|
},
|
||||||
|
release:function(){
|
||||||
|
this.withApp=true;
|
||||||
|
startdraw();
|
||||||
|
setButtons();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
Bangle.on('lcdPower',function(on) {
|
||||||
|
if (!SCREENACCESS.withApp) return;
|
||||||
|
if (on) {
|
||||||
|
startdraw();
|
||||||
|
} else {
|
||||||
|
stopdraw();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
g.clear();
|
||||||
|
Bangle.loadWidgets();
|
||||||
|
startdraw();
|
||||||
|
setButtons();
|
||||||
|
reset();
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
Bangle.setLCDTimeout(30);var buf=Graphics.createArrayBuffer(160,160,1,{msb:!0});function flip(){g.setColor(1,1,1);g.drawImage({width:160,height:160,bpp:1,buffer:buf.buffer},40,40);buf.clear()}var genA=new Uint8Array(324),genB=new Uint8Array(324),generation=0,start=Date.now(),currentY=1;function initDraw(a){for(var d=1;17>d;++d)for(var e=1;17>e;++e){var c=.5>Math.random()?1:0;a[e+18*d]=c;if(1==c){c=10*(e-1);var b=10*(d-1);buf.fillRect(c,b,c+7,b+7)}}flip()}
|
||||||
|
function howlong(){var a=Date.now(),d=Math.floor(a-start);start=a;++generation;g.setFont("6x8",2);g.setFontAlign(-1,-1,0);g.drawString("Gen:"+generation+" "+d+"ms ",20,220,!0)}
|
||||||
|
function next(){"ram";for(var a=genA,d=genB,e=currentY,c=1;17>c;++c){var b=c+18*e,f=a[b-19]+a[b-18]+a[b-17]+a[b-1]+a[b+1]+a[b+17]+a[b+18]+a[b+19];f=1==a[b]&&2==f||3==f?1:0;d[b]=f;1==f&&(b=10*(c-1),f=10*(e-1),buf.fillRect(b,f,b+7,f+7))}16==e?(flip(),a=genA,genA=genB,genB=a,howlong(),currentY=1):++currentY}function reset(){g.setColor(1,1,1);initDraw(genA);currentY=1;generation=0}var intervalRef=null;function stopdraw(){intervalRef&&clearInterval(intervalRef)}
|
||||||
|
function startdraw(){g.clear();Bangle.drawWidgets();g.reset();g.setColor(1,1,1);g.setFont("6x8",2);g.setFontAlign(0,0,3);g.drawString("Reset",230,200);intervalRef=setInterval(next,60)}function setButtons(){setWatch(Bangle.showLauncher,BTN2,{repeat:!1,edge:"falling"});setWatch(reset,BTN3,{repeat:!0,edge:"rising"})}var SCREENACCESS={withApp:!0,request:function(){this.withApp=!1;stopdraw();clearWatch()},release:function(){this.withApp=!0;startdraw();setButtons()}};
|
||||||
|
Bangle.on("lcdPower",function(a){SCREENACCESS.withApp&&(a?startdraw():stopdraw())});g.clear();Bangle.loadWidgets();startdraw();setButtons();reset();
|
Binary file not shown.
After Width: | Height: | Size: 1.5 KiB |
Loading…
Reference in New Issue