parent
cd228d507d
commit
a7e6fac5d0
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 274 KiB |
After Width: | Height: | Size: 213 KiB |
@ -0,0 +1,25 @@
|
|||||||
|
<!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" />
|
||||||
|
<link rel="stylesheet" href="style.css" />
|
||||||
|
<script src="index.js"></script>
|
||||||
|
<title>Clock</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="clock_container">
|
||||||
|
<div id="hour" class="overall"></div>
|
||||||
|
<div id="min" class="overall"></div>
|
||||||
|
<div id="sec" class="overall"></div>
|
||||||
|
</div>
|
||||||
|
<div id="divi">
|
||||||
|
<p id="para">click below to change clock appearance</p>
|
||||||
|
<div id="disp">
|
||||||
|
<button onclick="change()" id="button">click here</button>
|
||||||
|
<button onclick="change1()" id="button1">click here</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,32 @@
|
|||||||
|
setInterval(() => {
|
||||||
|
|
||||||
|
let d=new Date();
|
||||||
|
let htime=d.getHours();
|
||||||
|
let mtime=d.getMinutes();
|
||||||
|
let stime=d.getSeconds();
|
||||||
|
let hrotation=30*htime+(0.5*mtime);
|
||||||
|
let mrotation=6*mtime;
|
||||||
|
let srotation=6*stime;
|
||||||
|
document.getElementById("hour").style.transform=`rotate(${hrotation}deg)`;
|
||||||
|
document.getElementById("min").style.transform=`rotate(${mrotation}deg)`;
|
||||||
|
document.getElementById("sec").style.transform=`rotate(${srotation}deg)`;
|
||||||
|
}, 1000);
|
||||||
|
|
||||||
|
function change(){
|
||||||
|
document.body.style.backgroundColor = ' rgb(255, 249, 238)';
|
||||||
|
document.getElementById("clock_container").style.background="url(export202206140431597870.png) no-repeat";
|
||||||
|
document.getElementById("clock_container").style.position="relative";
|
||||||
|
document.getElementById("clock_container").style.backgroundSize="100%"
|
||||||
|
document.getElementById("hour").style.backgroundColor="#571c13";
|
||||||
|
document.getElementById("min").style.backgroundColor="#571c13";
|
||||||
|
document.getElementById("sec").style.backgroundColor="#571c13";
|
||||||
|
}
|
||||||
|
function change1(){
|
||||||
|
document.body.style.backgroundColor = '#e5e5ff';
|
||||||
|
document.getElementById("clock_container").style.background="url(export202206140530231210.png) no-repeat";
|
||||||
|
document.getElementById("clock_container").style.position="relative";
|
||||||
|
document.getElementById("clock_container").style.backgroundSize="100%"
|
||||||
|
document.getElementById("hour").style.backgroundColor="#120503";
|
||||||
|
document.getElementById("min").style.backgroundColor="#120503";
|
||||||
|
document.getElementById("sec").style.backgroundColor="#120503";
|
||||||
|
}
|
@ -0,0 +1,79 @@
|
|||||||
|
#clock_container {
|
||||||
|
position: relative;
|
||||||
|
height: 40vw;
|
||||||
|
width: 40vw;
|
||||||
|
background: url(3998853-free-blank-clock-face-printable-download-free-clip-art-free-clip-blank-clock-face-png-516_516_preview.png)
|
||||||
|
no-repeat;
|
||||||
|
background-size: 100%;
|
||||||
|
display: flex;
|
||||||
|
/* align-items: center; */
|
||||||
|
/* background-position: center; */
|
||||||
|
margin: auto;
|
||||||
|
}
|
||||||
|
.overall {
|
||||||
|
position: absolute;
|
||||||
|
background-color: black;
|
||||||
|
border-radius: 10px;
|
||||||
|
}
|
||||||
|
#hour {
|
||||||
|
width: 2%;
|
||||||
|
height: 25%;
|
||||||
|
top: 23%;
|
||||||
|
left: 48%;
|
||||||
|
opacity: 0.8;
|
||||||
|
transform-origin: bottom;
|
||||||
|
}
|
||||||
|
#min {
|
||||||
|
width: 1%;
|
||||||
|
height: 32%;
|
||||||
|
top: 18%;
|
||||||
|
left: 48.5%;
|
||||||
|
opacity: 0.8;
|
||||||
|
transform-origin: bottom;
|
||||||
|
}
|
||||||
|
#sec {
|
||||||
|
width: 0.8%;
|
||||||
|
height: 32%;
|
||||||
|
top: 18%;
|
||||||
|
left: 49.1%;
|
||||||
|
opacity: 0.8;
|
||||||
|
transform-origin: bottom;
|
||||||
|
}
|
||||||
|
#disp {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
#button {
|
||||||
|
font-size: 1rem;
|
||||||
|
border: none;
|
||||||
|
border-radius: 5px;
|
||||||
|
padding: 1%;
|
||||||
|
background: rgb(240, 80, 106);
|
||||||
|
color: white;
|
||||||
|
cursor: pointer;
|
||||||
|
margin: 4px;
|
||||||
|
}
|
||||||
|
#button:active {
|
||||||
|
background: coral;
|
||||||
|
}
|
||||||
|
#button1 {
|
||||||
|
font-size: 1rem;
|
||||||
|
border: none;
|
||||||
|
border-radius: 5px;
|
||||||
|
padding: 1%;
|
||||||
|
background: rgb(83, 80, 240);
|
||||||
|
color: white;
|
||||||
|
cursor: pointer;
|
||||||
|
margin: 4px;
|
||||||
|
}
|
||||||
|
#button1:active {
|
||||||
|
background: rgb(80, 214, 255);
|
||||||
|
}
|
||||||
|
#para {
|
||||||
|
font-size: 1rem;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
background: rgb(255, 249, 238);
|
||||||
|
}
|
After Width: | Height: | Size: 151 KiB |
@ -0,0 +1,42 @@
|
|||||||
|
* {
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
body {
|
||||||
|
background: url("../bg.jpg");
|
||||||
|
background-color: aqua;
|
||||||
|
min-height: 100vh;
|
||||||
|
background-size: 100vw 100vh;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
#board {
|
||||||
|
/* background: linear-gradient(#0d500d, #bad526); */
|
||||||
|
background: linear-gradient(#648607, #e2e482);
|
||||||
|
width: 45vw;
|
||||||
|
height: 40vw;
|
||||||
|
border: 2px solid rgb(8, 54, 0);
|
||||||
|
display: grid;
|
||||||
|
grid-template-rows: repeat(18, 1fr);
|
||||||
|
grid-template-columns: repeat(18, 1fr);
|
||||||
|
}
|
||||||
|
.head {
|
||||||
|
background-color: rgb(22, 97, 45);
|
||||||
|
/* background: url("..\snake_face.jpg"); */
|
||||||
|
border: 2px solid rgb(212, 255, 119);
|
||||||
|
border-radius: 10px;
|
||||||
|
transform: scale(1.02);
|
||||||
|
}
|
||||||
|
.snake {
|
||||||
|
/* background: linear-gradient(rgb(24, 66, 7), yellow); */
|
||||||
|
background-color: rgb(24, 66, 7);
|
||||||
|
border: 2px solid rgb(215, 255, 129);
|
||||||
|
border-radius: 10px;
|
||||||
|
}
|
||||||
|
.food {
|
||||||
|
background: linear-gradient(red, pink);
|
||||||
|
border: 2px solid rgb(70, 0, 0);
|
||||||
|
border-radius: 10px;
|
||||||
|
}
|
@ -0,0 +1,19 @@
|
|||||||
|
<!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>Snake game</title>
|
||||||
|
<link rel="stylesheet" href="css/style.css" />
|
||||||
|
<link rel="icon" href="snake_face.jpg" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="container">
|
||||||
|
<div id="score">Score : 0</div>
|
||||||
|
<div id="h_score">High Score : 0</div>
|
||||||
|
<div class="board" id="board"></div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
<script src="js/index.js"></script>
|
||||||
|
</html>
|
@ -0,0 +1,129 @@
|
|||||||
|
let inputDir={x:0,y:0};
|
||||||
|
let food={x:6,y:7};
|
||||||
|
const foodSound=new Audio('music/food.mp3');
|
||||||
|
const gameOverSound=new Audio('music/gameover.mp3');
|
||||||
|
const movesound=new Audio('music/move.mp3');
|
||||||
|
const musicsound=new Audio('music/music.mp3');
|
||||||
|
let speed=5;
|
||||||
|
let score=0;
|
||||||
|
let snakearr=[{x:13,y:15}]
|
||||||
|
let LastPaintTime=0;
|
||||||
|
let hiscoreval=0;
|
||||||
|
alert("Rules: press arrow keys to move in the field,make sure you dont bump into yourself or the field boundaries and eat more to score more ");
|
||||||
|
function main(ctime){
|
||||||
|
window.requestAnimationFrame(main);
|
||||||
|
// console.log(ctime);
|
||||||
|
if((ctime-LastPaintTime)/1000<1/speed){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
LastPaintTime=ctime;
|
||||||
|
game_engine();
|
||||||
|
}
|
||||||
|
function isCollide(snake){
|
||||||
|
//if the snake bumps into itself
|
||||||
|
for(let i=1;i<snake.length;i++)
|
||||||
|
{
|
||||||
|
if (snake[i].x===snake[0].x && snake[i].y===snake[0].y ){
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(snake[0].x>=18 ||snake[0].x<=0 || snake[0].y>=18 ||snake[0].y<=0)
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
function game_engine(){
|
||||||
|
//updating the snake array & food
|
||||||
|
if(isCollide(snakearr)){
|
||||||
|
gameOverSound.play();
|
||||||
|
musicsound.pause();
|
||||||
|
inputDir={x:0,y:0};
|
||||||
|
alert("game over, press any key to play again!");
|
||||||
|
snakearr=[{x:13,y:15}]
|
||||||
|
musicsound.pause();
|
||||||
|
score=0;
|
||||||
|
}
|
||||||
|
if(snakearr[0].y===food.y && snakearr[0].x===food.x){
|
||||||
|
foodSound.play();
|
||||||
|
score++;
|
||||||
|
if(score>=8){
|
||||||
|
speed=8;
|
||||||
|
}
|
||||||
|
if(score>hiscoreval){
|
||||||
|
hiscoreval=score;
|
||||||
|
localStorage.setItem('hiscore',JSON.stringify(hiscoreval))
|
||||||
|
h_score.innerHTML="High Score :"+ hiscoreval;
|
||||||
|
}
|
||||||
|
document.getElementById('score').innerHTML="Score : "+score;
|
||||||
|
snakearr.unshift({x:snakearr[0].x +inputDir.x,y:snakearr[0].y +inputDir.y}) //adding extra chain to the snake's moving dir
|
||||||
|
let a=2;
|
||||||
|
let b=16;
|
||||||
|
food={x:Math.round(a+(b-a)*Math.random()),y:Math.round(a+(b-a)*Math.random())};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//moving the snake
|
||||||
|
for (let i = snakearr.length-2; i >=0; i--) {
|
||||||
|
snakearr[i+1]={...snakearr[i]};//equal to a new object here(to avoid reference problem and to avoid pointing of objects at a single point)
|
||||||
|
}
|
||||||
|
snakearr[0].x +=inputDir.x;
|
||||||
|
snakearr[0].y +=inputDir.y;
|
||||||
|
|
||||||
|
// displaying the snake and food
|
||||||
|
// snake
|
||||||
|
document.getElementById("board").innerHTML=" ";
|
||||||
|
snakearr.forEach((e,index)=>{
|
||||||
|
snakeElement=document.createElement('div');
|
||||||
|
snakeElement.style.gridRowStart=e.y;
|
||||||
|
snakeElement.style.gridColumnStart=e.x;
|
||||||
|
if(index===0){
|
||||||
|
snakeElement.classList.add('head');
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
snakeElement.classList.add('snake');
|
||||||
|
}
|
||||||
|
board.appendChild(snakeElement);
|
||||||
|
})
|
||||||
|
// food
|
||||||
|
foodElement=document.createElement('div');
|
||||||
|
foodElement.style.gridRowStart=food.y;
|
||||||
|
foodElement.style.gridColumnStart=food.x;
|
||||||
|
foodElement.classList.add('food');
|
||||||
|
board.appendChild(foodElement);
|
||||||
|
}
|
||||||
|
//main logic
|
||||||
|
let hiscore=localStorage.getItem('h_score');
|
||||||
|
if(hiscore===null){
|
||||||
|
localStorage.setItem('hiscore',JSON.stringify(hiscoreval))
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
hiscoreval=JSON.parse(hiscore);
|
||||||
|
h_score.innerHTML="High Score :"+ hiscoreval;
|
||||||
|
}
|
||||||
|
window.requestAnimationFrame(main);
|
||||||
|
window.addEventListener('keydown',e=>{
|
||||||
|
inputDir={x:0,y:1} //start
|
||||||
|
movesound.play();
|
||||||
|
switch(e.key){
|
||||||
|
case "ArrowUp":
|
||||||
|
console.log("ArrowUp")
|
||||||
|
inputDir.x=0;
|
||||||
|
inputDir.y=-1;
|
||||||
|
break;
|
||||||
|
case "ArrowLeft":
|
||||||
|
inputDir.x=-1;
|
||||||
|
inputDir.y=0;
|
||||||
|
console.log("ArrowLeft")
|
||||||
|
break;
|
||||||
|
case "ArrowRight":
|
||||||
|
inputDir.x=1;
|
||||||
|
inputDir.y=0;
|
||||||
|
console.log("ArrowRight")
|
||||||
|
break;
|
||||||
|
case "ArrowDown":
|
||||||
|
inputDir.x=0;
|
||||||
|
inputDir.y=1;
|
||||||
|
console.log("ArrowDown")
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
});
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
After Width: | Height: | Size: 28 KiB |
Loading…
Reference in new issue