1
0
Fork 0

Bouncing DVD logo app

master
Daniele 2022-06-17 21:58:14 +02:00 committed by TrinTragula
parent 3bddcd402d
commit f1d5d9025e
7 changed files with 150 additions and 0 deletions

1
apps/dvdbounce/ChangeLog Normal file
View File

@ -0,0 +1 @@
0.01: Created the app. The logo bounces and buzz when it hits the angles.

9
apps/dvdbounce/README.md Normal file
View File

@ -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.
![Gif of the DVD logo bouncing around](screenshot.gif)
## Creator
I'm [TrinTragula](https://github.com/TrinTragula) on Github. Feel free to reach me.

View File

@ -0,0 +1 @@
require("heatshrink").decompress(atob("mEwwhC/AH4A/AH4A/ACWIAA4MJwAXPhALKC5AlCBZYADE4gXELQ4SDC4gCBC4IDCAwYTEBAghCBYYCEC5YUFAooOIBBAKDMwwIFCwQIDNIZtGTRANEEIiyMVYrYHLIq0GQA4OGABIPPAA77GC8CDGABAfFBAbpCAIIfCAQqmJhAXDhB4CCIMIEgIYETAoaCC5zYHIIRQDDATAKPJasWAH4A/AH4A/AE4"))

View File

@ -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

View File

@ -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