diff --git a/apps/invader/ChangeLog b/apps/invader/ChangeLog new file mode 100644 index 000000000..5560f00bc --- /dev/null +++ b/apps/invader/ChangeLog @@ -0,0 +1 @@ +0.01: New App! diff --git a/apps/invader/README.md b/apps/invader/README.md new file mode 100644 index 000000000..dc139bc9a --- /dev/null +++ b/apps/invader/README.md @@ -0,0 +1,25 @@ +# App Name + +Describe the app... + +Add screen shots (if possible) to the app folder and link then into this file with ![](.png) + +## Usage + +Describe how to use it + +## Features + +Name the function + +## Controls + +Name the buttons and what they are used for + +## Requests + +Name who should be contacted for support/update requests + +## Creator + +Your name diff --git a/apps/invader/app-icon.js b/apps/invader/app-icon.js new file mode 100644 index 000000000..dc7003c84 --- /dev/null +++ b/apps/invader/app-icon.js @@ -0,0 +1 @@ +require("heatshrink").decompress(atob("mEwhHXAH4A/AH4A/AH4AYgAACC/4X/C/YbTFbYv/F/4rTAC4v/F/4vfC5YnPGaYv/F/4vLc7b3TF/4v/F/4v/F/4vTA5YAPE64v/F/4fTa55DXF/4v/AH4A/AH4A/AH4A/AHIA==")) diff --git a/apps/invader/app.js b/apps/invader/app.js new file mode 100644 index 000000000..aabc0022a --- /dev/null +++ b/apps/invader/app.js @@ -0,0 +1,110 @@ +// Brian Kumanchik +// Started 05-25-22 +// My Invader Demo, for Bangle.js 2, written JavaScript - using Espruino Web IDE + + + +// - variables ----------------------------------------- +// invader variables +var inv_x = 77; +var inv_y = 20; + +// turret variables +var tur_x = 77; +var tur_y = 138; + +// misc variables +var score = 999; +var lives = 3; +var game_over = false; + +// input(screen controller) variables +var BTNL, BTNR, BTNF; +var tap = {}; +// use tapping on screen for left and right +Bangle.on('drag',e=>tap=e); +BTNL = { read : _=>tap.b && tap.x < 88 && tap.y > 88}; +BTNR = { read : _=>tap.b && tap.x > 88 && tap.y > 88}; +BTNF = { read : _=>tap.b && tap.x > 88 && tap.y < 88}; + + + +// - sprites ------------------------------------------- +// invader sprites +var invader_a = + require("heatshrink").decompress(atob("kEgwkBiMRgACBAAQFFBJIPJBQgOKB55MGB64JCBoYQIB5yOKB+qvIA6pxHX5YPOAH4A/AH4A8A==")); +var invader_b = + require("heatshrink").decompress(atob("kEgxH+AAYJBAwgLQCaYfPB4oVHBpofnSpofvCY4HND9oAPD9IhTDpYfhd6IftN6IPtAH4A/AH4A/AH4A/AH4A9A=")); +var boom = + require("heatshrink").decompress(atob("kEgxH+AH4AFJYIHND9YTFAoYJJD9YRNMLKhbX/IRBV6JvND7p//f/4RHAoYJJD9a//AH4A/AH4A/AH4A9A==")); +var inv_shot = + require("heatshrink").decompress(atob("kEgxH+AH4A/ABaRBD/pB/Hv69/IP4A/AH4A/AH4A/AH4A/AH4AzA")); + +// turret sprites +var turret = + require("heatshrink").decompress(atob("kEgxH+AH4A/AH4A/AH4A/AH4A/ABcAgAf7DoIADD/4fxC4oAPD84dVEJIf/D/4f/D74=")); +var tur_exp_a = + require("heatshrink").decompress(atob("kEgxH+AH4A/AH4A/AH4A/AH4A/AAcAgATdD7YbJBJYLFAoYffDKqLXD6qlVB86lHLYoFDS5offA5YbRD8YZHABLbRD7aZLD5IlJD7YA=")); +var tur_exp_b = + require("heatshrink").decompress(atob("kEgxH+AH4A/AH4A/AH4A/AH4A/AAcAgATdD7YbJBJYLFAoYffDKqLXD6qlVB86lHLYoFDS5offA5YbRD8YZHABLbRD7aZLD5IlJD7YA=")); +var shot = + require("heatshrink").decompress(atob("kEgxH+AH4A/AH4A/ABcAgAf/D/4f9AH4A/AH4A/AH4A/AH4A/AGY")); + + + +// - setup stuff --------------------------------------- +function gameStart() { + setInterval(onFrame, 50); +} + + + +// - main loop ----------------------------------------- +function onFrame() { + // if not game over + if(game_over == false) { + g.clear(); + + + // check input (screen presses) + if(BTNL.read()) { + tur_x -= 5; + } + else if(BTNR.read()) { + tur_x += 5; + } + else if(BTNF.read()) { + tur_y -= 5; + } + + + // - draw sprites ---------------------------------- + // draw invader sprites + g.drawImage(invader_a, inv_x, inv_y); + //g.drawImage(invader_b, inv_x + 30, inv_y); + //g.drawImage(boom, inv_x + 60, inv_y); + //g.drawImage(inv_shot, inv_x - 30, inv_y); + + // draw turret sprites + g.drawImage(turret, tur_x, tur_y); + //g.drawImage(tur_exp_a, tur_x + 30, tur_y); + //g.drawImage(tur_exp_b, tur_x + 60, tur_y); + //g.drawImage(shot, tur_x - 30, tur_y); + + + // - draw text ------------------------------------- + g.setFont("4x6", 2); + g.setColor(0,0,0); + g.drawString("SCORE:" + score ,5,5); // + g.drawString("LIVES:" + lives ,117,5); // + + + g.flip(); + } +} + + + +gameStart(); + + diff --git a/apps/invader/app.png b/apps/invader/app.png new file mode 100644 index 000000000..3b9f82205 Binary files /dev/null and b/apps/invader/app.png differ diff --git a/apps/invader/metadata.json b/apps/invader/metadata.json new file mode 100644 index 000000000..e211ac3f6 --- /dev/null +++ b/apps/invader/metadata.json @@ -0,0 +1,14 @@ +{ "id": "invader", + "name": "Invader", + "shortName":"Invader", + "version":"0.01", + "description": "A Space Invader game-like demo", + "icon": "app.png", + "tags": "", + "supports" : ["BANGLEJS2"], + "readme": "README.md", + "storage": [ + {"name":"invader.app.js","url":"app.js"}, + {"name":"invader.img","url":"app-icon.js","evaluate":true} + ] +} diff --git a/apps/invader/screenshot.png b/apps/invader/screenshot.png new file mode 100644 index 000000000..ae936f6c7 Binary files /dev/null and b/apps/invader/screenshot.png differ