Share your repls and programming experiences

← Back to all posts
[ CHALLENGE ] Flappy Bird
h
Coder100 (17006)

Flappy Bird Challenge

Can you make a flappy bird game in 10 minutes?

About

I created this in VSCODE in 10 minutes (9:46)! I polished it up later the day to make it better and have a high score. See if you can do better! The minimum requirements are to have a pipe and a bird, when you die it shows a death screen. I accomplished this with classes and a variable. By the way, this will become something bigger :D

btw, click and hold to fly ;)

How To Play

Mouse press to fly or else you fall.

Closing

Send repls! Language can be any.

Comments
hotnewtop
firefish (1004)

How on earth do you move the bird, tried click, space, up arrow... I DON'T KNOW

EDIT: I KNOW NOW, DON'T PING ME

firefish (1004)

@JosephSanthosh I tried clicking but nothing happens

potatojs (844)

yeah it's happening to me to :(
@firefish

firefish (1004)

@potatojs I just realised, you click and it moves ever so slightly, not a jump like the original

potatojs (844)

lol i just discovered that a minute ago when i wa looking at the code XD
actually making it like that is way easier than making it jumb
@firefish

firefish (1004)

@potatojs perfect timing then
(also it's jump not jumb)

potatojs (844)

jumb jump it's all the same
right?
@firefish

Coder100 (17006)

yes smooth flying, not like a bird more like a fish @firefish

firefish (1004)

@Coder100 stop c y c l e s q u e e z i n g

firefish (1004)

@Coder100 Does jumb rhyme with dumb? That is the question

potatojs (844)

lmao ik just my spelling is to bad
:P
@firefish

PolarisHD (0)

@firefish yes i took a look its more of a step than a leap

firefish (1004)

you have to put a space between the text and the pungery @sojs

firefish (1004)

@PolarisHD I know, I'm used to it going boing boing boing, not

crawl crawl crawl
firefish (1004)

@Coder100 make the jump of the bird more noticable

PolarisHD (0)

@firefish rip, at least its not like one of those scam games where you dont jump at all. rip

firefish (1004)

@PolarisHD The grilled cookie himself is a scam, I understand

PolarisHD (0)

@firefish haahaa. this was not a scam. err this was a not scam

firefish (1004)

@PolarisHD Well the grilled cookie is a scam, donno about his projects though

mathiasaboye (85)

@firefish I think you are supposed to hold click that worked for me

ethanshaozz1928 (22)

@firefish you have to hole the mouse button

davidyu9 (20)

@firefish read the description click and hold

HermioneGrange2 (23)

you just have to click and hold to make it go up and let go to make it go down @firefish

firefish (1004)

@HermioneGrange2 ALRIGHT DO YOU KNOW HOW MANY PINGS I HAVE OBTAINED FROM THIS COMMENT

HermioneGrange2 (23)

hmmm... probably higher than any number I can type @firefish

firefish (1004)

@HermioneGrange2 About 70 total (not all in one go, but yeah)

headiscoding (944)

Amazing how you made this in 10 minutes! Good job!

Axrevyn (291)

10 minutes? Huh. With my inexperience, it would take me 10 months to achieve the same result.

Coder100 (17006)

@Axrevyn oof
well, you'll get there someday!

IGotGot (0)

...mhm i aint making dat

3DKTH3PR0 (3)

clap clap clap HOW DO YOU MAKE THISSSSSSSSSSSSSSSSSS

firefish (1004)

@Coder100 I must admit this is easier than normal flappy bird... in original flappy bird I can't even get past the first pipe lol

[deleted]

var keys = [];

var count = 0;
var tick = 0;

var score = 0;

var deathTicks = 0;

var buttons = [];
var gameState = 0; //0 = main-menu, 1 = game, (2 = game over)

var objects = [];

var started = false;

var keyPressed = function() {
keys[keyCode] = true;
};
var keyReleased = function() {
keys[keyCode] = false;
};

var addButton = function(id, state, x, y, width, height, text) {
var button = {};

button.id = id;
button.state = state;
button.x = x;
button.y = y;
button.width = width;
button.height = height;
button.text = text;
button.pressed = false;

buttons.push(button);

};

var FlappyBird = function() {
this.x = 100;
this.y = 150;

this.descentSpeed = 10;

this.height = 0;
this.heightIncrement = 0.25;

this.dead = false;

this.draw = function() {
    pushMatrix(); {
        var x = this.x + 16;
        var y = this.y + 12;
        
        var angle = max(-20, (this.descentSpeed - 10) * 4.1);
        if(angle <= 0) {
            
        }
        
        translate(x, y);
        rotate(angle);
        scale(0.80);
        translate(-x, -y);
        
        translate(this.x, this.y);
        this.drawSprite();
    } popMatrix();
};

this.drawSprite = function() {
    noStroke();
    
    fill(255, 255, 255);
    rect(2, 8, 10, 8);
    rect(8, 4, 4, 2);
    rect(12, 2, 6, 2);
    rect(16, 2, 10, 10);
    rect(26, 4, 4, 10);
    
    fill(23, 23, 23);
    rect(0, 8, 2, 2);
    rect(0, 10, 2, 2);
    rect(0, 12, 2, 2);
    rect(2, 6, 2, 2);
    rect(2, 14, 2, 2);
    rect(4, 6, 2, 2);
    rect(4, 16, 2, 2);
    rect(4, 18, 2, 2);
    rect(6, 4, 2, 2);
    rect(6, 6, 2, 2);
    rect(6, 16, 2, 2);
    rect(6, 20, 2, 2);
    rect(8, 2, 2, 2);
    rect(8, 6, 2, 2);
    rect(8, 16, 2, 2);
    rect(8, 20, 2, 2);
    rect(10, 2, 2, 2);
    rect(10, 8, 2, 2);
    rect(10, 14, 2, 2);
    rect(10, 22, 2, 2);
    rect(12, 0, 2, 2);
    rect(12, 10, 2, 2);
    rect(12, 12, 2, 2);
    rect(12, 22, 2, 2);
    rect(14, 0, 2, 2);
    rect(14, 22, 2, 2);
    rect(16, 0, 2, 2);
    rect(16, 4, 2, 2);
    rect(16, 6, 2, 2);
    rect(16, 8, 2, 2);
    rect(16, 16, 2, 2);
    rect(16, 22, 2, 2);
    rect(18, 0, 2, 2);
    rect(18, 2, 2, 2);
    rect(18, 10, 2, 2);
    rect(18, 14, 2, 2);
    rect(18, 18, 2, 2);
    rect(18, 22, 2, 2);
    rect(20, 0, 2, 2);
    rect(20, 12, 2, 2);
    rect(20, 16, 2, 2);
    rect(20, 20, 2, 2);
    rect(22, 0, 2, 2);
    rect(22, 12, 2, 2);
    rect(22, 16, 2, 2);
    rect(22, 20, 2, 2);
    rect(24, 0, 2, 2);
    rect(24, 12, 2, 2);
    rect(24, 16, 2, 2);
    rect(24, 20, 2, 2);
    rect(26, 2, 2, 2);
    rect(26, 6, 2, 2);
    rect(26, 8, 2, 2);
    rect(26, 12, 2, 2);
    rect(26, 16, 2, 2);
    rect(26, 20, 2, 2);
    rect(28, 4, 2, 2);
    rect(28, 12, 2, 2);
    rect(28, 16, 2, 2);
    rect(28, 20, 2, 2);
    rect(30, 6, 2, 2);
    rect(30, 8, 2, 2);
    rect(30, 10, 2, 2);
    rect(30, 12, 2, 2);
    rect(30, 16, 2, 2);
    rect(30, 20, 2, 2);
    rect(32, 12, 2, 2);
    rect(32, 16, 2, 2);
    rect(32, 18, 2, 2);
    rect(34, 14, 2, 2);
    
    fill(247, 255, 0);
    rect(2, 12, 2, 2);
    rect(4, 14, 2, 2);
    rect(6, 14, 2, 2);
    rect(8, 14, 2, 2);
    rect(10, 6, 2, 2);
    rect(10, 12, 2, 2);
    rect(12, 4, 2, 2);
    rect(12, 6, 2, 2);
    rect(12, 8, 2, 2);
    rect(12, 14, 2, 2);
    rect(14, 4, 2, 12);
    rect(16, 10, 2, 6);
    rect(18, 12, 2, 2);
    
    fill(244, 202, 22);
    rect(6, 18, 2, 2);
    rect(8, 18, 2, 2);
    rect(10, 16, 6, 6);
    rect(16, 18, 2, 4);
    rect(18, 20, 2, 2);
    
    fill(214, 43, 43);
    rect(18, 16, 2, 2);
    rect(20, 14, 14, 2);
    rect(20, 18, 12, 2);
};

this.update = function() {
    if(gameState === 1 && started) {
        this.controls();
    
        this.y += this.descentSpeed;
        
        this.descentSpeed += 1.25;
    } else if(gameState === 1) {
        this.y += this.height;
        
        this.height += this.heightIncrement;
        if(abs(this.height) >= 1.25) {
            this.heightIncrement *= -1;
        }
    }
    
    if(this.dead) {
        this.descentSpeed = min(32, this.descentSpeed + 2.0);
        
        this.y += 12;
        
        deathTicks++;
        
        if(this.y >= 332) {
            this.y = 332;
        }
        
        if(deathTicks === 15) {
            addButton(0, 2, 135, 310, 130, 38, "PLAY AGAIN");
        }
    }
};

this.controls = function() {
    if((mouseIsPressed || keys[32]) && !this.dead) {
        this.descentSpeed = -7;
    }
};

};
var FlappiestBird = new FlappyBird();

var initProgram = function() {
buttons = [];

addButton(0, 0, 50, 290, 130, 38, "START");
addButton(1, 0, 220, 290, 130, 38, "SCORES");

score = 0;
deathTicks = 0;

count = 0;
tick = 0;

gameState = 0;
objects = [];
started = false;

FlappiestBird = new FlappyBird();

};
initProgram();

var buttonPressed = function(button) {
switch(button.state) {
case 0:
switch(button.id) {
case 0:
gameState = 1;
score = 0;
started = false;
break;
default:
break;
}
break;
case 2:
switch(button.id) {
case 0:
initProgram();
break;
default:
break;
}
break;
default:
break;
}
};

var addObject = function() {
var lastY = random(20) + 150;

if(objects.length > 0) {
    var lastObject = objects[objects.length - 1];
    lastY = lastObject.y;
}

var object = {};

object.y = max(90, min(260, lastY + random(200) - 100));
object.x = 450;

objects.push(object);

};

var drawPixelatedEllipse = function(x, y, width, height, colour) {
fill(colour);
ellipse(x, y, width, height);

noStroke();
fill(red(colour) + 10, green(colour) + 10, blue(colour) + 10);
for(var i = 0; i <= 360; i += 7) {
    var xx = x + cos(i) * (width / 2);
    var yy = y + sin(i) * (height / 2);
    
    rect(xx - 3, yy - 3, 6, 6);
}

};

var mousePressed = function() {
if(gameState === 1) {
if(!started) {
started = true;
}
}

for(var i = 0; i < buttons.length; i++) {
    var button = buttons[i];
    
    if(button.state === gameState) {
        if(mouseX >= button.x - 1 && mouseX <= button.x + button.width + 1 && 
            mouseY >= button.y - 1 && mouseY <= button.y + button.height + 1) {
            buttonPressed(button);
        }
    }
}

};

var die = function() {
FlappiestBird.dead = true;
gameState = 2;
deathTicks = 0;
};

var intersects = function(r1, r2) {
return !(r2.left >= r1.right ||
r2.right <= r1.left ||
r2.top >= r1.bottom ||
r2.bottom <= r1.top);
};

draw = function() {
background(91, 199, 199);

if(gameState !== 2) {
    count += 3;
    if(count >= 15) {
        count = 0;
    }
}

pushMatrix();

translate(200, 200);
scale((deathTicks > 0 && deathTicks <= 10)? 1.01 : 1.0);
translate(-200, -200);

if(deathTicks > 0 && deathTicks <= 10) {
    translate(random(4) - 2, random(4) - 2);
}
//Draw background
noStroke();

fill(255, 255, 255);
drawPixelatedEllipse(20, 320, 80, 80, color(255, 255, 255));
drawPixelatedEllipse(70, 340, 80, 80, color(255, 255, 255));
drawPixelatedEllipse(115, 325, 80, 75, color(255, 255, 255));
drawPixelatedEllipse(160, 330, 50, 60, color(255, 255, 255));
drawPixelatedEllipse(200, 320, 60, 60, color(255, 255, 255));
drawPixelatedEllipse(240, 325, 60, 80, color(255, 255, 255));
drawPixelatedEllipse(270, 335, 60, 80, color(255, 255, 255));
drawPixelatedEllipse(310, 330, 60, 60, color(255, 255, 255));
drawPixelatedEllipse(350, 325, 50, 60, color(255, 255, 255));
drawPixelatedEllipse(390, 320, 70, 80, color(255, 255, 255));

drawPixelatedEllipse(112, 370, 76, 76, color(29, 196, 79));
drawPixelatedEllipse(251, 378, 83, 90, color(29, 196, 79));
drawPixelatedEllipse(0, 367, 74, 89, color(29, 196, 79));
drawPixelatedEllipse(350, 368, 73, 60, color(29, 196, 79));
drawPixelatedEllipse(140, 376, 72, 71, color(29, 196, 79));
drawPixelatedEllipse(434, 353, 70, 85, color(29, 196, 79));
drawPixelatedEllipse(207, 380, 77, 86, color(29, 196, 79));
drawPixelatedEllipse(320, 373, 73, 84, color(29, 196, 79));
drawPixelatedEllipse(82, 372, 75, 73, color(29, 196, 79));
drawPixelatedEllipse(221, 380, 77, 84, color(29, 196, 79));
drawPixelatedEllipse(388, 375, 77, 72, color(29, 196, 79));
drawPixelatedEllipse(273, 380, 90, 75, color(29, 196, 79));
drawPixelatedEllipse(404, 388, 88, 88, color(29, 196, 79));
drawPixelatedEllipse(176, 378, 85, 79, color(29, 196, 79));
drawPixelatedEllipse(86, 368, 81, 83, color(29, 196, 79));
drawPixelatedEllipse(293, 378, 88, 90, color(29, 196, 79));
drawPixelatedEllipse(52, 376, 84, 84, color(29, 196, 79));
drawPixelatedEllipse(24, 376, 74, 81, color(29, 196, 79));

if(gameState === 1 || gameState === 2) {
    if(!FlappiestBird.dead) {
        if(FlappiestBird.y >= 320) {
            die();
        }
    }
    var playerAABB = {};
    
    playerAABB.left = FlappiestBird.x;
    playerAABB.right = FlappiestBird.x + 34;
    playerAABB.top = FlappiestBird.y;
    playerAABB.bottom = FlappiestBird.y + 24;
    
    //Draw obstacles
    var index = objects.length;
    while(index--) {
        var object = objects[index];
        
        object.x -= FlappiestBird.dead? 0 : 3;
        
        var topAABB = {};
        
        topAABB.left = object.x - 5;
        topAABB.right = object.x + 45;
        topAABB.top = -5000;
        topAABB.bottom = object.y - 55;
        
        var bottomAABB = {};
        
        bottomAABB.left = object.x - 5;
        bottomAABB.right = object.x + 45;
        bottomAABB.top = object.y + 38;
        bottomAABB.bottom = 300;
        
        if(abs(object.x - FlappiestBird.x) <= 1) {
            score++;
        }
        
        if(intersects(playerAABB, topAABB) || intersects(playerAABB, bottomAABB)) {
            die();
        }
        
        pushMatrix(); {
            translate(0, -10);
            
            strokeWeight(2);
            stroke(0, 0, 0);
            
            fill(56, 207, 39);
            
            rect(object.x, -2, 40, object.y - 50);
            rect(object.x - 5, object.y - 70, 50, 25);
            
            noStroke();
            
            fill(255, 255, 255, 100);
            
            rect(object.x, 0, 11, object.y - 71);
            rect(object.x - 4, object.y - 66, 11, 20);
            rect(object.x + 9, object.y - 66, 2, 20);
            rect(object.x + 13, 0, 2, object.y - 71);
            
            fill(255, 255, 255, 150);
            
            rect(object.x + 2.5, 0, 3, object.y - 71);
            rect(object.x - 1.5, object.y - 66, 3, 20);
            
            fill(0, 0, 0, 100);
            
            rect(object.x + 40, 0, -5, object.y - 71);
            rect(object.x + 33, 0, -2, object.y - 71);
            rect(object.x - 4, object.y - 70, 50, 3);
            rect(object.x + 39, object.y - 67, 5, 22);
            rect(object.x + 35, object.y - 67, 2, 22);
            
            fill(0, 0, 0, 50);
            rect(object.x - 4, object.y - 67, 39, 1);
            rect(object.x + 37, object.y - 67, 3, 1);
        } popMatrix();
        
        pushMatrix(); {
            translate(0, 10);
            
            strokeWeight(2);
            stroke(0, 0, 0);
            
            fill(56, 207, 39);
            rect(object.x, object.y + 50, 40, 400);
            rect(object.x - 5, object.y + 30, 50, 25);
            
            noStroke();
            fill(255, 255, 255, 100);
            rect(object.x, object.y + 56, 11, 300);
            rect(object.x + 13, object.y + 56, 2, 300);
            rect(object.x - 4, object.y + 31, 11, 20);
            rect(object.x + 9, object.y + 31, 2, 20);
            
            fill(255, 255, 255, 150);
            rect(object.x + 2.5, object.y + 56, 3, 300);
            rect(object.x - 1.5, object.y + 31, 3, 20);
            
            fill(0, 0, 0, 100);
            rect(object.x + 40, object.y + 56, -5, 300);
            rect(object.x + 33, object.y + 56, -2, 300);
            rect(object.x - 4, object.y + 52, 50, 3);
            rect(object.x + 39, object.y + 30, 5, 22);
            rect(object.x + 35, object.y + 30, 2, 22);
            
            fill(0, 0, 0, 50);
            rect(object.x - 4, object.y + 51, 39, 1);
            rect(object.x + 37, object.y + 51, 3, 1);
        } popMatrix();
        
        if(object.x <= -50) {
            objects.splice(index, 1);
        }
    }
}
noStroke();


fill(250, 215, 73);
rect(0, 360, 400, 40);
fill(84, 222, 0);
rect(0, 350, 400, 12);
fill(255, 255, 255, 200);
rect(0, 350, 400, 2);
fill(0, 0, 0);
rect(0, 349, 400, 1);

fill(0, 0, 0, 40);
rect(0, 360, 400, 3);
rect(0, 361, 400, 3);
rect(0, 362, 400, 3);

fill(124, 242, 0);
for(var i = 0; i < 30; i++) {
    var x = i * 15 - count;
    quad(x, 352, x + 7, 352, x, 360, x - 7, 360);
}

tick++;
if(this.gameState !== 0) {
    FlappiestBird.update();
    FlappiestBird.draw();
}

popMatrix();

if(gameState === 1) {
    if(started) {
        if(tick % 50 === 0) {
            addObject();
        }
        
        fill(255, 255, 255);
        text(score, 200, 130);
    } else {
        fill(255, 0, 0);
        strokeWeight(2);
        stroke(255, 255, 255);
        
        beginShape();
        vertex(205, 227);
        vertex(213, 220);
        vertex(237, 220);
        vertex(237, 234);
        vertex(213, 234);
        vertex(205, 227);
        endShape();
        
        fill(255, 255, 255);
        textFont(createFont("Monospace", 10), 12);
        text("TAP", 223, 227);
        
        noStroke();
        
        pushMatrix(); {
            translate(-10, 28);
            
            fill(255, 255, 255);
            rect(202, 200, 2, 28);
            rect(200, 218, 2, 8);
            rect(198, 212, 2, 12);
            rect(200, 212, 16, 16);
            rect(206, 208, 6, 4);
            
            fill(0, 0, 0);
            rect(200, 200, 2, 18);
            rect(204, 200, 2, 14);
            rect(202, 198, 2, 2);
            rect(198, 210, 2, 2);
            rect(196, 212, 2, 12);
            rect(198, 224, 2, 2);
            rect(200, 226, 2, 2);
            rect(202, 228, 12, 2);
            rect(206, 206, 2, 2);
            rect(208, 208, 2, 6);
            rect(210, 208, 2, 2);
            rect(212, 210, 4, 2);
            rect(212, 212, 2, 4);
            rect(216, 212, 2, 12);
            rect(214, 224, 2, 4);
        } popMatrix();
        
        stroke(0, 0, 0);
        strokeWeight(1.5);
        
        line(189, 225, 183, 216);
        line(193, 223, 193, 213);
        line(197, 225, 203, 216);
    }
}

//Draw buttons
for(var i = 0; i < buttons.length; i++) {
    var button = buttons[i];
    
    if(button.state === gameState) {
        if(mouseX >= button.x - 1 && mouseX <= button.x + button.width + 1 && 
            mouseY >= button.y - 1 && mouseY <= button.y + button.height + 1) {
            button.pressed = true;
        } else {
            button.pressed = false;
        }
        
        //Draw
        stroke(112, 73, 14);
        strokeWeight(2);
        
        fill(255, 255, 255);
        rect(button.x, button.y + (button.pressed? 2 : 0), button.width, button.height);
        
        noStroke();
        fill(209, 101, 30);
        rect(button.x + 3, button.y + 3 + (button.pressed? 2 : 0), button.width - 6, button.height - 6);
        
        fill(255, 255, 255);
        textAlign(CENTER, CENTER);
        textFont("Monospace", 16);
        text(button.text, button.x + button.width / 2, button.y + button.height / 2 + (button.pressed? 2 : 0));
        
        fill(112, 73, 14);
        rect(button.x - 1, button.y + button.height + 1, button.width + 2, 2);
    }
}

if(gameState === 2) {
    if(deathTicks === 2) {
        noStroke();
        fill(255, 255, 255);
        rect(0, 0, 400, 400);
    }
    if(FlappiestBird.y >= 325 && deathTicks >= 15) {
        strokeWeight(2);
        stroke(0, 0, 0);
        
        fill(222, 213, 146);
        rect(75, 150, 250, 150);
        
        stroke(207, 172, 91);
        fill(222, 216, 151);
        rect(80, 155, 240, 140);
        
        stroke(217, 197, 126);
        rect(81, 156, 238, 138);
        
        fill(242, 232, 172);
        rect(76, 152, 248, 0.1);
        
        fill(196, 153, 72);
        textSize(15);
        
        textAlign(RIGHT, CENTER);
        text("SCORE", 305, 175);
        text("BEST", 305, 225);
        
        fill(255, 255, 255);
        textSize(20);
        
        text(score, 305, 200);
        text(score, 305, 250);
    }
}

};

[deleted]

That should make a decent flappy bird game :) @HyperGamerStuds

poetaetoes (293)

too hard!!!

make it go faster!!!

Bigbodyboy21 (24)

good, but try a better bird

tankerguy1917 (174)

i cant get it to jump, maybe its because im on a laptop, but i dont know
looks good though

JSDRAGONCODER (7)

there is error says "unexpected token = expected ( before methods parameter list"

[deleted]

Nice game!

RahulChoubey1 (136)

The transition to the lose screen is too sudden. How about showing the bird on the pipe for the lose screen?

Spitfier720 (24)

my bird keeps falling and i keep dying pls help

[deleted]

Coder 100 join my group

Coder100 (17006)

try clicking and holding lmao @RohilPatel

Coder100 (17006)

Oh haha you don't have the latest JS get a better browser @RohilPatel

Kudos (114)

@coder100
Whoaaaaaaaaaaaa......
I need to reserve more time for learning P5js..
What do you want to do for your career?
Web Dev, Game dev, or what?
I would really like to see you transition into Three.js.
(Because the only popular 2d game nowadays is Among Us.)
But this is still VERY great for 10 min.

Coder100 (17006)

@Kudos lol thanks!!
three.js is cool, I've tried it before, but I'm going to use p5.js's primitive 3D :)

Leroy01010 (419)

my friends have talked about among us...

@Kudos

Gabby8C0des8 (27)

lol i keep dying in the beginning, also great game :) @Coder100

Jeydin21 (104)

No way you coded this in 10 minutes, look at game.js! But if you actually did, gg I guess.

[deleted]

lol u cant move

Coder100 (17006)

Click and hold, I'll fix that in a bit lol @jason37

Bookie0 (5977)

pretty cool!

just one thing, if this is flappy bird...where are the wings?! lmao

also maybe instead of having to click on trackpad/mouse, maybe change it to arrows or space bar as it would be a bit easier...

;)

ChungusFam (9)

I kept jitter-clicking it and it still doesn't go up after it does once.

Yashmit (0)

Actually CLICK AND HOLD

CodingRedpanda (179)

I used to have a flappy bird project that I worked on for like a couple months ... let me see if i can find it ...

CodingRedpanda (179)

here, i also had a couple of friends help so, thats why the source looks so professional --> Flappy! <-- @ridark

CodingRedpanda (179)

ikr im thinking about adding a background to it so i might be able to, and im also thinking about adding modes (easy, hard, impossible) @Coder100

Coder100 (17006)

@ridark cool
the font should be fixed first lol

Coder100 (17006)

it really defeats the pixel art @ridark

carlsagan (0)

@ridark just an observation, but you can fly over the pipes. Just thought to let you know. :)

Coder100 (17006)

ahhh did my collisions go bad? Send screenshot @carlsagan

carlsagan (0)

no, i apologize, i meant to reply to ridark with his game. Yours is really impressive. @Coder100

CodingRedpanda (179)

hmmm i will fix that... ill duplicate the floor to the ceiling @carlsagan

sojs (296)

That game is insanely hard to play. @ridark

CodingRedpanda (179)

we made it like the real game, and like any retro game they are nearly impossible @sojs