mirror of https://github.com/espruino/BangleApps
Bouncing DVD logo app
parent
3bddcd402d
commit
f1d5d9025e
|
@ -0,0 +1 @@
|
||||||
|
0.01: Created the app. The logo bounces and buzz when it hits the angles.
|
|
@ -0,0 +1,9 @@
|
||||||
|
# Bouncing DVD logo
|
||||||
|
|
||||||
|
Have you ever wanted to admire the bouncing DVD logo on your watch? Now you can! Let's hope it touches an angle.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## Creator
|
||||||
|
|
||||||
|
I'm [TrinTragula](https://github.com/TrinTragula) on Github. Feel free to reach me.
|
|
@ -0,0 +1 @@
|
||||||
|
require("heatshrink").decompress(atob("mEwwhC/AH4A/AH4A/ACWIAA4MJwAXPhALKC5AlCBZYADE4gXELQ4SDC4gCBC4IDCAwYTEBAghCBYYCEC5YUFAooOIBBAKDMwwIFCwQIDNIZtGTRANEEIiyMVYrYHLIq0GQA4OGABIPPAA77GC8CDGABAfFBAbpCAIIfCAQqmJhAXDhB4CCIMIEgIYETAoaCC5zYHIIRQDDATAKPJasWAH4A/AH4A/AE4"))
|
|
@ -0,0 +1,108 @@
|
||||||
|
// The DVD logo
|
||||||
|
var dvdLogo = require("heatshrink").decompress(atob("3dTwIFC/4AG/ALCgYJEwAcDj4XHBgYJF4AJCg4WH8AMCn4KFF4YWH/wLCh4KJIpA7CgIKG+BnHOg1/BYxGCCw4LDHQ/8IpQ6CQBBRBIpBpDBY4uCKA6jDUQy8FTIn3EQYIBGYSQDBYTVF/x0DKITMGFwh4D96jDKILuDDoSvDEAn9AQIeDB4glCwA5ELwW/FIRNB/x2BVQSvDHIgIB+ZvCNwWPOwZ7DAYKEFDwJoBAYPhHgYeC8ADCP4QEB85YCEQRFELoIqBBA5oFL4SMEwBFEBAWfDwQFB4K1EJoPwIooIB+InCHIQ8EOgYIHA4PAIQP8IogqCBYQIFw4TBAoRICIoQiB/AaDBAfwJAOAUwTrEFQZFHAQPwCYPwCIIxBWIZFIwICBSIIKBIo4IHFYXgSwRFKBARFCFYLlC8DDCRZTaDOIPPHgngaIhFFBoQfB/YhCIojRDBAg/B/gaCGYRFEHgaUED4IEBD4JBDIAIDBLgQEBIoYbC4AMCHAQcBG4IbCAgJFDCQRlBJIIzCIogJCBAgWCD4IICHARFDCwQIEIAY7DGYRmBEAIWCBAJOCNwYfBPAQSBEIWDMog8DAAQfBUYYzEAATkCBAq+CGgQzEYQgIGD4Q3CGYJnDKYhFGCwLtEVAjQDIow2BawY8HNQQIFCwR0CfYgWFBAoWDEAJ5CIogWCIooHCEAR5CJQQWFIoYPCOgg0BHgiJBIooHDUYaCCIoRLCABl/CB4AFg5MFACBNGAB8fQYYARgL/CACc/CysHLisAuAWVhgWVgL/BCyn/WyX/AAx4Mv4VHAARLJFZAAEbA5VBABwWFh4WPJAs/CZoODOA3A/8H/k//BNBK4N/AQQPB/wWF/kf4P/w4jBg4+BKIMAgYuC/BEF4P4n/w//gEIPwCYJYBCAYLBT4f4n0P/0f/k+g/+FoPwn4uDHQYACwZFB4ZHB8A2BKAQYBCAXwW4nwuF//BCBFgJ3CwZ/BCAR1BUIkEJYJHCFgINB+F/GgIAC4BLENgXhI4J5B8BfCI4KMEFwY0BKoK6BvwSDYoIoDCAIuE8APBXQMPwJaC/kPDALqEGgf8NAK6NAoLpDTYS6CCAKCCAoK+BCwhYBMYQiBXQOALQQ2BAQQWFXggAMGoIAECx6gBAArVEABJDDAAhQDABCTBABIYJ4AVKAAbCDChYA="));
|
||||||
|
|
||||||
|
// Screen width
|
||||||
|
const WIDTH = g.getWidth();
|
||||||
|
// Screen height
|
||||||
|
const HEIGHT = g.getHeight();
|
||||||
|
// dvd logo image width
|
||||||
|
const IMG_WIDTH = 94;
|
||||||
|
/// dvd logo image height
|
||||||
|
const IMG_HEIGHT = 42;
|
||||||
|
|
||||||
|
// Assign a random X and Y initial speed between 1.5 and 1
|
||||||
|
var speedX = 1.5 - Math.random() / 2;
|
||||||
|
var speedY = 1.5 - Math.random() / 2;
|
||||||
|
// The logo X and Y position
|
||||||
|
var posX = 0;
|
||||||
|
var posY = 0;
|
||||||
|
|
||||||
|
// The current logo color
|
||||||
|
var currentColor = "#ff00ff";
|
||||||
|
|
||||||
|
// Get a random value between "ff" and "00"
|
||||||
|
function getHexColor() {
|
||||||
|
if (Math.round(Math.random())) {
|
||||||
|
return "ff";
|
||||||
|
} else {
|
||||||
|
return "00";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get a new 8 bit color
|
||||||
|
function getNewColor() {
|
||||||
|
return "#" + getHexColor() + getHexColor() + getHexColor();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Change the dvd logo color on impact
|
||||||
|
// Only allow colors different from the current one
|
||||||
|
// and different from the bg
|
||||||
|
function changeColor() {
|
||||||
|
var newColor = getNewColor();
|
||||||
|
while (newColor == currentColor || newColor == "#000000") {
|
||||||
|
newColor = getNewColor();
|
||||||
|
}
|
||||||
|
currentColor = newColor;
|
||||||
|
g.setColor(newColor);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Draw the logo
|
||||||
|
function draw() {
|
||||||
|
// Move it
|
||||||
|
posX += speedX;
|
||||||
|
posY += speedY;
|
||||||
|
|
||||||
|
var collisions = 0;
|
||||||
|
// Collision detection
|
||||||
|
if (posX <= 0) {
|
||||||
|
speedX = -speedX;
|
||||||
|
posX = 0;
|
||||||
|
collisions++;
|
||||||
|
}
|
||||||
|
if (posY <= 0) {
|
||||||
|
speedY = -speedY;
|
||||||
|
posY = 0;
|
||||||
|
collisions++;
|
||||||
|
}
|
||||||
|
if (posX >= (WIDTH - IMG_WIDTH)) {
|
||||||
|
speedX = -speedX;
|
||||||
|
posX = WIDTH - IMG_WIDTH;
|
||||||
|
collisions++;
|
||||||
|
}
|
||||||
|
if (posY >= (HEIGHT - IMG_HEIGHT)) {
|
||||||
|
speedY = -speedY;
|
||||||
|
posY = HEIGHT - IMG_HEIGHT;
|
||||||
|
collisions++;
|
||||||
|
}
|
||||||
|
|
||||||
|
// If we detected 2 collisions, we touched an angle, HURRAY!
|
||||||
|
if (collisions > 1) {
|
||||||
|
Bangle.buzz();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Change logo color on collision
|
||||||
|
if (collisions > 0) {
|
||||||
|
changeColor();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Actually draw the logo
|
||||||
|
g.clear();
|
||||||
|
g.drawImage(dvdLogo, posX, posY, {
|
||||||
|
scale: 0.5
|
||||||
|
});
|
||||||
|
setTimeout(function () {
|
||||||
|
draw();
|
||||||
|
}, 15);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set the background to black
|
||||||
|
g.setBgColor(0, 0, 0);
|
||||||
|
// Start from purple
|
||||||
|
g.setColor(currentColor);
|
||||||
|
// Clear the screen
|
||||||
|
g.clear();
|
||||||
|
// Start drawing
|
||||||
|
draw();
|
||||||
|
|
||||||
|
// Exit on button press
|
||||||
|
setWatch(Bangle.showLauncher, BTN, { repeat: false, edge: "falling" });
|
Binary file not shown.
After Width: | Height: | Size: 1.3 KiB |
|
@ -0,0 +1,31 @@
|
||||||
|
{
|
||||||
|
"id": "dvdbounce",
|
||||||
|
"name": "Bouncing DVD logo",
|
||||||
|
"shortName": "Bouncing DVD",
|
||||||
|
"version": "0.01",
|
||||||
|
"description": "Have you ever wanted to admire the bouncing DVD logo on your watch? Now you can! Let's hope it touches an angle.",
|
||||||
|
"icon": "dvdbounce.png",
|
||||||
|
"tags": "game",
|
||||||
|
"supports": [
|
||||||
|
"BANGLEJS",
|
||||||
|
"BANGLEJS2"
|
||||||
|
],
|
||||||
|
"readme": "README.md",
|
||||||
|
"allow_emulator": true,
|
||||||
|
"storage": [
|
||||||
|
{
|
||||||
|
"name": "dvdbounce.app.js",
|
||||||
|
"url": "dvdbounce.app.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "dvdbounce.img",
|
||||||
|
"url": "dvdbounce-icon.js",
|
||||||
|
"evaluate": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"screenshots": [
|
||||||
|
{
|
||||||
|
"url": "screenshot.gif"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
Binary file not shown.
After Width: | Height: | Size: 116 KiB |
Loading…
Reference in New Issue