Code Flappy Bird in Java

Sdílet
Vložit
  • čas přidán 12. 09. 2024
  • How to code flappy bird game in java. In this tutorial, you will learn how to code flappy bird using java awt/swing graphics.
    Throughout the tutorial, you will learn how to create the game loop, create a jframe and jpanel, draw images on the jpanel, add click handlers to make the flappy bird jump, randomly generate pipes and move them across the screen, detect collisions between the flappy bird and each pipe, and add a running score.
    Setup Java with Visual Studio Code:
    • How to set up Java in ...
    Code: github.com/ImK...
    Website: www.kennyyipco...
    Java Game Programming Projects Playlist:
    • Java Game Programming ...
    JavaScript Game Programming Projects Playlist:
    • JavaScript Game Progra...
    Subscribe for more coding tutorials 😄!

Komentáře • 110

  • @kiro1923
    @kiro1923 Před 4 měsíci +17

    this past month my college faculty announced a strike, and i stopped studying java for these few weeks. But your videos made me code all week long and practice everyday! Your way to teach is very easy to understand, keep the great work! I think in a few I'll watch your web dev games and practice with them too!

    • @KennyYipCoding
      @KennyYipCoding  Před 4 měsíci +1

      ahh sorry to hear that! Fortunately youtube exists :) ! Glad you enjoy the tutorials! Will be uploading more as the year goes on.

  • @alllatesttoday1387
    @alllatesttoday1387 Před 5 měsíci +99

    Bro I'm going to submit this as my final year java project
    . Wish me luck🤞🏾💪🏾
    Quick update!!!
    I completely changed your code, added sound effects and actually changed the whole game and named it "Flappy Chicken". Y'all could think what i did here 😂. I changed the theme of the game completely and turned it into a Minecraft chicken jumping over Minecraft trees game. Like wthhh💀 well at least i got full marks though❤

    • @tasneemahsan6849
      @tasneemahsan6849 Před 5 měsíci +3

      I’m working on this form my Java class’ final project as well

    • @3bood_kr
      @3bood_kr Před 5 měsíci +3

      Final year of what

    • @_Prit_Patel_
      @_Prit_Patel_ Před 4 měsíci

      ​@@3bood_kr His degree, probability BE BTech!!!

    • @hananch786
      @hananch786 Před 4 měsíci +1

      😂 brother I'm also submitting this project

    • @thecoolnewsguy
      @thecoolnewsguy Před 3 měsíci +1

      I don't believe in luck

  • @user-jp9ec7ez3w
    @user-jp9ec7ez3w Před 7 měsíci +5

    Thank you sir. Your Java videos are really Wonderful. They motivate me to learn java more deeply. I am a third year cs engineering student enjoying your videos. Completed the tutorial and it's working. You are a great teacher ❤️❤️😊

  • @Legendary_MoMo
    @Legendary_MoMo Před 7 měsíci +9

    I have to say, your java videos have been very helpful for me, thank you very much mate

  • @CrackBack999
    @CrackBack999 Před 4 měsíci +5

    great tutorial man, your videos are the only ones i can follow without getting a thousand errors. I subbed

  • @mayurhiware9336
    @mayurhiware9336 Před měsícem +2

    Thank you so much for this wonderful Video , At every stage of making my first game from making own window to the final game is Journey where I got happiness at every stage of this wonderful Project ! 😊

  • @karimashraf9395
    @karimashraf9395 Před 2 měsíci +1

    Hi bro, what is the best way to practice with this video ?
    I gonna divide the video into modules and stop the video and do it with myself, then continue the video
    what is your opinion about that ?
    I am a beginner in java, and this will be my first project

  • @tungstun-o1d
    @tungstun-o1d Před 5 dny

    dude u saved my life without knowing it thanks

  • @damirospanbek4339
    @damirospanbek4339 Před 6 měsíci +2

    so clean thank you for such a content

  • @eyzake
    @eyzake Před 4 měsíci

    so far so good ... i used vim to write the code (was using vim for the first time ... i can say this much i am a fast learner... learnt some java swing , and how projects are made and ofcourse how to run terminal in vim and also i learnt i can compile multiple files using javac app.java flppybird.java anf then bla bla bla) man i still have to complete this video (rn i am where you explained, oh just as a quick recap the screen resolution is this and we got the bg image loaded) ama go grab something to eat i am tired
    edit just realised: it has only been 12 minutes (i wanna cry)

  • @subhajitgain5922
    @subhajitgain5922 Před 23 dny

    i like how you explain all the things.

  • @yu-tehuang7437
    @yu-tehuang7437 Před 3 měsíci

    THank you for doing this tutorial it's pretty awesome

  • @williamkakooza4603
    @williamkakooza4603 Před 6 měsíci +1

    Thank you Professor Ken😊

  • @SayedIqra-vo4ym
    @SayedIqra-vo4ym Před 2 dny +1

    Hii i am getting the error of "Main function not declared in the class Flappybirds " Please help

    • @KennyYipCoding
      @KennyYipCoding  Před 2 dny

      Go to your main file and run the program from there instead

  • @silvermurrell5057
    @silvermurrell5057 Před 2 měsíci

    Really well made video, super interesting!

  • @imadudin2489
    @imadudin2489 Před měsícem +1

    Thank you for the wonderfull video...!!!

  • @N_Ananonymous.
    @N_Ananonymous. Před 3 měsíci

    hi, i would like to ask if is it possible to modify the game that it would show a choices of "restart or quit" at the end of the game and shows the score of the player. Then the game speeds up after a long time. if yes, how can i do it?

  • @TheBearCoder
    @TheBearCoder Před 2 měsíci

    Hey man, i really appreciate your videos, i'm learning alot from them! However i think your collision method assumes that the bird is a rectangle, am i right ? Can you please explain the logic of how you would implement the collision method to make it more precise 🙏

    • @KennyYipCoding
      @KennyYipCoding  Před 2 měsíci +1

      So the concept of collision detection of 2D games is based on the ideal of hit boxes, which is basically a rectangle surrounding the player. It would be too difficult to get the precision down to each individual pixel. The image itself is a rectangle and the empty space is part of the image. What you can do is create another X y width height for a new hit box bird instead of using the actual bird image dimensions. This hit box would essentially be a smaller rectangle.

    • @KennyYipCoding
      @KennyYipCoding  Před 2 měsíci +1

      Another more complex solution is to divide each part of the bird with different rectangles. One for the wing, one for the head, one for the beak. And then you would loop through each hit box and do a collision check. This would be used for if you had let’s say a street fighter game, for each arm and leg, there would be a separate rectangle for collision detection since the characters are much bigger, there would be too much empty spaces in the images to just check one rectangle for the entire image.

    • @TheBearCoder
      @TheBearCoder Před 2 měsíci

      @@KennyYipCoding Thanks for the response ❤ I'm going to surround the bird image (the black corners) with Rectangles and also add Rectangles on the pipes. Then i'm going to check if the bird corners collide with the pipes. But i'm not going to check weather the bird corners collide with the pipes all the time but rather only when the bird is close to the pipes (which is when the collision method that you implemented on this video is true). What do you think about that idea?

  • @abeltesfa143
    @abeltesfa143 Před 2 měsíci

    thank you projects really help

  • @jl1d_5
    @jl1d_5 Před 14 dny

    This is good, just an opinion, i think it will be more helpful to us potato in scripting if there is a flowchart

  • @ChastenRamirez
    @ChastenRamirez Před 2 měsíci

    damn sir how did you memorize all the codes . you are so pro!

  • @farhanahossain9970
    @farhanahossain9970 Před 15 dny

    hi , i am having problem in Flappybird.java section where bird = new Bird(birdimg) ; is showing error for me saying: " bird cannot be resolved or its not a field ".

    • @KennyYipCoding
      @KennyYipCoding  Před 15 dny

      If I had to guess, you maybe have a typo somewhere. Usually the error tells you what line the code is on, which is useful for debugging

  • @AgentCarp
    @AgentCarp Před 17 hodinami

    the fps of the game decreases on key press

  • @ifcvf769
    @ifcvf769 Před 29 dny

    Damn u are actually quite patient in these comments

  • @omsable9540
    @omsable9540 Před 5 měsíci

    @KennyYipCoding what is the main method in flappy bird class

  • @obiku1971
    @obiku1971 Před 3 měsíci

    Thanks for this tutorial.
    Following a course on Java on uDemy and watching yours, but also other youtubers tutorials, I was wondering why during the course to instuctor is hammering on encapsulation?
    Because in 4 of these youtube tutorials concerning creating games in Java, most the varialbles are declared package private. Is encapsulatimg variables to private over exaggerated of these instructors?
    Your feedback is much appreciated and helps me to get a better understanding.

    • @KennyYipCoding
      @KennyYipCoding  Před 3 měsíci +1

      Generally it is good habit to make a data member private if it doesn’t need to be accessed outside the class, and const if the value will not change. But this is something you can do when finalizing code changes and cleaning up. For the game tutorials, I generally ignore this because I want to focus on the concepts and thought process of game programming and avoid any syntax nitpick !

    • @obiku1971
      @obiku1971 Před 3 měsíci

      @@KennyYipCoding Great feedback :) It makes completing my assignments a lot easier when I first make the assignment work and then refactor it and encapsulate what's needed.

  • @taitekrogfus1382
    @taitekrogfus1382 Před 6 měsíci

    Am i able to still code this on eclipse IDE?

  • @lisahensel2722
    @lisahensel2722 Před měsícem

    7:51 Hi, I have a question. When I try to execute the program at this point I run into an error. In the line 15 ( Flappybird flappybird = new Flappybird(); ) the first Flappybird shows an error and I just don’t understand why. (The error message is Flappybird cannot be resolved into a type). Can someone please explain and help me?

    • @KennyYipCoding
      @KennyYipCoding  Před měsícem

      Did you name the file Flappybird or FlappyBird? Note the upper case b in bird

  • @nikhilgaming1567
    @nikhilgaming1567 Před 2 měsíci

    How to add sounds to background

  • @2gbramplayers
    @2gbramplayers Před 22 dny

    Brhoo I completed this game coding now I am in 2nd year of first semester broo 😅

  • @ishakumari457
    @ishakumari457 Před 3 měsíci

    Thank you!!

  • @jaywagh1527
    @jaywagh1527 Před 25 dny

    Sir I didn't get the blue panel it shows error code is ecxtaly like you no another line so why it is show me error like this

    • @KennyYipCoding
      @KennyYipCoding  Před 25 dny

      What does the error say? It should tell you what the error is and the line you’re getting the error from.

  • @abhisheksah2010
    @abhisheksah2010 Před 4 měsíci

    how can I get a demo of it?

  • @ajayrajpoot6315
    @ajayrajpoot6315 Před 4 měsíci +1

    the video is only 1 hour long but it took me 3 hours to watch and build this game.

    • @KennyYipCoding
      @KennyYipCoding  Před 4 měsíci +1

      that is part of learning hahaha. the video is only 1 hour long but it took me much longer to learn how to build a game in java, create a flappy bird game, record the tutorial, and edit it :)

  • @leonelmessi3010
    @leonelmessi3010 Před 3 měsíci

    pipes ArrayList is added with pipes.add(topPipe); So does it mean the it is added infinitely to the pipes ArrayList? If so, then pipes.size() is infinite?
    Sorry I don't have good knowledge about these memory management since I am new at programming

    • @AzureKnight
      @AzureKnight Před 6 dny

      Arraylist is allocated in heap so there is no need to allot a specific number of memory it will expand accordingly the usage

    • @leonelmessi3010
      @leonelmessi3010 Před 6 dny

      @@AzureKnight Thanks still a useful reply.

  • @-CA-JabastinA
    @-CA-JabastinA Před 18 dny

    What are the prerequisite concepts to start with this project.

    • @KennyYipCoding
      @KennyYipCoding  Před 18 dny

      You should know variables, condition statements, loops, functions, and basic knowledge of classes

  • @isabellefrancisco7179
    @isabellefrancisco7179 Před 4 měsíci

    Does the code only run in visual studio? It doesn't seem to work in NetBeans

    • @KennyYipCoding
      @KennyYipCoding  Před 4 měsíci

      I’ve never used net beans so not sure what the project setup is like. Try creating a project in net beans and writing the code from there.

  • @sourasishbiswas8310
    @sourasishbiswas8310 Před 26 dny

    This was awesome i made it

  • @robtai6225
    @robtai6225 Před 3 měsíci

    thank you sooso much!

  • @ssmaragdine6018
    @ssmaragdine6018 Před 3 měsíci

    May I ask How can I export to IOS app? Thanks

  • @schroedingers838
    @schroedingers838 Před 4 měsíci

    Hello! Today (11 May 2024) the game seems to be very hard and sometimes impossible to win: pipes are placed very near horizontally and sometimes empty space between two pipes does not connect contiguously to the empty space of the horizontally following two pipes. Could it depend on the random components that today make it be so hard? In particular, yesterday all was normal and playable, both in my pc and in your website, and today the same issue there is both in my local run and in the one in your website.

    • @KennyYipCoding
      @KennyYipCoding  Před 4 měsíci

      Do you mean the java version or the js version ?

    • @schroedingers838
      @schroedingers838 Před 4 měsíci

      @@KennyYipCoding The js version, and later a couple of hours that I wrote the message, it happened that the played returned "normal", with the pipes at the right distance... I did not understand if the issue depended from the randomness or from something in my browser.

    • @KennyYipCoding
      @KennyYipCoding  Před 4 měsíci +1

      Hmm interesting, it could be the random function. Math.random() is pseudo random so it uses the system time with a deterministic algorithm

    • @schroedingers838
      @schroedingers838 Před 4 měsíci

      @@KennyYipCoding It was funny because I used your template to do an happy birthday variation of the game in which I replaced the bird with the picture of the cat of a friend of mine and then I added a condition that after a number of pipes equals to her new age the game was win with an Happy Birthday message. And it was such hard that to make it possibile for her to win I had to modify parameters because at the hour I sent it to her, the game was almost impossible to win😬

  • @robtai6225
    @robtai6225 Před 2 měsíci

    can you give a tutorial on platformer?

  • @trsk
    @trsk Před 2 měsíci

    thank you sir....

  • @xlr8.tech.customs
    @xlr8.tech.customs Před 6 měsíci

    i keep getting the error "Cannot read properties of null (reading 'length')" im only at where you spawn the first window,my code is perfect not one mistake and i dont have any plugins but the ones you told us to get in the java on vsc, what could be causing this? is there something wrong with vsc??

    • @KennyYipCoding
      @KennyYipCoding  Před 6 měsíci

      Unfortunately your code is not perfect and there is a mistake somewhere! You are trying to call length on a variable that is null. The debug console should tell you which line you’re getting the error on. Also helps to backtrack and see if you missed a step somewhere

    • @xlr8.tech.customs
      @xlr8.tech.customs Před 6 měsíci

      @@KennyYipCoding well like i said at that point i was only like 10 lines deep so it wasnt that hard to reread everything, chatgpt, tabnine, and my 2 debuggers all said there was no issues aswel, i ennded up putting it in a different editor app and it worked fine its just specifically vsc

    • @KennyYipCoding
      @KennyYipCoding  Před 6 měsíci

      Ah interesting, not sure why you’re getting the issue in vscode. If you copy and paste the completed code into your java project, do you still get the same issue?

    • @xlr8.tech.customs
      @xlr8.tech.customs Před 6 měsíci

      @@KennyYipCoding on vsc i dont get anything not even an error, on normal vs it works, im not sure whats going on but i just uninstalled it

  • @joysardar6109
    @joysardar6109 Před 3 měsíci

    Please 🥺🙏 tell me required extensions ??

  • @rahulshrestha1568
    @rahulshrestha1568 Před 6 měsíci

    How do i keep my high score saved and have a start a new game button

    • @KennyYipCoding
      @KennyYipCoding  Před 6 měsíci +1

      depends, if you want to keep track of the high score only when you open the program, you can create another variable to keep track of that.
      However if you want to keep track of high score permanently, so that it remembers every time you run a new instance of the program, you'd need to write and read that information, such as with a txt file

  • @KarJet007
    @KarJet007 Před 15 dny

    If we done with project then how can we run in browser i min after then how can we store data and how can we earn money throw like this game's? Plz can you gide me?

    • @KennyYipCoding
      @KennyYipCoding  Před 15 dny +1

      The project is for education purposes and trust me, if I could earn money directly from this game itself I wouldn’t share it with you all haha

  • @CodingMation
    @CodingMation Před 7 měsíci +1

    Is this code work for android application made by java . I use gradles.

  • @cr7vaibhav
    @cr7vaibhav Před měsícem

    Thanks

  • @eckartmuller151
    @eckartmuller151 Před 2 měsíci

    perfect expression

  • @user-rh4rh8uq5o
    @user-rh4rh8uq5o Před 6 měsíci

    how can I make the flappy bird wing move up & down like a bird

  • @МаріаннаБенькалович

    very good

  • @Yash-gangurde310
    @Yash-gangurde310 Před 2 měsíci

    It is not a working mobile phone i have done coding as u said and i hosted them also but none of flappy bird , 2048, and candy crush work on mobile phone 😢

    • @KennyYipCoding
      @KennyYipCoding  Před 2 měsíci +1

      well you have to understand why they don't work on mobile. It's just not in the code. You have to write the code to make something work.
      Theres no key being pressed on your phone, no space bar being pressed to make the flappy bird jump. There's no arrow keys being pressed to move the 2048 tiles. You would have to implement buttons on the web page to process these events.
      Also mobile web pages don't support drag and drop ui components well. There's probably a library or something out there that you can use to process drag drop events.
      In general, a laptop is not the same environment as a mobile phone, so a website would function differently. That's where mobile apps come in. If you want to make a game playable on the phone, it would have to be a mobile app, which is out of the scope of these tutorials. Nobody plays mobile games on a website, they play through applications. 🙂

    • @Yash-gangurde310
      @Yash-gangurde310 Před 2 měsíci

      @@KennyYipCoding you are correct they working flawless on my laptop 💻 btw thanks for your playlist of JavaScript game development 🙏🏻

    • @Yash-gangurde310
      @Yash-gangurde310 Před 2 měsíci

      Actually i hosted them free on the web so i just wanted to share with my friends to show them but i tried before and they are not working so i worried i will try to modify them for mobile phone 👍🏻

  • @user-ug8xk8yn1e
    @user-ug8xk8yn1e Před 4 měsíci

  • @ajisam61
    @ajisam61 Před 19 dny

    👍Thanks!

  • @bubule_
    @bubule_ Před 6 měsíci

    12:53 i don't no why the back ground is not there only one white rectabgle, i have made all the step

    • @KennyYipCoding
      @KennyYipCoding  Před 6 měsíci

      You should backtrack to see which line you made an error on. You probably didn’t add the JPanel to the Jframe in the main file or something. I have the completed code in the GitHub link for you to compare to

    • @bubule_
      @bubule_ Před 6 měsíci

      @@KennyYipCoding thanks i gonna see

  • @sadiulhakim7814
    @sadiulhakim7814 Před měsícem

    I cannot believe that i made a game today. I cannot even make 20 score in this game.

  • @JotaroKujo-xx5uu
    @JotaroKujo-xx5uu Před 3 měsíci

    what program is this ?

    • @KennyYipCoding
      @KennyYipCoding  Před 3 měsíci

      vs code

    • @JotaroKujo-xx5uu
      @JotaroKujo-xx5uu Před 3 měsíci

      ​@@KennyYipCodingis it free ?

    • @KennyYipCoding
      @KennyYipCoding  Před 3 měsíci

      Yes, as mentioned in the video, if you check the description, there’s a link to the video for how to setup java in vscode

  • @yogesh__janghel
    @yogesh__janghel Před 6 měsíci

    helpful

  • @EyBossPusi
    @EyBossPusi Před 4 dny

    BRO REMAKE MINECRAFT

  • @riddhimaanjha7783
    @riddhimaanjha7783 Před měsícem

    🙏🏽👍🤝

  • @boredbrainedbeing
    @boredbrainedbeing Před 6 měsíci

    Idk why, but when i hit a pipe, my game doesn't freeze. it says game over, no new pipes come from the right, but the pipes existing on the screen keep moving to the left, and my score goes up too 🫠🫠 I copied it all, step by step but am not able to find the mistake

    • @zainbhairb
      @zainbhairb Před 3 měsíci

      Your answer gives chat gpt