Skip to content

Commit

Permalink
Merge pull request #28 from WildCodeSchool-2023-09/dashboard_admin_final
Browse files Browse the repository at this point in the history
Dashboard Admin Final + Mini-Game
  • Loading branch information
Baptiste1828 authored Feb 8, 2024
2 parents f5bb641 + 35b93a7 commit eb68013
Show file tree
Hide file tree
Showing 34 changed files with 537 additions and 401 deletions.
1 change: 1 addition & 0 deletions assets/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ import './styles/prize/prize-form.scss';
import './styles/gameplayed.scss';
import './styles/leaderboard.scss';
import './styles/profile.scss';
import './styles/breakout.scss';

// start the Stimulus application
import './bootstrap';
Binary file added assets/images/breakout.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
165 changes: 165 additions & 0 deletions assets/scripts/breakout.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,165 @@
var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext("2d");
var ballRadius = 10;
var x = canvas.width/2;
var y = canvas.height-30;
var dx = 2;
var dy = -2;
var paddleHeight = 10;
var paddleWidth = 75;
var paddleX = (canvas.width-paddleWidth)/2;
var rightPressed = false;
var leftPressed = false;
var brickRowCount = 5;
var brickColumnCount = 3;
var brickWidth = 75;
var brickHeight = 20;
var brickPadding = 10;
var brickOffsetTop = 30;
var brickOffsetLeft = 30;
var score = 0;
var lives = 3;

var bricks = [];
for(var c=0; c<brickColumnCount; c++) {
bricks[c] = [];
for(var r=0; r<brickRowCount; r++) {
bricks[c][r] = { x: 0, y: 0, status: 1 };
}
}

document.addEventListener("keydown", keyDownHandler, false);
document.addEventListener("keyup", keyUpHandler, false);
document.addEventListener("mousemove", mouseMoveHandler, false);

function keyDownHandler(e) {
if(e.code == "ArrowRight") {
rightPressed = true;
}
else if(e.code == 'ArrowLeft') {
leftPressed = true;
}
}
function keyUpHandler(e) {
if(e.code == 'ArrowRight') {
rightPressed = false;
}
else if(e.code == 'ArrowLeft') {
leftPressed = false;
}
}
function mouseMoveHandler(e) {
var relativeX = e.clientX - canvas.offsetLeft;
if(relativeX > 0 && relativeX < canvas.width) {
paddleX = relativeX - paddleWidth/2;
}
}
function collisionDetection() {
for(var c=0; c<brickColumnCount; c++) {
for(var r=0; r<brickRowCount; r++) {
var b = bricks[c][r];
if(b.status == 1) {
if(x > b.x && x < b.x+brickWidth && y > b.y && y < b.y+brickHeight) {
dy = -dy;
b.status = 0;
score++;
if(score == brickRowCount*brickColumnCount) {
alert("YOU WIN, CONGRATS!");
document.location.reload();
}
}
}
}
}
}

function drawBall() {
ctx.beginPath();
ctx.arc(x, y, ballRadius, 0, Math.PI*2);
ctx.fillStyle = "#0095DD";
ctx.fill();
ctx.closePath();
}
function drawPaddle() {
ctx.beginPath();
ctx.rect(paddleX, canvas.height-paddleHeight, paddleWidth, paddleHeight);
ctx.fillStyle = "#0095DD";
ctx.fill();
ctx.closePath();
}
function drawBricks() {
for(var c=0; c<brickColumnCount; c++) {
for(var r=0; r<brickRowCount; r++) {
if(bricks[c][r].status == 1) {
var brickX = (r*(brickWidth+brickPadding))+brickOffsetLeft;
var brickY = (c*(brickHeight+brickPadding))+brickOffsetTop;
bricks[c][r].x = brickX;
bricks[c][r].y = brickY;
ctx.beginPath();
ctx.rect(brickX, brickY, brickWidth, brickHeight);
ctx.fillStyle = "#0095DD";
ctx.fill();
ctx.closePath();
}
}
}
}
function drawScore() {
ctx.font = "16px Arial";
ctx.fillStyle = "#0095DD";
ctx.fillText("Score: "+score, 8, 20);
}
function drawLives() {
ctx.font = "16px Arial";
ctx.fillStyle = "#0095DD";
ctx.fillText("Lives: "+lives, canvas.width-65, 20);
}

function draw() {
ctx.clearRect(0, 0, canvas.width, canvas.height);
drawBricks();
drawBall();
drawPaddle();
drawScore();
drawLives();
collisionDetection();

if(x + dx > canvas.width-ballRadius || x + dx < ballRadius) {
dx = -dx;
}
if(y + dy < ballRadius) {
dy = -dy;
}
else if(y + dy > canvas.height-ballRadius) {
if(x > paddleX && x < paddleX + paddleWidth) {
dy = -dy;
}
else {
lives--;
if(!lives) {
alert("GAME OVER");
document.location.reload();
}
else {
x = canvas.width/2;
y = canvas.height-30;
dx = 2;
dy = -2;
paddleX = (canvas.width-paddleWidth)/2;
}
}
}

if(rightPressed && paddleX < canvas.width-paddleWidth) {
paddleX += 7;
}
else if(leftPressed && paddleX > 0) {
paddleX -= 7;
}

x += dx;
y += dy;
requestAnimationFrame(draw);
}

draw();
2 changes: 1 addition & 1 deletion assets/scripts/toggle.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,4 @@ function toggleInput(toggleSelector, inputSelector, formSelector)
})
}

toggleInput('#toggle input.switch', 'input.isVisible', 'form');
toggleInput('input.switch', 'input.isVisible', 'form');
8 changes: 8 additions & 0 deletions assets/styles/breakout.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
#breakout canvas {
background: transparent;
display: block;
margin: 0 auto;

width: 100%;
height: 100%;
}
26 changes: 10 additions & 16 deletions assets/styles/components/searchbar.scss
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@
position: relative;
z-index: 2;

width: 90vw;
width: 95%;

margin: 0 auto 10px;
margin: 0 auto;

display: flex;
justify-content: space-between;
Expand All @@ -16,12 +16,15 @@
#search-modal {
height: 50px;
width: 100%;
justify-content: space-between;
padding: 0 1rem;

display: flex;
justify-content: space-between;
align-items: center;

background-color: #dee8f486;
border: 1px solid #020051;
border-radius: 1.5rem;
border-radius: $borderRadiusMedium;

transition: ease-in-out 200ms;

Expand All @@ -31,9 +34,6 @@
}

#search-primary {
display: flex;
align-items: center;

.btn {
height: 1.5rem;
width: 1.5rem;
Expand All @@ -59,7 +59,7 @@
#game_search_title {
border: none;
text-align: center;
font-size: 1.25rem;
font-size: 1.2rem;
width: 80%;

&:focus-visible {
Expand All @@ -80,21 +80,17 @@

#search-modal {
position: absolute;
top: 60px;
top: 55px;
left: 0;
right: 0;

font-size: 1rem;

display: none;

justify-content: space-between;

margin: 0 auto;
padding: 1rem 1rem;

border-radius: 1.4rem;

.filter {
display: flex;
flex-direction: column;
Expand Down Expand Up @@ -147,9 +143,7 @@
@media screen and (min-width: $desktopWidth) {

#searchbar {
width: 500px;
position: absolute;
top: 1rem;
width: calc(400px + 50px);
margin: 0;
}
}
29 changes: 14 additions & 15 deletions assets/styles/components/toggle.scss
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
@import "../main/_variables";

#toggle {
display: flex;
justify-content: center;
align-items: center;
gap: 1rem;
// #toggle {
// display: flex;
// justify-content: center;
// align-items: center;

margin: 1rem 0;
// margin: 1rem 0;

input.switch {
position: relative;
Expand All @@ -25,7 +24,7 @@

transition: all .3s ease;

background: #fff;
background: #dcdcdc;

&:checked {
background-color: rgba(32, 151, 243, 1);
Expand Down Expand Up @@ -55,7 +54,8 @@

border: 1px solid rgba(100, 116, 139, 0.527);
border-radius: 9999px;
background-color: rgba(255, 255, 255, 1);
// background-color: rgba(255, 255, 255, 1);
background: $colorGradient5;

box-shadow: 0 3px 10px rgba(100, 116, 139, 0.327);

Expand All @@ -66,15 +66,14 @@
box-shadow: 0 0 0px 8px rgba(0, 0, 0, .15)
}
}
}

// }

//

@media screen and (min-width: $desktopWidth) {
#toggle {
position: absolute;
top: 1rem;
right: 6rem;
}
// #toggle {
// position: absolute;
// top: 1rem;
// right: 6rem;
// }
}
38 changes: 2 additions & 36 deletions assets/styles/dashboard/dashboard-admin.scss
Original file line number Diff line number Diff line change
@@ -1,43 +1,9 @@
@import "../main/_variables";

#dashboard .cell-played-admin {
//
.messages-success-block {
display: flex;
justify-content: center;
}

.img-block {
display: flex;
justify-content: center;
height: 80px;
padding-top: 25px;
}

.messages-success {
color: #fefefe;
font-size: 1.5rem;
padding-bottom: 10px;
}

@keyframes fadeOut {
0% {
opacity: 1;
}
100% {
opacity: 0;
}
}

.messages-success {
animation: fadeOut 5s ease;
opacity: 0;
}
//

#dashboard-admin .cell-played-admin {
.content {

.nav-admin {
#nav-admin-old {
display: flex;
flex-direction: column;
align-items: center;
Expand Down
Loading

0 comments on commit eb68013

Please sign in to comment.