Skip to content

Commit

Permalink
Merge pull request #986 from isha-dutta/feature/Flappy-Bird-Game
Browse files Browse the repository at this point in the history
Fixes #965: Flappy Bird
  • Loading branch information
Durgesh4993 authored Jun 7, 2024
2 parents fdf80bd + 12fed6f commit a05754a
Show file tree
Hide file tree
Showing 8 changed files with 283 additions and 0 deletions.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
24 changes: 24 additions & 0 deletions SinglePlayer - Games/Flappy_Bird_Game/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
<!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="icon" type="image/png"/>
<title>Flappy Bird Game</title>
<link rel="stylesheet" href="style.css">

</head>
<body>
<div class="background"></div>
<img src="images/Bird-I.png" alt="bird-img" class="bird" id="bird-1">
<div class="message">
Enter To Start Game <p><span style="color: red;">&uarr;</span> ArrowUp to Control</p>
</div>
<div class="score">
<span class="score_title"></span>
<span class="score_val"></span>
</div>
<script src="script.js" defer></script>
</body>
</html>
121 changes: 121 additions & 0 deletions SinglePlayer - Games/Flappy_Bird_Game/script.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
let move_speed = 3, grativy = 0.5;
let bird = document.querySelector('.bird');
let img = document.getElementById('bird-1');
let bird_props = bird.getBoundingClientRect();
let background = document.querySelector('.background').getBoundingClientRect();

let score_val = document.querySelector('.score_val');
let message = document.querySelector('.message');
let score_title = document.querySelector('.score_title');

let game_state = 'Start';
img.style.display = 'none';
message.classList.add('messageStyle');

document.addEventListener('keydown', (e) => {

if(e.key == 'Enter' && game_state != 'Play'){
document.querySelectorAll('.pipe_sprite').forEach((e) => {
e.remove();
});
img.style.display = 'block';
bird.style.top = '100vh';
game_state = 'Play';
message.innerHTML = '';
score_title.innerHTML = 'Score : ';
score_val.innerHTML = '0';
message.classList.remove('messageStyle');
play();
}
});

function play(){
function move(){
if(game_state != 'Play') return;

let pipe_sprite = document.querySelectorAll('.pipe_sprite');
pipe_sprite.forEach((element) => {
let pipe_sprite_props = element.getBoundingClientRect();
bird_props = bird.getBoundingClientRect();

if(pipe_sprite_props.right <= 0){
element.remove();
}else{
if(bird_props.left < pipe_sprite_props.left + pipe_sprite_props.width && bird_props.left + bird_props.width > pipe_sprite_props.left && bird_props.top < pipe_sprite_props.top + pipe_sprite_props.height && bird_props.top + bird_props.height > pipe_sprite_props.top){
game_state = 'End';
message.innerHTML = 'Game Over'.fontcolor('red') + '<br>Press Enter To Restart';
message.classList.add('messageStyle');
img.style.display = 'none';
return;
}else{
if(pipe_sprite_props.right < bird_props.left && pipe_sprite_props.right + move_speed >= bird_props.left && element.increase_score == '1'){
score_val.innerHTML =+ score_val.innerHTML + 1;
}
element.style.left = pipe_sprite_props.left - move_speed + 'px';
}
}
});
requestAnimationFrame(move);
}
requestAnimationFrame(move);

let bird_dy = 0;
function apply_gravity(){
if(game_state != 'Play') return;
bird_dy = bird_dy + grativy;
document.addEventListener('keydown', (e) => {
if(e.key == 'ArrowUp' || e.key == ' '){
img.src = 'images/Bird-II.png';
bird_dy = -7.6;
}
});

document.addEventListener('keyup', (e) => {
if(e.key == 'ArrowUp' || e.key == ' '){
img.src = 'images/Bird-I.png';
}
});

if(bird_props.top <= 0 || bird_props.bottom >= background.bottom){
game_state = 'End';
message.style.left = '28vw';
window.location.reload();
message.classList.remove('messageStyle');
return;
}
bird.style.top = bird_props.top + bird_dy + 'px';
bird_props = bird.getBoundingClientRect();
requestAnimationFrame(apply_gravity);
}
requestAnimationFrame(apply_gravity);

let pipe_seperation = 0;

let pipe_gap = 40;

function create_pipe(){
if(game_state != 'Play') return;

if(pipe_seperation > 115){
pipe_seperation = 0;

let pipe_posi = Math.floor(Math.random() * 43) + 8;
let pipe_sprite_inv = document.createElement('div');
pipe_sprite_inv.className = 'pipe_sprite';
pipe_sprite_inv.style.top = pipe_posi - 70 + 'vh';
pipe_sprite_inv.style.left = '100vw';

document.body.appendChild(pipe_sprite_inv);
let pipe_sprite = document.createElement('div');
pipe_sprite.className = 'pipe_sprite';
pipe_sprite.style.top = pipe_posi + pipe_gap + 'vh';
pipe_sprite.style.left = '100vw';
pipe_sprite.increase_score = '1';

document.body.appendChild(pipe_sprite);
}
pipe_seperation++;
requestAnimationFrame(create_pipe);
}
requestAnimationFrame(create_pipe);
}
87 changes: 87 additions & 0 deletions SinglePlayer - Games/Flappy_Bird_Game/style.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
* {
margin: 0;
padding: 0;
box-sizing: border-box;
font-family: Arial, Helvetica, sans-serif;
}
body{
height: 700px;
width: 700px
}
.background {
height: 100vh;
width: 100vw;
background: url('images/background-img.png') no-repeat center center fixed;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
}
.bird {
height: 100px;
width: 130px;
position: fixed;
top: 40vh;
left: 30vw;
z-index: 100;
}
.pipe_sprite {
position: fixed;
top: 40vh;
left: 100vw;
height: 70vh;
width: 6vw;
background:radial-gradient(rgb(177, 140, 5) 50%, rgb(210, 165, 4));
border: 3px solid black;
}
.message {
position: absolute;
z-index: 10;
color: black;
top: 50%;
left: 50%;
font-size: 5em;
transform: translate(-50%, -50%);
text-align: center;
}
.messageStyle{
background: white;
padding: 30px;
box-shadow: rgba(0, 0, 0, 0.24) 0px 3px 8px;
border-radius: 4.5%;
}
.score {
position: fixed;
z-index: 10;
height: 10vh;
font-size: 10vh;
font-weight: 100;
color: white;
-webkit-text-stroke-width: 2px;
-webkit-text-stroke-color: black;
top: 0;
left: 0;
margin: 10px;
font-family: Arial, Helvetica, sans-serif;
}
.score_val {
color: gold;
font-weight: bold;
}
@media only screen and (max-width: 1080px) {
.message{
font-size: 50px;
top: 50%;
white-space: nowrap;
}
.score{
font-size: 8vh;
}
.bird{
width: 120px;
height: 90px;
}
.pipe_sprite{
width: 14vw;
}
}
51 changes: 51 additions & 0 deletions additionalpage/game.html
Original file line number Diff line number Diff line change
Expand Up @@ -9067,7 +9067,58 @@ <h4 class="text-white uppercase game-card-title">Castle_Escape_Game</h4>
</div>
<!--Card end-->

<!--Card start-->

<!-- ------------- -->
<!-- Flappy Bird Game -->
<!-- ------------- -->
<div class="game-card">
<div class="game-card-top img-fit-cover">
<img src="../assets/images/flappy.png"
alt="">
<div class="ratings-count">
41
<img src="../assets/icons/star-black.svg" alt="" class="ms-2">
</div>
</div>
<div class="game-card-bottom">
<div class="share-icon text-2xl" onclick="copyLink(this)">
<i class="fas fa-share-alt"></i>
<input type="hidden"
value="..\SinglePlayer - Games\Flappy_Bird_Game\index.html" />
</div>
<div class="flex flex-col sm:flex-row justify-between items-start flex-wrap">
<div class="py-1">
<h4 class="text-white uppercase game-card-title">Flappy Bird Game</h4>
<p class="para-text">Flappy Bird is an endless game that involves a bird that the player can control. The player has to save the bird from colliding with the hurdles like pipes. Each time the bird passes through the pipes, the score gets incremented by one...</p>
</div>
<div class="star-rating mt-2 sm:mt-0 py-1">
<img src="../assets/icons/star-green.svg">
<img src="../assets/icons/star-green.svg">
<img src="../assets/icons/star-green.svg">
<img src="../assets/icons/star-green.svg">
<img src="../assets/icons/star-green-half.svg">
</div>
</div>
<div class="block-wrap flex justify-between items-end">
<div class="details-group">
<div class="flex items-center">
<p class="font-semibold">Release Date: &nbsp;</p>
<p>21.05.2024</p>
</div>
<div class="flex items-center">
<p class="font-semibold">Updated: &nbsp;</p>
<p>Action | Desktop</p>
</div>
</div>
<div class="flex flex-col items-end justify-between">
<a target="_blank" href="../SinglePlayer - Games/Flappy_Bird_Game/"
class="btn-primary uppercase">Play Now</a>
</div>
</div>
</div>
</div>
<!--card end-->


<!--Card start-->
Expand Down
Binary file added assets/images/flappy.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit a05754a

Please sign in to comment.