From f8fc83424e8d854b3b018c0d8961ec950b3df7df Mon Sep 17 00:00:00 2001 From: Benjamin Kraft Date: Sun, 12 Mar 2023 13:49:52 +0100 Subject: [PATCH] Init --- .gitignore | 3 + public/index.html | 244 +++++++++++++++++++ public/pictures/favicon.ico | Bin 0 -> 318 bytes public/scripts/Level.js | 379 +++++++++++++++++++++++++++++ public/scripts/Main.js | 116 +++++++++ public/scripts/Objects.js | 76 ++++++ public/scripts/Stats.js | 69 ++++++ public/scripts/Switcher.js | 168 +++++++++++++ public/scripts/WindowEvents.js | 61 +++++ public/scripts/lib/BenjoLibrary.js | 354 +++++++++++++++++++++++++++ public/scripts/sketch.js | 173 +++++++++++++ public/stylesheets/styles.css | 290 ++++++++++++++++++++++ public/thumbnail.png | Bin 0 -> 102710 bytes 13 files changed, 1933 insertions(+) create mode 100644 .gitignore create mode 100644 public/index.html create mode 100644 public/pictures/favicon.ico create mode 100644 public/scripts/Level.js create mode 100644 public/scripts/Main.js create mode 100644 public/scripts/Objects.js create mode 100644 public/scripts/Stats.js create mode 100644 public/scripts/Switcher.js create mode 100644 public/scripts/WindowEvents.js create mode 100644 public/scripts/lib/BenjoLibrary.js create mode 100644 public/scripts/sketch.js create mode 100644 public/stylesheets/styles.css create mode 100644 public/thumbnail.png diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a25729d --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +.idea +.env +node_modules diff --git a/public/index.html b/public/index.html new file mode 100644 index 0000000..923b88d --- /dev/null +++ b/public/index.html @@ -0,0 +1,244 @@ + + + + + + + + + + + + + + + + Bricks v3.1 JS + + +
+ +
+ Level: + + + +
+
+
+ + + + + + + + + +
Gesamtspielzeit:
Gesamtanzahl Blöcke:
+ + + + + + +
BlöckeLevelRekordzeit
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
Start / Stop:SPACE
Bewegen:← →
Neustart:SHIFT + R
Daten löschen:SHIFT + D
Interface Aus/An:ESC / TAB
+ +
+
+
+
+ +
+
+ +
+
+
+

Anleitung Bricks v3.1

+
+

Über das Spiel:

+

+ Die Aufgabe in dem Spiel besteht darin, jeden farbigen Block auf dem Spielfeld + mithilfe des Paddleboards zu zerstören! + Spezielle Items können helfen...oder nicht :D +

+

+ Alle deine Statistiken und Fortschritte werden in Cookies gespeichert, + also stelle sicher, dass dein Browser Cookies zulässt und diese nicht + automatisch löscht. +

+

+ Ein Level ist gewonnen wenn alle farbigen Blöcke zerstört wurden + und es ist verloren wenn alle Bälle aus dem Spielfeld verschwinden. Aber keine Sorge, + du hast eine unendliche Anzahl an Zügen :)
+ Jedes mal, wenn du ein Level gewinnst, bist du in der Lage das Nächsthöhere zu starten. +

+

Gameplay → Blöcke:

+

+ Bis jetzt gibt es 9 verschiedene Arten von Blöcken: +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
1Dunkelgrün
2Hellgrün
3Hellblau
4Dunkelblau
5Violett
6Rot
7Orange
8Gelb
(9)Grau
+

+ Jeder Treffer auf einen Block verringert dessen Status um 1, + bis dieser 0 ist, denn dann ist der Block "tot" und verschwindet. +
+ Die grauen Blöcke mit dem Wert 9 bzw. -1 sind eine Ausnahme, da sie unzerstörbar sind. +

+

Gameplay → Items:

+

+ Ab und zu entsteht ein Item, nachdem ein Block zerstört wurde, um + es aufzusammeln, benutzt du ganz einfach dein Paddleboard - + Deine Bälle können sie nicht aufsammeln. + Je höher dein Level, desto häufiger entstehen Items, du wirst sie + anfangs also nur sehr selten antreffen. +

+

+ Hier sind alle Items gelistet: +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Ball→ Boost
Paddle→ Boost
Ball→ Slow
Paddle→ Slow
Ball→ Creator
Brick→ Repair
+

+ Ein Boost gibt dem Objekt einen permanenten Geschwindigkeitsschub, + während ein Slow das Gegenteil verursacht.
+ Der Ball-Creator fügt dem Spiel einen neuen Ball hinzu. +

+

+ Pass auf bei dem Repair-Item, + denn das macht jeden Block im aktuellen Spiel + eine Stufe stärker. +

+

Weitere Informationen:

+

+ Dieses Spiel wurde nicht fürs Handy programmiert, dort sind viele Bugs anzutreffen. + Alle nötigen Hotkeys sind links in der Info-Box aufgelistet. +

+

+ Ich benutze für dieses Spiel JavaScript in Kombination mit der Processing + Library p5 von Lauren McCarthy und der sehr nützlichen auf HTML-DOM arbeitenden Library jQuery. +

+

Changelog:

+

+ Version 3.0:
+ Erste eigene Web-Version von "Bricks" +

+

+ Version 3.1:
+ Die ersten 5 Level hinzugefügt. Viel Spaß! +

+

+ Erstellt und veröffentlicht von BenjoCraeft,
+ Gamer, Programmierer +

+

+ Schließe diese Box mit ESC +

+
+
+
+ + \ No newline at end of file diff --git a/public/pictures/favicon.ico b/public/pictures/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..e5e61128cae0025229fcfe88dce557ddb572ac2f GIT binary patch literal 318 zcmZQzU<5(|0RbS%!l1#(z#zuJz@P!d0zj+)#2|4HXaJKC0wf0mf(-u|{{R0E 0) brickCounter++; + + //Select brick color based on his state + var fillColor = colorSwitch(b.state); + if (!fillColor) continue; + else fill(fillColor); + + //Drawing + rect(b.x, b.y, b.width, b.height); + } + + //If no brick is "living" game is won + if (brickCounter == 0) this.gameWon(); //Deactivate in TestMode + + //Draw downfalling items + for (var i of this.items){ + var sw = i.radius * 0.2; + + fill(0); + stroke(0); + strokeWeight(0); + ellipse(i.x, i.y, i.radius * 2, i.radius * 2); + strokeWeight(sw); + + var rectX = i.x - i.radius * sin(5 * PI / 8) + sw; + var rectY = i.y + i.radius * cos(5 * PI / 8) + sw; + var rectW = i.radius * 2 * sin(5 * PI / 8) - sw * 2; + var rectH = i.radius * 2 * abs(cos(5 * PI / 8)) - sw * 2; + + var lineLength = i.radius * 0.5; + + switch(i.item){ + case FastBall: + fill("#00FF00"); + strokeWeight(0); + ellipse(i.x, i.y, i.radius * 1.25, i.radius * 1.25); + break; + case FastPaddle: + fill("#00FF00"); + strokeWeight(0); + rect(rectX, rectY, rectW, rectH); + break; + case SlowBall: + fill("#FF0000"); + strokeWeight(0); + ellipse(i.x, i.y, i.radius * 1.25, i.radius * 1.25); + break; + case SlowPaddle: + fill("#FF0000"); + strokeWeight(0); + rect(rectX, rectY, rectW, rectH); + break; + case CreateBall: + strokeWeight(sw * 2); + stroke("#00FF00"); + line(i.x - lineLength, i.y, i.x + lineLength, i.y); + line(i.x, i.y - lineLength, i.x, i.y + lineLength); + break; + case UpgradeBricks: + strokeWeight(sw * 2); + stroke("#FF0000"); + line(i.x - lineLength, i.y, i.x + lineLength, i.y); + line(i.x, i.y - lineLength, i.x, i.y + lineLength); + break; + } + } + + //Balls and paddleboard are black + fill(0); + stroke(0); + strokeWeight(strokePadding * 2); + + var p = this.paddle; + + //Draw paddleboard + rect(p.x, p.y, p.width, p.height); + + //Ball doesnt need rounded corners + strokeWeight(0); + + //Draw every ball + for (var b of this.balls) ellipse(b.x, b.y, b.radius * 2, b.radius * 2); + + //Break if game isnt running + if (this.isPaused || !this.isStarted) return; + + //Check collision and other situations of balls + for(var ball1 of this.balls){ + + //Check if ball flew away + if (ball1.isLost()) this.toBeErased.push(ball1); + + //Check collision with frameborders + for (var fb of this.frameBorders){ + var collision = collisionDetection(ball1, fb); + if (collision.isTouching) performCollision(ball1, fb, collision); + } + + //Check collision with paddleboard + var collision = collisionDetection(ball1, p); + if (collision.isTouching) performCollision(ball1, p, collision); + + //Check collision with bricks + for (var brick of this.bricks){ + if (brick.state == 0) continue; + var collision = collisionDetection(ball1, brick); + if (collision.isTouching){ + performCollision(ball1, brick, collision); + if (brick.state > 0) brick.state--; + if (floor(random(this.itemFrequency + 1)) % this.itemFrequency == 0 && brick.state == 0) this.createItem(brick); + if (brick.state == 0) this.totalBricksDestroyed++; + setTotalBricksDestroyed(level, this.totalBricksDestroyed); + } + } + + //Check collision with other balls + for (var ball2 of this.balls){ + if (ball1 == ball2) continue; + var collision = collisionDetection(ball1, ball2); + if (collision.isTouching) performCollision(ball1, ball2, collision); + } + + //Check if velocites go to NaN due to mistakes + if (isNaN(ball1.v.x) || isNaN(ball1.v.y)){ + ball1.x = p.x + p.width / 2; + ball1.y = p.y - ball1.radius - strokePadding * 2; + ball1.v.x = 0; + ball1.v.y = ball1.v.mag; + } + } + + //Checkings for items + for (var item of this.items){ + + var index = this.items.indexOf(item); + + //Check collision with paddleboard + var collision = collisionDetection(item, p); + if (collision.isTouching){ + this.items.splice(index, 1); + switch (item.item){ + case FastBall: + for (var b of this.balls) for (var v in b.v) b.v[v] *= 1.25; + break; + case FastPaddle: + p.v *= 1.25; + break; + case SlowBall: + for (var b of this.balls) for (var v in b.v) b.v[v] *= 0.75; + break; + case SlowPaddle: + p.v *= 0.75; + break; + case CreateBall: + var p = this.paddle; + var radius = (wWidth * 0.02 + wHeight * 0.02) / 2 * random(0.75, 1.25); + var x = p.x + p.width / 2; + var y = p.y - (radius + strokePadding); + var v = (wWidth * 0.01 + wHeight * 0.01) / 3; + var vx = 0; + var vy = v; + this.createBall(x, y, radius, v, vx, vy); + break; + case UpgradeBricks: + for (var b of this.bricks) if (b.state > 0 && b.state < stateCount - 1) b.state++; + break; + } + } + if (item.y - item.radius > wHeight){ + this.items.splice(index, 1); + break; + } + } + + + //Erase all balls out of screen + for (var ball of this.toBeErased){ + var index = this.balls.indexOf(ball); + this.balls.splice(index, 1); + } + this.toBeErased = []; + + //Game is lost of no balls are in there + if (this.balls.length == 0) this.gameLost(); + + //Break if game isnt running once more because previous checkings could've caused a paused game + if (!this.isStarted || this.isPaused) return; + + //Finally move objects forward + for (var b of this.balls) b.move(); + for (var i of this.items) i.move(); + p.move(); + } + + + this.createItem = function(b){ + + var item = floor(random(itemCount)) + 1; + + var bx = b.x; + var by = b.y; + var bw = b.width; + var bh = b.height; + + var x = bx + bw / 2; + var y = by + bh / 2; + var radius = (wHeight + wWidth) / 2 * 0.02; + + this.items.push(new Item(x, y, radius, random(1, 6), item)); + } + + this.createBall = function(x, y, r, v, vx, vy){ + + var b = new Ball(); + + b.x = x; + b.y = y; + b.radius = r; + b.v = {mag: v, x: vx, y: vy}; + + this.balls.push(b); + } + + + this.gameLost = function(){ + this.isPaused = true; + this.isLost = true; + if (!infoIsOpen) openInfo(); + } + + this.gameWon = function(){ + this.isPaused = true; + this.isWon = true; + if (this.levelNum - 1 == levelReached){ + levelReached++; + setCookie("levelReached", String(levelReached), 10); + checkLevelButtons(this.levelNum); + } + if (this.currentTime < getRecordTime(this.levelNum)){ + setRecordTime(this.levelNum, this.currentTime); + } + if (!infoIsOpen) openInfo(); + } + + this.restart = function(){this.setDefault();} + + this.pause = function(paused){ + if (this.isWon || this.isLost) return; + if (paused){ + pauseAnimation(true); + this.isPaused = true; + } else { + pauseAnimation(false); + this.isPaused = false; + if (infoIsOpen) closeInfo(); + } + } + this.start = function(){ + this.isStarted = true; + if (infoIsOpen) closeInfo(); + } + + this.lastTime = new Date().getTime(); + + this.renderTime = function(){ + var d = new Date().getTime(); + var passed = d - this.lastTime; + this.lastTime = d; + + if (!this.isPaused && this.isStarted){ + this.currentTime += passed; + setTotalTimePlayed(getTotalTimePlayed() + passed); + } + + var timeString = toTimeString(this.currentTime); + + $("#timeDiv span").html(timeString); + } +} \ No newline at end of file diff --git a/public/scripts/Main.js b/public/scripts/Main.js new file mode 100644 index 0000000..e3fd5a6 --- /dev/null +++ b/public/scripts/Main.js @@ -0,0 +1,116 @@ +var currentGame = null; +var infoIsMoving = false; +var infoIsOpen = true; +var instructionsOpen = false; +var testMode = false; +var animationDuration = 300; + + +function addLevel(HTMLInputElement, add){ + HTMLInputElement.blur(); + var currentLevelNum = parseInt($("#currentLevel").html()); + var newLevelNum = currentLevelNum + add; + $("#currentLevel").html(newLevelNum); + checkLevelButtons(newLevelNum); + currentGame = new Level(newLevelNum); +} + +function setRekordInfo(){ + for (var i = 1; i <= levelCount; i++){ + + var bricks = getTotalBricksDestroyed(i); + + var time = getRecordTime(i); + time = time == Infinity ? "---" : toTimeString(time); + + $("#rekordInfo table:eq(1) tr:eq(" + i + ") td:eq(0)").text(bricks); + $("#rekordInfo table:eq(1) tr:eq(" + i + ") td:eq(2)").text(time); + } + + var time = toTimeString(getTotalTimePlayed(), true); + var bricks = getTotalBricksDestroyedGlobal(); + + $("#totalTimePlayed").text(time); + $("#totalBricksDestroyed").text(bricks); +} + +function checkLevelButtons(level) { + $("#levelUp").removeAttr("disabled"); + $("#levelUp").css("cursor", "pointer"); + $("#levelDown").removeAttr("disabled"); + $("#levelDown").css("cursor", "pointer"); + if (level == levelCount || level == levelReached + 1){ + $("#levelUp").attr("disabled", "disabled"); + $("#levelUp").css("cursor", "auto"); + } + if (level == 1){ + $("#levelDown").attr("disabled", "disabled"); + $("#levelDown").css("cursor", "auto"); + } +} + +function setInfoStyles(){ + $("#levelLabel, #currentLevel").css("font-size", String($("#levelSelector").outerHeight() * 0.25) + "px"); + $("#levelUp, #levelDown").css("font-size", String($("#levelSelector").outerHeight() * 0.2) + "px"); + $("#closeButton").css({ + "width": String($("#closeButton").outerHeight()) + "px", + "font-size": String($("#closeButton").outerHeight() * 0.6) + "px" + }); + $("#controlsInfo table tr td").css("font-size", String($("#controlsInfo table tr td").innerHeight() * 0.3) + "px"); +} + +function closeInfo(HTMLInputElement){ + try {HTMLInputElement.blur();}catch(e){} + if (infoIsMoving) return; + infoIsMoving = true; + $("#info *").hide(); + $("#info").animate({ + width: 0 + }, animationDuration, function(){ + $("#openButton").show(); + $("#openButton").animate({ + width: 60 + }, animationDuration, function(){ + infoIsMoving = false; + infoIsOpen = false; + }); + }); +} + +function openInfo(HTMLInputElement){ + try {HTMLInputElement.blur();} catch(e) {} + if (infoIsMoving){ + return; + } + infoIsMoving = true; + $("#openButton").animate({ + width: 0 + }, animationDuration, function() { + $("#openButton").hide(); + $("#info").animate({ + width: 450 + }, animationDuration, function() { + $("#info *").show(); + infoIsMoving = false; + infoIsOpen = true; + }); + }); +} + +function pauseAnimation(paused){ + //TODO +} + +function openInstructions(){ + $("#instructions").show(); + instructionsOpen = true; +} + +function closeInstructions(){ + $("#instructions").hide(); + instructionsOpen = false; +} + +function toggleTestMode(){ + testMode = !testMode; +} \ No newline at end of file diff --git a/public/scripts/Objects.js b/public/scripts/Objects.js new file mode 100644 index 0000000..e57b485 --- /dev/null +++ b/public/scripts/Objects.js @@ -0,0 +1,76 @@ +function Paddle(){ + this.isRectangle = true; + this.isPaddle = true; + + this.move = function(){ + if (keyIsDown(LEFT_ARROW) && this.x - strokePadding > 0) this.x -= this.v; + if (keyIsDown(RIGHT_ARROW) && this.x + this.width + strokePadding < wWidth) this.x += this.v; + } +} + +var itemCount = 6; //Change if necessary + +var FastBall = 1; +var FastPaddle = 2; +var SlowBall = 3; +var SlowPaddle = 4; +var CreateBall = 5; +var UpgradeBricks = 6; +function Item(x, y, radius, v, item){ + this.isItem = true; + this.isEllipse = true; + this.x = x; + this.y = y; + this.radius = radius; + this.v = v; + this.item = item; + + this.move = function() {this.y += this.v} +} + + +function Brick(){ + this.isRectangle = true; + this.isBrick = true; +} + + +function Frameborder(x, y, width, height){ + this.x = x; + this.y = y; + this.width = width; + this.height = height; + this.isRectangle = true; + this.isFrameborder = true; + this.isBrick = false; +} + + +function Ball(){ + this.isEllipse = true; + + this.calcVelocityX = function(p, vx){ + var divider = (this.x - (p.x - this.radius)) / (p.width + this.radius * 2 + strokePadding * 4); //Number between 0 and 1 + var range = divider - 0.5; //Number between -0.5 and 0.5 + range = range * this.v.mag / 0.5; //Number between -magnitude and magnitude + range += vx; //Number between -(magnitude+abs(vx)) and magnitude+abs(vx) + newVx = range * this.v.mag / (this.v.mag + abs(vx)); //Number between -magnitude and magnitude + return newVx; + } + + this.calcVelocityY = function(){ + var vy = sqrt(pow(this.v.mag, 2) - pow(this.v.x, 2)); //Pythagoras to keep velocity constant + return vy; + } + + this.isLost = function(){ + var b = this; + if (b.y - b.radius > wHeight) return true; + return false; + } + + this.move = function(){ + this.x += this.v.x; + this.y += this.v.y; + } +} \ No newline at end of file diff --git a/public/scripts/Stats.js b/public/scripts/Stats.js new file mode 100644 index 0000000..2914395 --- /dev/null +++ b/public/scripts/Stats.js @@ -0,0 +1,69 @@ +//Only change if added more cases in LevelSwitcher +var levelCount = 5; + +//Global: Amount of reached levels +var levelReached = null; + +//Global: Erases every Cookie and starts Level 1 with 0 levelReached +function deleteMemory(){ + clearStorage(); + currentGame.totalBricksDestroyed = getTotalBricksDestroyed(currentGame.levelNum); + currentGame.recordTime = getRecordTime(currentGame.levelNum); + setRekordInfo(); + $("#currentLevel").text("1"); + checkLevelButtons(1); + currentGame = new Level(1); +} + +//Level: Returns the shortest time ever played on that level +function getRecordTime(level){ + var time = getItem("rekordTime" + level); + time = time == null ? Infinity : parseInt(time); + return time; +} + +//Global: Returns the total time played from every level +function getTotalTimePlayed(){ + var time = getItem("totalTimePlayed"); + time = time == null ? 0 : parseInt(time); + return time; +} + +//Level: Returns the total amount of destroyed bricks of that level +function getTotalBricksDestroyed(level){ + var bricks = getItem("totalBricksDestroyed" + level); + bricks = bricks == null ? 0 : parseInt(bricks); + return bricks; +} + +//Global: Returns the total global amount of destroyed bricks +function getTotalBricksDestroyedGlobal(){ + var totalBricks = 0; + for (var i = 1; i <= levelCount; i++){ + var bricks = getItem("totalBricksDestroyed" + i); + bricks = bricks == null ? 0 : parseInt(bricks); + totalBricks += bricks; + } + return totalBricks; +} + +//Level: Sets a new record time for a specific level +function setRecordTime(level, time){ + //storeItem("rekordTime" + level, String(time), 10); + time = toTimeString(time); + $("#rekordInfo table:eq(1) tr:eq(" + level + ") td:eq(2)").text(time); +} + +//Global: Sets the total time played from every level +function setTotalTimePlayed(time){ + //storeItem("totalTimePlayed", String(time), 10); + time = toTimeString(time, true); + $("#totalTimePlayed").text(time); +} + +//Level: Sets the total amount of destroyed bricks for a specific level +function setTotalBricksDestroyed(level, bricks){ + //storeItem("totalBricksDestroyed" + level, String(bricks), 10); + $("#rekordInfo table:eq(1) tr:eq(" + level + ") td:eq(0)").text(bricks); + $("#totalBricksDestroyed").text(getTotalBricksDestroyedGlobal()); +} \ No newline at end of file diff --git a/public/scripts/Switcher.js b/public/scripts/Switcher.js new file mode 100644 index 0000000..f4fbb94 --- /dev/null +++ b/public/scripts/Switcher.js @@ -0,0 +1,168 @@ +var stateCount = 9; + + +function colorSwitch(state){ + + switch (state){ + case -1: return "#373737"; //Gray - Invincible + case 0: return false; //No brick + case 1: return "#008800"; //Dark green + case 2: return "#33FF33"; //Light green + case 3: return "#99BBFF"; //Light blue + case 4: return "#0000BB"; //Dark blue + case 5: return "#AA00DD"; //Purple + case 6: return "#FF0000"; //Red + case 7: return "#FF7800"; //Orange + case 8: return "#FFFF00"; //Yellow + //Add new colors here + default: return "#373737"; + } +} + + +function tableSwitch(levelNum, level){ + + var c = 0, r = 0; + + switch (levelNum){ + case 1: + case 2: + c = 5; + r = 10; + break; + case 3: + case 4: + c = 7; + r = 12; + break; + case 5: + case 6: + c = 9; + r = 14; + break; + case 7: + case 8: + c = 11; + r = 16; + break; + case 9: + case 10: + c = 13; + r = 18; + break; + case 11: + case 12: + c = 15; + r = 20; + break; + case 13: + case 14: + c = 17; + r = 22; + break; + case 15: + case 16: + c = 19; + r = 24; + break; + case 17: + case 18: + c = 21; + r = 26; + break; + case 19: + case 20: + c = 23; + r = 28; + break; + } + return {cols: c, rows: r}; +} + +function designSwitch(levelNum, c, r){ + + var state = 0 + + switch (levelNum) { + case 1: + if (r == 3 || r == 6 || r == 9) state = 1; + break; + case 2: + if ((c == 1 || c == 3 || c == 5) && r % 2 == 0) state = 1; + break; + case 3: + if (r == 5 || r == 9){ + if (c == 4) state = -1; + else if (c == 3 || c == 5) state = 2; + else state = 1; + } + break; + case 4: + if (r == 9 && c > 2 && c < 6) state = -1; + if (r == 8 && c == 4 || r == 7 && c > 2 && c < 6 || r == 6 && c > 1 && c < 7 || r == 5 && c > 2 && c < 6 || r == 4 && c == 4) state = 2; + break; + case 5: + if (r == 1 || r == 14){ + if (c == 1 || c == 9) state = 3; + if (c == 2 || c == 3 || c == 7 || c == 8) state = 2; + if (c > 3 && c < 7) state = 1; + } + if (r == 2 || r == 13){ + if (c < 3 || c > 7) state = 2; + } + if (r == 3 || r == 12){ + if (c == 1 || c == 9) state = 2; + } + if (r > 3 && r < 12){ + if (c == 1 || c == 9) state = 1; + if (r > 6 && r < 9 && c > 3 && c < 7) state = -1; + } + break; + case 6: + + break; + case 7: + + break; + case 8: + + break; + case 9: + + break; + case 10: + + break; + case 11: + + break; + case 12: + + break; + case 13: + + break; + case 14: + + break; + case 15: + + break; + case 16: + + break; + case 17: + + break; + case 18: + + break; + case 19: + + break; + case 20: + + break; + } + return state; +} \ No newline at end of file diff --git a/public/scripts/WindowEvents.js b/public/scripts/WindowEvents.js new file mode 100644 index 0000000..dba7549 --- /dev/null +++ b/public/scripts/WindowEvents.js @@ -0,0 +1,61 @@ +window.onkeydown = function(e){ + + var key = e.keyCode ? e.keyCode : e.which; + + if (instructionsOpen){ + if (key == ESCAPE){ + closeInstructions(); + e.preventDefault(); + } + return; + } + + switch (key) { + case ESCAPE: + e.preventDefault(); + closeInfo(null); + break; + case TAB: + e.preventDefault(); + openInfo(null); + break; + case 32: //Space + e.preventDefault(); + if (currentGame.isPaused){ + currentGame.pause(false); + } else if (currentGame.isStarted && !currentGame.isPaused) { + currentGame.pause(true); + } + if (!currentGame.isStarted){ + currentGame.start(); + } + break; + case SHIFT: + e.preventDefault(); + if (keyIsDown(68)){ + //Shift + D + deleteMemory(); + } else if (keyIsDown(82)){ + //Shift + R + currentGame.restart(); + } else if (keyIsDown(78)){ + //Shift + N + toggleNotifications(); + } + break; + case 68: //D + e.preventDefault(); + if (keyIsDown(SHIFT)){ + //D + Shift + deleteMemory(); + } + break; + case 82: //R + e.preventDefault(); + if (keyIsDown(SHIFT)){ + //R + Shift + currentGame.restart(); + } + break; + } +} \ No newline at end of file diff --git a/public/scripts/lib/BenjoLibrary.js b/public/scripts/lib/BenjoLibrary.js new file mode 100644 index 0000000..4f93b91 --- /dev/null +++ b/public/scripts/lib/BenjoLibrary.js @@ -0,0 +1,354 @@ +var TOP = 1; +var RIGHT = 2 +var BOTTOM = 3; +var LEFT = 4; +var TOP_RIGHT = 5; +var BOTTOM_RIGHT = 6; +var BOTTOM_LEFT = 7; +var TOP_LEFT = 8; + +var wWidth = window.innerWidth; +var wHeight = window.innerHeight; +var oldWHeight; +var oldWWidth; + +function updateVars(){ + oldWWidth = wWidth; + oldWHeight = wHeight; + wWidth = window.innerWidth; + wHeight = window.innerHeight; +} + +function collisionDetection(obj0, obj1){ + + var sp = strokePadding; + + if (obj0.isEllipse && obj1.isRectangle){ + + //Ball + var b = obj0; + + //Rectangle + var r = obj1; + + for (var i = 0; i < TWO_PI; i += PI / 32){ + + /* Check every borderpoint of the ball beginning + at the top in clock direction up to top again */ + + // Ball Center X + var bcx = b.x; + + // Ball Center Y + var bcy = b.y; + + // Ball Border X + var bbx = b.x + sin(i) * b.radius; + + // Ball Border Y inverted because Y = 0 is the TOP of the screen + var bby = b.y - cos(i) * b.radius; + + // Rectangle Width + var rW = r.width + 2 * sp; + + // Rectangle Height + var rH = r.height + 2 * sp; + + // Rectangle Border X + var rX = r.x - sp; + + // Rectangle Border Y + var rY = r.y - sp; + + // Objects touch + if (bbx > rX && bbx < rX + rW + && bby > rY && bby < rY + rH){ + + // STRAIGHT FACES // + + //Top/Bottom touch + if (bcx > rX && bcx < rX + rW){ + + //Top touch + if (b.v.y > 0) return {isTouching: true, location: TOP}; + + //Bottom touch + if (b.v.y < 0) return {isTouching: true, location: BOTTOM}; + } + + //Left/Right touch + if (bcy > rY && bcy < rY + rH){ + + //Left touch + if (b.v.x > 0) return {isTouching: true, location: LEFT}; + + //Right touch + if (b.v.x < 0) return {isTouching: true, location: RIGHT}; + + } + + // CORNERS // + + // BOTTOM Left/Right + if (i > 0 && i <= PI / 2) return {isTouching: true, location: BOTTOM_LEFT}; + + //LEFT Bottom/Top + if (i > PI / 2 && i <= PI) return {isTouching: true, location: TOP_LEFT}; + + //TOP Left/Right + if (i > PI && i <= PI + PI / 2) return {isTouching: true, location: TOP_RIGHT}; + + //RIGHT Bottom/Top + if (i > PI + PI / 2 && i <= TWO_PI) return {isTouching: true, location: BOTTOM_RIGHT}; + } + } + + } + + if (obj0.isEllipse && obj1.isEllipse){ + + //Ball 1 + var b1 = obj0; + + //Ball 2 + var b2 = obj1; + + //Balls are close to each other + if (b1.x + b1.radius > b2.x - b2.radius + && b1.x - b1.radius < b2.x + b2.radius + && b1.y + b1.radius > b2.y - b2.radius + && b1.y - b1.radius < b2.y + b2.radius){ + + var distance = sqrt(pow(b1.x - b2.x, 2) + pow(b1.y - b2.y, 2)); + + if (distance < b1.radius + b2.radius) return {isTouching: true}; + } + } + return {isTouching: false, location: 0}; +} + +function performCollision(obj0, obj1, collision){ + if (obj0.isEllipse){ + + var ball = obj0; + + //Ball collides with frameborder + if (obj1.isFrameborder){ + switch (collision.location){ + case BOTTOM: + ball.v.y *= -1; + break; + case LEFT: + case RIGHT: + ball.v.x *= -1; + break; + } + if (testMode && collision.location == TOP) ball.v.y *= -1; + ball.move(); + } + + //Ball collides with any brick + if (obj1.isBrick){ + switch (collision.location){ + case TOP: + case BOTTOM: + ball.v.y *= -1; + ball.move(); + return; + case LEFT: + case RIGHT: + ball.v.x *= -1; + ball.move(); + return; + case TOP_LEFT: + var cornerX = obj1.x; + var cornerY = obj1.y; + break; + case TOP_RIGHT: + var cornerX = obj1.x + obj1.width; + var cornerY = obj1.y; + break; + case BOTTOM_LEFT: + var cornerX = obj1.x; + var cornerY = obj1.y + obj1.height; + break; + case BOTTOM_RIGHT: + var cornerX = obj1.x + obj1.width; + var cornerY = obj1.y + obj1.height; + break; + } + + var nx = ball.x - cornerX; + var ny = ball.y - cornerY; + var length = sqrt(nx * nx + ny * ny); + nx /= length; + ny /= length; + + var projection = ball.v.x * nx + ball.v.y * ny; + ball.v.x = ball.v.x - 2 * projection * nx; + ball.v.y = ball.v.y - 2 * projection * ny; + + ball.move(); + + } + + //Ball collides with paddleboard + if (obj1.isPaddle){ + switch (collision.location){ + case TOP: + case TOP_LEFT: + case TOP_RIGHT: + ball.v.x = ball.calcVelocityX(obj1, ball.v.x); + ball.v.y = -ball.calcVelocityY(); + ball.move(); + return; + case LEFT: + case RIGHT: + ball.v.x *= -1; + ball.move(); + return; + case BOTTOM_LEFT: + var cornerX = obj1.x; + var cornerY = obj1.y + obj1.height; + break; + case BOTTOM_RIGHT: + var cornerX = obj1.x + obj1.width; + var cornerY = obj1.y + obj1.height; + break; + } + var nx = ball.x - cornerX; + var ny = ball.y - cornerY; + var length = sqrt(nx * nx + ny * ny); + nx /= length; + ny /= length; + + var projection = ball.v.x * nx + ball.v.y * ny; + ball.v.x = ball.v.x - 2 * projection * nx; + ball.v.y = ball.v.y - 2 * projection * ny; + + ball.move(); + } + + //Ball collides with other ball + if (obj1.isEllipse){ + + //Ball 1 + var b1 = obj0; + + //Ball 2 + var b2 = obj1; + + //Set mass equal to radius of each ball + b1.mass = b1.radius; + b2.mass = b2.radius; + + //Colliding angle of ball 1 to ball 2 using arc tan of both x and y differences + var collisionAngle = atan2((b2.y - b1.y), (b2.x - b1.x)); + + //Converting directions of velocity vector of balls into angles + var d1 = atan2(b1.v.y, b1.v.x); + var d2 = atan2(b2.v.y, b2.v.x); + + //Ignoring mass effects new velocites are simply magnitude multiplied with value of angle differences + var newXspeed1 = b1.v.mag * cos(d1 - collisionAngle); + var newYspeed1 = b1.v.mag * sin(d1 - collisionAngle); + var newXspeed2 = b2.v.mag * cos(d2 - collisionAngle); + var newYspeed2 = b2.v.mag * sin(d2 - collisionAngle); + + //According to the principle of linear momentum, kinetic energy stays the same after collision, so velocities are now related to masses + var finalXspeed1 = ((b1.mass - b2.mass) * newXspeed1 + b2.mass * 2 * newXspeed2) / (b1.mass + b2.mass); + var finalYspeed1 = newYspeed1; + var finalXspeed2 = (b1.mass * 2 * newXspeed1 + (b2.mass - b1.mass) * newXspeed2) / (b1.mass + b2.mass); + var finalYspeed2 = newYspeed2; + + //Values of collisionAngle + var cosAngle = cos(collisionAngle); + var sinAngle = sin(collisionAngle); + + //To also keep velocites relative to pure collisionAngle, subtract sin*x from cos*x and add sin*y to cos*y because coordSystem has y = 0 on the top + var u1x = cosAngle * finalXspeed1 - sinAngle * finalYspeed1; + var u1y = sinAngle * finalXspeed1 + cosAngle * finalYspeed1; + var u2x = cosAngle * finalXspeed2 - sinAngle * finalYspeed2; + var u2y = sinAngle * finalXspeed2 + cosAngle * finalYspeed2; + + //Set new velocities to both balls + b1.v.x = u1x; + b1.v.y = u1y; + b2.v.x = u2x; + b2.v.y = u2y; + + //Update magnitude + b1.v.mag = sqrt(pow(b1.v.x, 2) + pow(b1.v.y, 2)); + b2.v.mag = sqrt(pow(b2.v.x, 2) + pow(b2.v.y, 2)); + + + //Move balls one vx/vy forward to avoid double inverting collision detection + b1.x += b1.v.x; + b1.y += b1.v.y; + b2.x += b2.v.x; + b2.y += b2.v.y; + } + } +} + + + +function toTimeString(time, hoursWanted){ + + var time = floor(time / 10); + + var hs = String(floor(time % 100)); + var fs = String(floor((time / 100) % 60)); + + if (hoursWanted){ + var min = String(floor(((time / 100) / 60) % 60)); + var hr = String(floor(((time / 100) / 60) / 60)); + + if (hs.length < 2) hs = "0" + hs; + if (fs.length < 2) fs = "0" + fs; + if (min.length < 2) min = "0" + min; + if (hr.length < 2) hr = "0" + hr; + + var timeString = hr + ":" + min + ":" + fs + ":" + hs; + } else { + var min = String(floor(((time / 100) / 60) % 60)); + + if (hs.length < 2) hs = "0" + hs; + if (fs.length < 2) fs = "0" + fs; + if (min.length < 2) min = "0" + min; + + var timeString = min + ":" + fs + ":" + hs; + } + + + + return timeString; +} + + +function setCookie(name, value, years){ + var expires = ""; + if (years){ + var date = new Date(); + date.setTime(date.getTime() + (years * 365 * 24 * 60 * 60 * 1000)); + expires = "; expires=" + date.toUTCString(); + } + document.cookie = name + "=" + value + expires + "; path=/"; +} + +function getCookie(name){ + var nameEQ = name + "="; + var ca = document.cookie.split(';'); + for (var i = 0; i < ca.length; i++){ + var c = ca[i]; + while (c.charAt(0) == ' ') c = c.substring(1, c.length); + if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length); + } + return null; +} + +function deleteCookies(){ + for (var i = 0; i < arguments.length; i++){ + setCookie(arguments[i], "", -1); + } +} \ No newline at end of file diff --git a/public/scripts/sketch.js b/public/scripts/sketch.js new file mode 100644 index 0000000..65cead0 --- /dev/null +++ b/public/scripts/sketch.js @@ -0,0 +1,173 @@ +var lr; + +function setup(){ + + lr = getItem("levelReached"); + lr = lr == null ? 0 : parseInt(lr); + levelReached = lr + + createCanvas(window.innerWidth, window.innerHeight); + + //Layout Setup + $("#openButton").hide(); + setInfoStyles(); + for (var i = 1; i <= levelCount; i++){ + $("#rekordInfo table:eq(1)").append("" + i + ""); + var bgColor; + var fgColor; + if (i % 2 == 0){ + bgColor = "rgba(200, 0, 0, 0.5)"; + fgColor = "#FFF"; + } + if (i % 2 != 0){ + bgColor = "rgba(0, 200, 0, 0.5)"; + fgColor = "#000"; + } + $("#rekordInfo table:eq(1) tr:eq(" + i + ")").css({ + "background-color": bgColor, + "color": fgColor + }); + } + setRekordInfo(); + + for (var i = 0; i < stateCount; i++){ + $("#colors tr:eq(" + i + ") td:eq(2)").html(""); + $("#brick" + i).attr({ + "width": String(wWidth * 0.3 * 0.6), + "height": String($("#colors").css("font-size").slice(0, 2) * 2) + }); + $("#brick" + i).css({ + "border": strokePadding * 2 + "px solid #000", + "border-radius": strokePadding * 2 + }); + var c = document.getElementById("brick" + i); + var ctx = c.getContext("2d"); + ctx.fillStyle = colorSwitch(i + 1); + ctx.fillRect(0, 0, c.width, c.height); + } + + for (var i = 0; i < itemCount; i++){ + $("#items tr:eq(" + i + ") td:eq(2)").html(""); + $("#item" + i).attr({ + "width": String(wWidth * 0.3 * 0.3), + "height": String($("#items").css("font-size").slice(0, 2) * 3) + }); + + var c = document.getElementById("item" + i); + var ctx = c.getContext("2d"); + + var ballX = c.width / 2; + var ballY = c.height / 2; + var ballR = c.height / 2; + var lw = ballR * 0.2; + + ctx.beginPath(); + ctx.fillStyle = "#000000"; + ctx.arc(ballX, ballY, ballR, 0, TWO_PI); + ctx.fill(); + ctx.closePath(); + + var rectX = ballX - ballR * sin(5 * PI / 8) + lw; + var rectY = ballY + ballR * cos(5 * PI / 8) + lw; + var rectW = ballR * 2 * sin(5 * PI / 8) - lw * 2; + var rectH = ballR * 2 * abs(cos(5 * PI / 8)) - lw * 2; + + ctx.beginPath(); + ctx.lineJoin = "round"; + switch (i + 1){ + case FastBall: + ctx.fillStyle = "#00FF00"; + ctx.arc(ballX, ballY, ballR * 0.625, 0, TWO_PI); + ctx.fill(); + break; + case FastPaddle: + ctx.strokeStyle = "#00FF00"; + ctx.fillStyle = "#00FF00"; + + ctx.moveTo(rectX, rectY); + ctx.lineTo(rectX + rectW, rectY); + ctx.lineTo(rectX + rectW, rectY + rectH); + ctx.lineTo(rectX, rectY + rectH); + ctx.lineTo(rectX, rectY); + ctx.lineTo(rectX + rectW, rectY); + ctx.lineTo(rectX, rectY); + + ctx.stroke(); + ctx.fill(); + break; + case SlowBall: + ctx.fillStyle = "#FF0000"; + ctx.arc(ballX, ballY, ballR * 0.625, 0, TWO_PI); + ctx.fill(); + break; + case SlowPaddle: + ctx.strokeStyle = "#FF0000"; + ctx.fillStyle = "#FF0000"; + + ctx.moveTo(rectX, rectY); + ctx.lineTo(rectX + rectW, rectY); + ctx.lineTo(rectX + rectW, rectY + rectH); + ctx.lineTo(rectX, rectY + rectH); + ctx.lineTo(rectX, rectY); + ctx.lineTo(rectX + rectW, rectY); + ctx.lineTo(rectX, rectY); + + ctx.stroke(); + ctx.fill(); + break; + case CreateBall: + var lineLength = ballR * 0.5; + + ctx.lineWidth = lw; + ctx.strokeStyle = "#00FF00"; + + ctx.moveTo(ballX, ballY); + ctx.lineTo(ballX + lineLength, ballY); + ctx.lineTo(ballX - lineLength, ballY); + ctx.lineTo(ballX, ballY); + + ctx.moveTo(ballX, ballY); + ctx.lineTo(ballX, ballY + lineLength); + ctx.lineTo(ballX, ballY - lineLength); + ctx.lineTo(ballX, ballY); + + ctx.stroke(); + break; + case UpgradeBricks: + var lineLength = ballR * 0.5; + + ctx.lineWidth = lw; + ctx.strokeStyle = "#FF0000"; + + ctx.moveTo(ballX, ballY); + ctx.lineTo(ballX + lineLength, ballY); + ctx.lineTo(ballX - lineLength, ballY); + ctx.lineTo(ballX, ballY); + + ctx.moveTo(ballX, ballY); + ctx.lineTo(ballX, ballY + lineLength); + ctx.lineTo(ballX, ballY - lineLength); + ctx.lineTo(ballX, ballY); + + ctx.stroke(); + break; + case UpgradeBricks: + } + ctx.closePath(); + } + + + //Level Setup + var level = levelReached + 1; + if (level > levelCount) level = levelCount; + currentGame = new Level(level); + $("#currentLevel").html(level); + checkLevelButtons(level); + openInstructions(); +} + +function draw(){ + currentGame.drawShapes(); + currentGame.renderTime(); +} + diff --git a/public/stylesheets/styles.css b/public/stylesheets/styles.css new file mode 100644 index 0000000..b69b41e --- /dev/null +++ b/public/stylesheets/styles.css @@ -0,0 +1,290 @@ +/* General Styles*/ + +body +{ + margin: 0; + padding: 0; +} + +canvas +{ + vertical-align: top; +} + +input +{ + cursor: pointer; +} + + +/* Infolable Styles*/ + +#info +{ + display: block; + position: absolute; + height: 80%; + width: 450px; + top: 5%; + background-color: rgba(50, 50, 50, 0.6); + border-radius: 0 0 40px 0; + box-shadow: 10px 20px 20px #000; + color: #FFF; +} + +#info * +{ + position: absolute; +} + +#levelSelector, #rekordInfo, #controlsInfo +{ + left: 12.5%; + width: 75%; + background-color: rgba(50, 50, 50, 0.6); + border-radius: 10px; + border: 4px solid #000; +} + +#closeButton +{ + right: 0; + height: 5%; + background-color: #000; + border-color: #000; + color: #FFF; + border-radius: 0 0 0 10px; +} + +#openButton +{ + display: block; + position: absolute; + width: 0px; + height: 50px; + top: 5%; + border-radius: 0 5px 5px 0; + background-color: rgba(50, 50, 50, 0.5); + box-shadow: 5px 5px 5px #000; +} + +#openButton input +{ + height: 100%; + width: 100%; + background-color: rgba(0, 0, 0, 0); + border-color: rgba(50, 50, 50, 0.6); + border-left: none; + font-size: 20px; +} + +#levelSelector +{ + top: 5%; + height: 17.5%; +} + +#levelLabel, #currentLevel, #levelUp, #levelDown +{ + width: 50%; + height: 33%; + text-align: center; +} + +#levelLabel +{ + top: 33%; + left: 0; +} + +#currentLevel +{ + top: 33%; + left: 50%; +} + +#levelUp +{ + top: 0; + left: 50%; + background-color: lightgreen; + border-color: lightgreen; + border-radius: 0 10px 0 0; +} + +#levelDown +{ + top: 66%; + left: 50%; + background-color: lightcoral; + border-color: lightcoral; + border-radius: 0 0 10px 0; +} + +#rekordInfo +{ + top: 25%; + height: 30%; + overflow-y: scroll; +} + +#rekordInfo * +{ + position: relative; +} + +#rekordInfo table +{ + width: 95%; + margin-top: 5%; +} + +#rekordInfo table:nth-child(1) tr td +{ + padding: 5%; + color: #FFF; +} + +#rekordInfo table:nth-child(2) +{ + text-align: center; + border-collapse: collapse; + border: 5px solid #000; +} + +#rekordInfo table:nth-child(2) tr td +{ + width: 33%; + padding: 0; +} + +#rekordInfo table:nth-child(2) tr:nth-child(1) td +{ + height: 50px; + background-color: rgba(100, 100, 255, 0.5); + font-weight: bold; +} + +#controlsInfo +{ + top: 57.5%; + height: 37.5%; +} + +#controlsInfo * +{ + position: relative; +} + +#controlsInfo table +{ + color: #FFF; + left: 5%; + height: 100%; + width: 90%; +} + +#infoButton +{ + width: 100%; + height: 75%; + font-size: inherit; + background-color: #FFFF99; +} + + +/* Instructions */ + +#instructions +{ + position: absolute; + display: none; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.8); +} + +#instructions p +{ + font-size: 23px; +} + +#instructionsWrapper +{ + position: absolute; + width: 30%; + height: 80%; + left: 0; + right: 0; + top: 0; + bottom: 0; + margin: auto; + background-color: #888; + padding: 5%; + border-radius: 50px; +} + +#instructionsHeader +{ + position: absolute; + text-align: center; + margin: 0; + top: 5%; + left: 0; + width: 100%; +} + +#instructionsContent +{ + position: relative; + height: 100%; + width: 100%; + padding-right: 2.5%; + overflow-y: auto; +} + +#colors, #items +{ + width: 100%; + font-size: 25px; +} + +#colors td, #items td +{ + width: 33%; +} + +#colors td:first-child +{ + text-align: center; +} + + + +/* Other Stuff */ + +#timeDiv +{ + display: block; + position: absolute; + right: 0; + bottom: 0; + width: 200px; + height: 30px; + font-size: 24px; + text-align: center; + color: #BBB; + background-color: rgb(50, 50, 50); + border-radius: 10px 0 0 0; + border-top: 5px solid #000; + border-left: 5px solid #000; +} + +#testMode +{ + display: block; + position: absolute; + right: 0; + top: 0; + height: 50px; +} \ No newline at end of file diff --git a/public/thumbnail.png b/public/thumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..fe4ed1630af21c3b8c53449316b7f188d213f0cb GIT binary patch literal 102710 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

dc3+36 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