Skip to content

Commit

Permalink
Merge pull request espruino#2927 from NovaDawn999/master
Browse files Browse the repository at this point in the history
2 New Apps
  • Loading branch information
gfwilliams authored Jul 31, 2023
2 parents 49b3ab1 + d8c6dbe commit 311f12c
Show file tree
Hide file tree
Showing 13 changed files with 268 additions and 0 deletions.
1 change: 1 addition & 0 deletions apps/lunaclock/ChangeLog
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0.01: New App!
9 changes: 9 additions & 0 deletions apps/lunaclock/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Luna Clock

![](screenshot.png)

Simple clock face inspired by the moon.

## Creator

NovaDawn999
1 change: 1 addition & 0 deletions apps/lunaclock/app-icon.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

72 changes: 72 additions & 0 deletions apps/lunaclock/app.js

Large diffs are not rendered by default.

Binary file added apps/lunaclock/app.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
17 changes: 17 additions & 0 deletions apps/lunaclock/metadata.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"id": "lunaclock",
"name": "Luna Clock",
"version": "0.01",
"description": "Simple clock face inspired by the moon.",
"icon": "app.png",
"screenshots": [{"url":"screenshot.png"}],
"type": "clock",
"tags": "clock",
"supports": ["BANGLEJS","BANGLEJS2"],
"readme": "README.md",
"allow_emulator": true,
"storage": [
{"name":"lunaclock.app.js","url":"app.js"},
{"name":"lunaclock.img","url":"app-icon.js","evaluate":true}
]
}
Binary file added apps/lunaclock/screenshot.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions apps/stacker/ChangeLog
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0.01: New App!
12 changes: 12 additions & 0 deletions apps/stacker/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# Stacker

A simple game of stacking cubes.


## Usage

Press the button to stack!

## Creator

NovaDawn999
1 change: 1 addition & 0 deletions apps/stacker/app-icon.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

140 changes: 140 additions & 0 deletions apps/stacker/app.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,140 @@
const TICKRATE = 80;
const BLOCK_SIZE = 16;
const BLOCK_COLOR_PRIMARY = "#ff0000";
const BLOCK_COLOR_SECONDARY = "#ffff00";
const GAMEBOARD_X = 16;
const GAMEBOARD_WIDTH = g.getWidth() - 16 - BLOCK_SIZE;
const START_X = GAMEBOARD_X;
const START_Y = g.getHeight() - BLOCK_SIZE - 1;
const START_LENGTH = 5;
var startTime = 0;
var length = 5;
var updateTimeout;
var rows = [];
var playing = true;

class Block {
constructor(x, y, match) {
this.x = x;
this.y = y;
this.match = match;
this.show = true;
}
}

class Row {
constructor(x, y, size, direction, match) {
this.y = y;
this.size = size;
this.blocks = [];
if (Math.random() > 0.49) {
this.direction = 1;
this.x = BLOCK_SIZE;
}
else {
this.direction = -1;
this.x = g.getWidth() - this.size * BLOCK_SIZE;
}
this.match = match;
for (var i = 0; i < size; i++) {
var b = new Block(this.x + (BLOCK_SIZE * i), this.y, this.match);
this.blocks.push(b);
}
}
update() {
this.x += BLOCK_SIZE * this.direction;
if (this.x + (this.size * BLOCK_SIZE) > GAMEBOARD_X + GAMEBOARD_WIDTH || this.x < GAMEBOARD_X) {
this.direction = -this.direction;
}
for (var i = 0; i < this.size; i++) {
this.blocks[i].x = this.x + BLOCK_SIZE * i;
}
}
draw() {
for (var i = 0; i < this.size; i++) {
if (this.blocks[i].show) {
g.drawRect({x: this.blocks[i].x, y: this.y, w: BLOCK_SIZE, h: BLOCK_SIZE});
}
}
}
}

function init() {
Bangle.setLCDPower(1);
g.setTheme({bg:"#000", fg:"#fff", dark:true}).clear();
setInterval(update, TICKRATE);
setWatch(input_pressed, BTN);
var test = new Row(START_X, START_Y, length, 1, true);
rows.push(test);
}

function update() {
"ram"
if (playing) {
g.clear(reset);
rows[rows.length - 1].update();
rows.forEach(row => row.draw());
}
}

function resetGame() {
playing = true;
rows = [];
length = START_LENGTH;
var test = new Row(START_X, START_Y, length, 1, true);
rows.push(test);
update();
}

function lose() {
print("lose");
g.clear(reset);
E.showMessage("YOU LOSE!");
playing = false;
setWatch(resetGame, BTN, {repeat:0,debounce:50,edge:"rising"});
}

function win() {
playing = false;
setWatch(resetGame, BTN, {repeat:0,debounce:50,edge:"rising"});
g.clear(reset);
E.showMessage("YOU WIN!");
}

function collapse() {
for (var i = 0; i < rows[rows.length - 1].blocks.length; i++) {
for (var j = 0; j < rows[rows.length -2].blocks.length; j++) {
if (rows[rows.length - 1].blocks[i].x === rows[rows.length - 2].blocks[j].x) {
if (rows[rows.length - 2].blocks[j].match === true)
rows[rows.length - 1].blocks[i].match = true;
}
}
}
for (var y = 0; y < rows[rows.length - 1].blocks.length; y++) {
if (rows[rows.length - 1].blocks[y].match === false) {
length -= 1;
if (length < 1) {
lose();
playing = false;
}
rows[rows.length - 1].blocks[y].show = false;
}
}
}

function input_pressed() {
setWatch(input_pressed, BTN);
if (playing) {
if (rows.length > 1) {
collapse();
if (rows[rows.length - 1].y === -1) {
win();
}
}
var r = new Row(GAMEBOARD_X + Math.round(length/2) * BLOCK_SIZE, rows[rows.length - 1].y - BLOCK_SIZE, length, 1, false);
rows.push(r);
}
}

init();
update();
Binary file added apps/stacker/app.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
14 changes: 14 additions & 0 deletions apps/stacker/metadata.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{ "id": "stacker",
"name": "Stacker",
"shortName":"Stacker",
"version":"0.01",
"description": "Game of Stacking",
"icon": "app.png",
"tags": "game",
"supports" : ["BANGLEJS2"],
"readme": "README.md",
"storage": [
{"name":"stacker.app.js","url":"app.js"},
{"name":"stacker.img","url":"app-icon.js","evaluate":true}
]
}

0 comments on commit 311f12c

Please sign in to comment.