How to Create Flappy Bird Game In Python | Free Tutorial With Souce Code

Games by their very nature should be enjoyable. So for what reason should the way toward making them be dull and entangled? Rather than enduring long stretches of talks and game improvement hypothesis, this tutorial permits you to make a game straight away, learning as you go.


Learn Python game Development by making your own game

Module we need for this Flappy Bird Game 

  • Pygame
  • sys
  • random
Command for installing required modules - 


1 . Command for installing pygame-
pip install pygame
2 . Module sys is preinstalled in your machine

3 . Module random is preinstalled in your machine

For installing python programming language simple to have to click to this link given below -

 Download Python from this link

For Develop a clone of Flappy Bird we utilizing Python game programming  ( pygame)

 
  Code of this project - 

#!/usr/bin/python3



import pygame

from pygame.locals import *

import sys

import random



FPS = 32 

SCREENWIDTH = 289

SCREENHEIGHT = 511

SCREEN = pygame.display.set_mode((SCREENWIDTH, SCREENHEIGHT))

GROUNDY = SCREENHEIGHT * 0.8

GAME_SPRITES = {}

GAME_SOUND = {}

PLAYER = 'bird.png'

BACKGROUND = 'back.png'

PIPE = 'pipe.png'





def welcomeScreen():



    playerx = int(SCREENWIDTH/5)

    playery = int((SCREENHEIGHT - GAME_SPRITES['player'].get_height())/2)

    messagex = int((SCREENWIDTH - GAME_SPRITES['message'].get_width())/2)

    messagey = int(SCREENHEIGHT*0.13)

    basex = 0

    while True:

        for event in pygame.event.get():



            if event.type == QUIT or (event.type == KEYDOWN and event.key == K_ESCAPE):

                pygame.quit()

                sys.exit()



            # space key up



            elif event.type == KEYDOWN and (event.key==K_SPACE or event.key== K_UP):

                return

            else : 

                SCREEN.blit(GAME_SPRITES['background'],(0,0))

                SCREEN.blit(GAME_SPRITES['player'],(playerx,playery))

                # SCREEN.blit(GAME_SPRITES['message'],(messagex,messagey))

                SCREEN.blit(GAME_SPRITES['base'],(basex,GROUNDY))

                pygame.display.update()

                FPSCLOCK.tick(FPS)









def mainGame():

    score = 0

    playerx= int(SCREENWIDTH/5)

    playery = int(SCREENWIDTH/2)

    basex = 0



    #pipes



    newPipe1 = getRandomPipe()

    newPipe2 = getRandomPipe()



    upperPipes = [

        {'x': SCREENWIDTH+200, 'y':newPipe1[0]['y']},

        {'x': SCREENWIDTH+200+(SCREENWIDTH/2),'y':newPipe2[0]['y']},

    ]



    lowerPipes = [

        {'x': SCREENWIDTH+200, 'y':newPipe1[1]['y']},

        {'x': SCREENWIDTH+200+(SCREENWIDTH/2),'y':newPipe2[1]['y']},

    ]



    pipeVelX = -4



    playerVelY = -9

    playerMaxVelY = 10

    playerMinVelY = -8

    playerAccY = 1



    playerFlapAccv = -8 

    playerFlapped = False



    while True:

        for event in pygame.event.get():

            if event.type == QUIT or (event.type == KEYDOWN and event.key == K_ESCAPE):

                pygame.quit()

                sys.exit()

            if event.type == KEYDOWN and (event.key == K_SPACE or event.key == K_UP):

                if playery > 0:

                    playerVelY = playerFlapAccv

                    playerFlapped = True

                    GAME_SOUND['wing'].play()



        crashTest = isCollide(playerx, playery, upperPipes ,lowerPipes)

        

        if crashTest:

            return 

        

        #scroce



        playerMidPos = playerx+ GAME_SPRITES['player'].get_width()/2

        for pipe in upperPipes:

            pipeMidPos = pipe['x']+GAME_SPRITES['pipe'][0].get_width()/2

            if pipeMidPos<= playerMidPos < pipeMidPos+4:

                score +=1

                print(f"your score is {score}")

                GAME_SOUND['point'].play()



        if playerVelY <playerMaxVelY and not playerFlapped:

            playerVelY += playerAccY



        if playerFlapped:

            playerFlapped = False



        playerHeight = GAME_SPRITES['player'].get_height()

        playery = playery + min(playerVelY, GROUNDY - playery - playerHeight) 



        #moves pipe left



        for upperPipe , lowerPipe in zip(upperPipes , lowerPipes):

            upperPipe['x'] += pipeVelX

            lowerPipe['x'] += pipeVelX



        if 0<upperPipes[0]['x']<5:

            newpipe = getRandomPipe()

            upperPipes.append(newpipe[0])

            lowerPipes.append(newpipe[1])



        if upperPipes[0]['x'] < -GAME_SPRITES['pipe'][0].get_width():

            upperPipes.pop(0)

            lowerPipes.pop(0)



        SCREEN.blit(GAME_SPRITES['background'],(0 , 0))

        for upperPipe , lowerPipe in zip(upperPipes , lowerPipes):

            SCREEN.blit(GAME_SPRITES['pipe'][0],(upperPipe['x'] , upperPipe['y']))

            SCREEN.blit(GAME_SPRITES['pipe'][1],(lowerPipe['x'] , lowerPipe['y']))

            



        SCREEN.blit(GAME_SPRITES['base'],(basex , GROUNDY))

        SCREEN.blit(GAME_SPRITES['player'],(playerx , playery))

        

        myDigits = [int(x) for x in list(str(score))]

        width = 0 

        for digit in myDigits:

            width += GAME_SPRITES['numbers'][digit].get_width()

        Xoffset = (SCREENWIDTH - width)/2



        for digit in myDigits:

            SCREEN.blit(GAME_SPRITES['numbers'][digit],(Xoffset,SCREENHEIGHT*0.12))

            Xoffset += GAME_SPRITES['numbers'][digit].get_width()



        pygame.display.update()

        FPSCLOCK.tick(FPS)

        

        #colliding



def isCollide(playerx,playery,upperPipes,lowerPipes):

    if playery> GROUNDY - 25 or playery<0:

        GAME_SOUND['hit'].play()

        return True



    for pipe in upperPipes:

        pipeHeight = GAME_SPRITES['pipe'][0].get_height()

        if(playery < pipeHeight +pipe['y'] and abs(playerx - pipe['x']) <GAME_SPRITES['pipe'][0].get_width()):

            GAME_SOUND['hit'].play()

            return True



    for pipe in lowerPipes:

        if (playery + GAME_SPRITES['player'].get_height() > pipe['y']) and abs(playerx - pipe['x']) < GAME_SPRITES['pipe'][0].get_width():

            GAME_SOUND['hit'].play()

            return True



    return False



def getRandomPipe():

    """

    pipes



    """



    pipeHeight = GAME_SPRITES['pipe'][0].get_height()

    offset = SCREENHEIGHT/3

    y2 = offset + random.randrange(0, int (SCREENHEIGHT - GAME_SPRITES['base'].get_height() - 1.2*offset))

    pipeX = SCREENWIDTH+10

    y1 = pipeHeight - y2 + offset

    pipe = [

       {'x' : pipeX , 'y' : -y1},

       {'x' : pipeX , 'y': y2}



    ] 

    return pipe









if __name__ == '__main__':

    pygame.init()

    FPSCLOCK = pygame.time.Clock()

    pygame.display.set_caption("Flappy Bird Game By Abhishek ")



    GAME_SPRITES['numbers'] = (

        pygame.image.load('0n.png').convert_alpha(),

        pygame.image.load('1.png').convert_alpha(),

        pygame.image.load('2.png').convert_alpha(),

        pygame.image.load('3.png').convert_alpha(),

        pygame.image.load('4.png').convert_alpha(),

        pygame.image.load('5.png').convert_alpha(),

        pygame.image.load('6.png').convert_alpha(),

        pygame.image.load('7.png').convert_alpha(),

        pygame.image.load('8.png').convert_alpha(),

        pygame.image.load('9.png').convert_alpha(),



    )

    GAME_SPRITES['message'] = pygame.image.load('welcome2.jpeg').convert_alpha()

    GAME_SPRITES['base'] = pygame.image.load('jh.png').convert_alpha()

    GAME_SPRITES['pipe'] =( 

        pygame.transform.rotate(pygame.image.load(PIPE).convert_alpha(),180),

        # pygame.transform.scale(pygame.image.load(PIPE),(40,140)).convert_alpha(), 

        pygame.image.load(PIPE).convert_alpha()     ,        

    

    )

    GAME_SOUND['die'] = pygame.mixer.Sound('audio/die.wav')

    GAME_SOUND['hit'] = pygame.mixer.Sound('audio/hit.wav')

    GAME_SOUND['point'] = pygame.mixer.Sound('audio/point.wav')

    GAME_SOUND['swoosh'] = pygame.mixer.Sound('audio/swoosh.wav')

    GAME_SOUND['wing'] = pygame.mixer.Sound('audio/wing.wav')



    GAME_SPRITES['background'] = pygame.image.load(BACKGROUND).convert()

    GAME_SPRITES['player'] = pygame.image.load(PLAYER).convert_alpha()



    while True:

        welcomeScreen()

        mainGame()

Conclusion -  


Create this game i.e. Flappy Bird and submit it as your the school project otherwise you can use it on your computer too. And show to your friends. Friends, if you need to get the present day updates of our website, then please join our Code Surfer, this can maintain you from getting the state-of-the-art updates about our upcoming.

Also read : How to Create WordPress Website with Bluehost | Step by Step Tutorial for Starters in 2020

Comments

  1. Please share this article to friends to help them in their project and support me and subscribe our blog for more amazing projects

    ReplyDelete

Post a Comment