@font-face { | |||||
font-family: 'Lato'; | |||||
font-style: normal; | |||||
font-weight: 400; | |||||
src: local('Lato Regular'), local('Lato-Regular'), url(Lato.woff2) format('woff2'); | |||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000; | |||||
:root{ | |||||
--top:0px; | |||||
--top325:325px; | |||||
} | |||||
*{ | |||||
padding: 0; | |||||
margin: 0; | |||||
outline: none; | |||||
} | |||||
body{ | |||||
overflow-x: hidden; | |||||
display: block; | |||||
} | |||||
ellipse{ | |||||
fill:hsl(0, 0%, 90%); | |||||
stroke: black; | |||||
stroke-weight: 1px; | |||||
} | |||||
#reshoot, #restart{ | |||||
margin: 15rem auto; | |||||
font-size: 2rem; | |||||
padding: 1rem 2rem; | |||||
border-radius: 0.3rem; | |||||
display: block; | |||||
color: black; | |||||
border: 3px solid black; | |||||
background-color: yellow; | |||||
z-index: 10; | |||||
} | |||||
#reshoot:hover, #restart:hover{ | |||||
cursor: pointer; | |||||
background-color: black; | |||||
color: yellow; | |||||
z-index: | |||||
} | } | ||||
@font-face { | |||||
font-family: 'Quicksand'; | |||||
font-style: normal; | |||||
font-weight: 400; | |||||
src: local('Quicksand'), local('Quicksand'), url(Quicksand.woff2) format('woff2'); | |||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000; | |||||
#time { | |||||
margin: auto; | |||||
display: block; | |||||
text-align: center; | |||||
font-size: 3rem; | |||||
font-family: sans-serif; | |||||
font-weight: bold; | |||||
} | } | ||||
::selection { | |||||
background: transparent; | |||||
} | |||||
body { | |||||
background: #A5DAD2; | |||||
font-family: Quicksand, san-serif; | |||||
.cups{ | |||||
margin: auto; | |||||
width: 1100px; | |||||
} | } | ||||
.bgWhite { | |||||
background: #F5F2F5; | |||||
.tisch{ | |||||
position: absolute; | |||||
margin-top: 0rem; | |||||
margin-left: -440px; | |||||
width: 1090px; | |||||
z-index: -1; | |||||
} | } | ||||
.colorWhite { | |||||
color: #F5F2F5 !important; | |||||
.cup{ | |||||
width: 100px; | |||||
position: relative; | |||||
} | } | ||||
.bgDark { | |||||
background: #516D66; | |||||
.row1{ | |||||
margin-top: 00rem; | |||||
margin-left: 350px; | |||||
} | } | ||||
.colorDark { | |||||
color: #516D66; | |||||
.row2{ | |||||
margin-top: -10rem; | |||||
margin-left: 400px; | |||||
} | } | ||||
.bgRed { | |||||
background: #F286A0; | |||||
.row3{ | |||||
margin-top: -10rem; | |||||
margin-left: 450px; | |||||
} | } | ||||
.colorRed { | |||||
color: #F286A0 !important; | |||||
.row4{ | |||||
margin-top: -10rem; | |||||
margin-left: 500px; | |||||
} | } | ||||
.gameBoard, .scoreBoard { | |||||
font-weight: 400; | |||||
.cup5{ | |||||
top: 5rem; | |||||
} | } | ||||
.gameBoard { | |||||
width: 100%; | |||||
.cup6{ | |||||
top: 5rem; | |||||
} | } | ||||
.gameBoard td { | |||||
text-align: center; | |||||
color: #516D66; | |||||
font-size: 8em; | |||||
cursor: pointer; | |||||
transition: all 0.5s; | |||||
.cup7{ | |||||
top: 5rem; | |||||
} | } | ||||
.gameCell { | |||||
width: 181px; | |||||
height: 181px; | |||||
.cup8{ | |||||
top: 10rem; | |||||
} | } | ||||
.gameCell:not(.marked):hover { | |||||
box-shadow: 0 0 42px #555; | |||||
.cup9{ | |||||
top: 10rem; | |||||
} | } | ||||
.gameBoard td.gameCell.notActive:hover, .gameBoard td.gameCell.notActive:active { | |||||
box-shadow: none !important; | |||||
cursor: default; | |||||
.cup10{ | |||||
top: 15rem; | |||||
} | } | ||||
.scoreBoard { | |||||
color: #516D66; | |||||
height: 100px; | |||||
.ball{ | |||||
width: 50px; | |||||
height: 50px; | |||||
position: relative; | |||||
} | } | ||||
.boardCol { | |||||
width: 5px; | |||||
cursor: default !important; | |||||
.shooter{ | |||||
position: relative; | |||||
top: 250px; | |||||
left: 125px; | |||||
width: 300px; | |||||
margin: auto; | |||||
} | } | ||||
.boardRow { | |||||
height: 5px; | |||||
cursor: default !important; | |||||
.shootX{ | |||||
animation: shootX 1s infinite linear; | |||||
} | } | ||||
.scoreBoard span.active { | |||||
border-bottom: 4px solid #F286A0; | |||||
@keyframes shootX{ | |||||
0%{left:0px} | |||||
25%{left:125px} | |||||
50%{left:0px} | |||||
75%{left:-125px} | |||||
100%{left:0px} | |||||
} | |||||
.shootY{ | |||||
animation: shootY 1s infinite linear; | |||||
} | |||||
@keyframes shootY{ | |||||
0%{top:0px} | |||||
50%{top:175px} | |||||
100%{top:0px} | |||||
} | |||||
.fadeAway{ | |||||
animation: fadeAway 1s; | |||||
opacity: 0 | |||||
} | |||||
@keyframes fadeAway{ | |||||
0%{opacity: 1} | |||||
100%{opacity: 0} | |||||
} | |||||
.Shoot{ | |||||
animation: Shoot 1s; | |||||
animation-timing-function: ease; | |||||
} | |||||
@keyframes Shoot{ | |||||
0%{top: var(--top)} | |||||
100%{top: var(--top325)} | |||||
} | } |
var html = document.getElementById("html"); | |||||
var reshoot = document.getElementById("reshoot"); | |||||
var ball = document.getElementById("ball"); | |||||
var root = document.documentElement; | |||||
var restartbuttonvisible = 1; | |||||
var cupsOut = []; | |||||
//function shootY(){ | |||||
//let top = window.getComputedStyle(ball).getPropertyValue("top"); | |||||
//ball.classList.remove("shootY"); | |||||
//ball.classList.add("shootX"); | |||||
//ball.style.top = top; | |||||
//let onclick = "shootX('".concat(top.toString(), "')"); | |||||
//html.setAttribute("onclick", onclick); | |||||
//} | |||||
function shoot(event){ | |||||
//let top = valueY; | |||||
//let topInt = parseInt(valueY); | |||||
//let left = window.getComputedStyle(ball).getPropertyValue("left"); | |||||
//let leftInt = parseInt(left); | |||||
//let newtop = topInt-325; | |||||
//root.style.setProperty('--top', (topInt)+ "px"); | |||||
//root.style.setProperty('--top325', (newtop)+ "px"); | |||||
ball.classList.add("Shoot"); | |||||
switch (event.key) | |||||
{ | |||||
case 'e': | |||||
case 'E': | |||||
root.style.setProperty('--top325', "-350"+ "px"); | |||||
ball.style.top = "-350px" | |||||
ball.style.left = "-155px"; | |||||
removeCup("1"); | |||||
break; | |||||
case 'r': | |||||
case 'R': | |||||
root.style.setProperty('--top325', "-350"+ "px"); | |||||
ball.style.top = "-350px" | |||||
ball.style.left = "-50px"; | |||||
removeCup("2"); | |||||
break; | |||||
case 't': | |||||
case 'T': | |||||
root.style.setProperty('--top325', "-350"+ "px"); | |||||
ball.style.top = "-350px" | |||||
ball.style.left = "55px"; | |||||
removeCup("3"); | |||||
break; | |||||
case 'z': | |||||
case 'Z': | |||||
root.style.setProperty('--top325', "-350"+ "px"); | |||||
ball.style.top = "-350px" | |||||
ball.style.left = "160px"; | |||||
removeCup("4"); | |||||
break; | |||||
case 'd': | |||||
case 'D': | |||||
root.style.setProperty('--top325', "-290"+ "px"); | |||||
ball.style.top = "-290px" | |||||
ball.style.left = "-100px"; | |||||
removeCup("5"); | |||||
break; | |||||
case 'f': | |||||
case 'F': | |||||
root.style.setProperty('--top325', "-290"+ "px"); | |||||
ball.style.top = "-290px" | |||||
ball.style.left = "0px"; | |||||
removeCup("6"); | |||||
break; | |||||
case 'g': | |||||
case 'G': | |||||
root.style.setProperty('--top325', "-290"+ "px"); | |||||
ball.style.top = "-290px" | |||||
ball.style.left = "110px"; | |||||
removeCup("7"); | |||||
break; | |||||
case 'c': | |||||
case 'C': | |||||
root.style.setProperty('--top325', "-220"+ "px"); | |||||
ball.style.top = "-220px" | |||||
ball.style.left = "-50px"; | |||||
removeCup("8"); | |||||
break; | |||||
case 'v': | |||||
case 'V': | |||||
root.style.setProperty('--top325', "-220"+ "px"); | |||||
ball.style.top = "-220px" | |||||
ball.style.left = "55px"; | |||||
removeCup("9"); | |||||
break; | |||||
case 'b': | |||||
case 'B': | |||||
root.style.setProperty('--top325', "-160"+ "px"); | |||||
ball.style.top = "-160px" | |||||
ball.style.left = "0px"; | |||||
removeCup("10"); | |||||
break; | |||||
default: | |||||
break; | |||||
} | |||||
setTimeout(function(){ | |||||
if(cupsOut.length == 10 && restartbuttonvisible == 1){ | |||||
let restartBtn = document.createElement("BUTTON"); | |||||
restartBtn.innerHTML = "Restart"; | |||||
restartBtn.setAttribute("onclick","location.reload()"); | |||||
restartBtn.setAttribute("id","restart"); | |||||
document.body.appendChild(restartBtn); | |||||
restartbuttonvisible = 2; | |||||
ball.style.top = "0px"; | |||||
ball.style.left = "0px"; | |||||
}else{ | |||||
reshot(); | |||||
//let reshootBtn = document.createElement("BUTTON"); | |||||
//reshootBtn.innerHTML = "Reshoot"; | |||||
//reshootBtn.setAttribute("onclick","reshot()"); | |||||
//reshootBtn.setAttribute("id","reshoot"); | |||||
//document.body.appendChild(reshootBtn); | |||||
} | |||||
},1000); | |||||
} | |||||
//Cup entfernen bei Treffer | |||||
function removeCup(cup){ | |||||
let element = "cup".concat(cup); | |||||
let alreadyExists = cupsOut.includes(cup); | |||||
if(alreadyExists==false){ | |||||
cupsOut.push(cup); | |||||
} | |||||
setTimeout(function(){ | |||||
document.getElementById(element).classList.add("fadeAway"); | |||||
},1000); | |||||
} | |||||
function reshot(){ | |||||
//document.getElementById("reshoot").remove(); | |||||
ball.classList.remove("Shoot"); | |||||
ball.style.top = "0px"; | |||||
ball.style.left = "0px"; | |||||
//root.style.setProperty('--top325', "0"+ "px"); | |||||
//setTimeout(function(){ | |||||
// html.setAttribute("onclick", "shoot()"); | |||||
//},1000); | |||||
} | |||||
// Cup Positionen + Toleranz | |||||
//Cup 1: -20<topInt && topInt<20 && -125<leftInt && leftInt<-60 | |||||
//Cup 2: -20<topInt && topInt<20 && -40<leftInt && leftInt<40 | |||||
//Cup 3: -20<topInt && topInt<20 && 60<leftInt && leftInt<125 | |||||
//Cup 4: 60<topInt && topInt<100 && -90<leftInt && leftInt<-25 | |||||
//Cup 5: 60<topInt && topInt<100 && 15<leftInt && leftInt<80 | |||||
//Cup 6: 140<topInt && topInt<180 && -45<leftInt && leftInt<45 |
/* GET home page. */ | /* GET home page. */ | ||||
router.get('/', function(req, res) { | router.get('/', function(req, res) { | ||||
res.render('index', { title: 'Tic Tac Toe' }); | |||||
res.render('index', { title: 'Beer Pong' }); | |||||
}); | }); | ||||
module.exports = router; | module.exports = router; |
extends layout | |||||
block content | |||||
h1= message | |||||
h2= error.status | |||||
pre #{error.stack} |
extends layout | |||||
extends layout | |||||
block content | block content | ||||
.container | |||||
.row | |||||
.col-sm-3.col-sm-offset-3.scoreBoard | |||||
h1 | |||||
span#p1Score | |||||
.col-sm-3.scoreBoard | |||||
h1.text-right | |||||
span#p2Score | |||||
.row | |||||
.col-sm-6.col-sm-offset-3#gameBoard | |||||
h1.text-center.colorDark Enter your name | |||||
.panel.panel-danger | |||||
.panel-body | |||||
.input-group | |||||
input#nickname.form-control.input-lg( autofocus ) | |||||
span.input-group-btn | |||||
button#startBtn.btn.btn-lg.btn-danger PLAY! | |||||
.cups | |||||
.tisch | |||||
img(src='bierbankgarnitur_ausg.png') | |||||
.row.row1 | |||||
img#cup1.cup.cup1(src='cup.png' alt='') | |||||
img#cup2.cup.cup2(src='cup.png' alt='') | |||||
img#cup3.cup.cup3(src='cup.png' alt='') | |||||
img#cup4.cup.cup4(src='cup.png' alt='') | |||||
.row.row2 | |||||
img#cup5.cup.cup5(src='cup.png' alt='') | |||||
img#cup6.cup.cup6(src='cup.png' alt='') | |||||
img#cup7.cup.cup7(src='cup.png' alt='') | |||||
.row.row3 | |||||
img#cup8.cup.cup8(src='cup.png' alt='') | |||||
img#cup9.cup.cup9(src='cup.png' alt='') | |||||
.row.row4 | |||||
img#cup10.cup.cup10(src='cup.png' alt='') | |||||
#shooter.shooter | |||||
svg#ball.ball | |||||
ellipse(cx='25' cy='25' rx='24' ry='24') |
doctype html | doctype html | ||||
html( lang="en" ) | |||||
head | |||||
meta( charset='utf-8' ) | |||||
meta( http-equiv='X-UA-Compatible', content='IE=edge' ) | |||||
meta( name='viewport', content='width=device-width, initial-scale=1.0' ) | |||||
title= title | |||||
link(rel='stylesheet', href='/css/bootstrap.min.css') | |||||
link(rel='stylesheet', href='/css/style.css') | |||||
html(lang='en' onkeypress='shoot(event)') | |||||
head | |||||
meta(charset='UTF-8') | |||||
meta( http-equiv='X-UA-Compatible', content='IE=edge' ) | |||||
meta(name='viewport' content='width=device-width, initial-scale=1.0') | |||||
title= title | |||||
link(rel='stylesheet' href='/css/style.css') | |||||
link(rel='icon' href='cup.png') | |||||
body | body | ||||
block content | block content | ||||
script(src='/js/Board.js') | |||||
script(src='/js/app.js') | |||||
script(src='/js/index.js') | |||||
script(src='/js/script.js') |