Code Snake Game in Java

Поделиться
HTML-код
  • Опубликовано: 18 июл 2023
  • How to code a snake game in Java for beginners! Learn how to create a game of snake in Java using the awt and swing graphics library. Throughout the tutorial, you will learn how to create a graphical user interface (GUI) to display the Snake game, create the game loop, listen for Key presses to move the snake, use the ArrayList to store the snake's segments, and check collision and out of bounds for game over.
    Setup Java with Visual Studio Code:
    • How to set up Java in ...
    Code: github.com/ImKennyYip/snake-java
    Website: www.kennyyipcoding.com/
    Java Game Programming Projects Playlist:
    • Java Game Programming ...
    JavaScript Game Programming Projects Playlist:
    • JavaScript Game Progra...
    Subscribe for more coding tutorials 😄!

Комментарии • 92

  • @KennyYipCoding
    @KennyYipCoding  8 месяцев назад +4

    Check out the playlist of web project tutorials here!
    ruclips.net/p/PLnKe36F30Y4Y1XQOqNsL9Fgg_p6nYhcng
    Code Snake Game in JavaScript: ruclips.net/video/baBq5GAL0_U/видео.html
    Code Snake Game in Python: ruclips.net/video/FtqWCo1_I4g/видео.html
    Got a tutorial suggestion? Let me know down below!

  • @hansmalm2801
    @hansmalm2801 11 месяцев назад +34

    This is just perfect videos for beginners that have learned the lauguage and how it works but needs to see how you use the code in easy small programs. There are tons of "learn how to program"-videos but with no usable examples. That is just like learning some chord on the guitar but no song to play. YT needs a lot more songs to play, like this. You also have a perfect voice for this and no messing around with side tracks. This is the equalivent to BASIC programs that you could find in paper magazines in the 80s. Just perfect! Keep them coming. Thank you.

  • @dillonpaul1498
    @dillonpaul1498 7 месяцев назад +10

    Thank you for the opportunity of coding a snake game, it was very beneficial to my coding journey as a student an I do look forward to future projects. You made my entire week awsome.😊

  • @hnudj9635
    @hnudj9635 9 месяцев назад +2

    The way u explanation for use of each line of code is ❤❤❤ best i have ever seen, thanks you

  • @tuxat_
    @tuxat_ Месяц назад +2

    thanks for explaining all the complicated parts! really helped me out a lot!

  • @current_goliath
    @current_goliath 9 месяцев назад +4

    Great tutorial, thanks for the clear and concise logic.

  • @riccardogarista5092
    @riccardogarista5092 11 месяцев назад +7

    Thanks for the flawless tutorial!

  • @babymonster43
    @babymonster43 2 месяца назад +1

    Thank you so much TTTOTTTT i really needed this for our final project

  • @pland4r133
    @pland4r133 10 месяцев назад +1

    maaaaaaaaan i love your videos you are taking me to the next level

  • @VietNguyen-vj4su
    @VietNguyen-vj4su 22 дня назад

    Thanks! you have a knack for story telling, which is good for in this line of work (media).

  • @BabyBunny-Cottontail
    @BabyBunny-Cottontail 11 месяцев назад +5

    I'm so grateful for your videos! It's so much more fun learning Java when there's some GUI and fun games your working with. I've been slowly learning Java for the past year now, but it's all CLI apps in every tutorial. I'm following your tutorial now and I'm learning so much from them, but I know I'll be coming back in a couple of month and do them all over again when I know even more and probably understand even more of all the things your doing.
    I just wish you could explain even more of what your doing and why. For an example:
    why do you need to add "true" at the end when you're changing the tiles for the snake and the food from 2D to 3D?
    Keep up the good work and I promise to recommend this channel to all my classmates (I'm currently studying QA-testing and were using Java)

    • @KennyYipCoding
      @KennyYipCoding  10 месяцев назад

      I try not to overexplain sometimes so i might not explain 1-2 parameters, but on some IDEs (or if you use vscode), hovering over the function will tell you what the params mean. Basically the boolean value for 3D indicates whether it should be 3D raised or etched. Meaning, should it look like the top of a cube (true), or should it look like a cube shape hole in the ground (false).

    • @ProfLucasSquadron
      @ProfLucasSquadron 10 месяцев назад

      Thank You for this video!❤@@KennyYipCoding

    • @dovydasbalciunas5002
      @dovydasbalciunas5002 9 месяцев назад

      May I ask how did you learn to code? Did you learn by creating games?@@KennyYipCoding

    • @dovydasbalciunas5002
      @dovydasbalciunas5002 9 месяцев назад

      How are you doing in learning Java?

    • @KennyYipCoding
      @KennyYipCoding  Месяц назад +2

      @@dovydasbalciunas5002 yes! so people focus too much on syntax and "correctness", instead it is better to learn by building projects :) So I can pretty much code 2D games in any programming language because I understand the concepts, even if I'm not an expert on said language.

  • @mrsxber1916
    @mrsxber1916 10 месяцев назад

    Appreciate this tutorial bro

  • @MakkalSelvan-Thalapathy
    @MakkalSelvan-Thalapathy Год назад +3

    Support from India❤️

  • @damiaotiktok023
    @damiaotiktok023 4 месяца назад

    Obrigado que tutorial incrível, ficou muito bom esse jogo. Assisti vários vídeos de como criar um jogo da cobrinha, e eu percebi que existe várias inúmeras maneiras de fazer um jogo mesmo sendo parecido, más com instruções diferentes, Obrigado vc explicou muito bem .

  • @stevensaleh4263
    @stevensaleh4263 8 месяцев назад

    Thank you so much bro finally i made snake game 😊❤

  • @eddibressan8805
    @eddibressan8805 5 месяцев назад

    Thank you for the helpful video

  • @lavaflame059
    @lavaflame059 4 месяца назад

    Thanks for the latest info.

  • @lucapepel5851
    @lucapepel5851 9 месяцев назад

    10/10
    Thank you very much!

  • @codinghack2
    @codinghack2 10 месяцев назад +1

    Perfect It really helped 😊

  • @sammo7017
    @sammo7017 Год назад +1

    I followed your tutorial on how to code a snake game in Javascript, I think Java is harder but let's see 😁❤️
    Thanks for your videos 💙

  • @samarmahato3054
    @samarmahato3054 10 месяцев назад

    Thank you
    ❤ from India

  • @Sandi22
    @Sandi22 4 месяца назад

    Really cool. Thanks

  • @HospiceCarlTaneo
    @HospiceCarlTaneo 10 месяцев назад +1

    I have a question, if i press two directions at the same time when going the opposite direction, it bugs out and ends the game, how do i fix this?

  • @devincaruso8128
    @devincaruso8128 10 месяцев назад +2

    This seems like a really cool video! I'm new to programming and often don't know what I'm doing, but I'm trying to copy the code down, and I get the error: package javax.swing does not exist(compiler.err.doesnt.exist) after typing import javax.swing.*; I have the java extension pack and a JDK that works for other programs, but not here. Does anyone know what might be happening? Thanks!

  • @obieosuji9986
    @obieosuji9986 6 месяцев назад

    The grid isn't showing up. There are no errors as the program runs. I'm not sure if its because im on a mac and hes using windows but the program produces nothing when I run it.

  • @uyg8
    @uyg8 6 месяцев назад

    perfect brother keep up

  • @hyf1099
    @hyf1099 7 месяцев назад

    Tks for the video, but I get bug: when i press left down right sequence fastly, game over.
    Can u fix that, it happen when score is greater than two

  • @noahfeazell3336
    @noahfeazell3336 4 месяца назад

    Question: Why do you need to declare all the stuff for the frame. and then declare stuff again in another class so it can be drawn on?

  • @Sweet_Solos
    @Sweet_Solos 8 месяцев назад +1

    That was very good tutorial i learned alot by following along and tweaking! I just have a quick observation regarding the draw(Graphics g) function you created for both the snake and the food graphics. Coming from JS i find it so odd the behavior of both the .setcolor and .fillRect methods, because at first I was so confused of how these methods were targeting the desired tiles but then i figured it out after reading the docs, apparently all subsequent graphics after .setColor will be drawn with said color until specified otherwise. It just seems unecessaribly verbose if I wanted to generate a more complex pattern but i guess thats just Java.

    • @KennyYipCoding
      @KennyYipCoding  8 месяцев назад

      Yes you can think of setColor as pinking a color pencil, and you only switch colors after calling setColor (picking another pencil) again! I also have a snake tutorial in JS if you want to see how it’s done in JS

  • @karidad.19
    @karidad.19 7 месяцев назад

    Thank you❤️

  • @robtai6225
    @robtai6225 7 месяцев назад

    awesome content

  • @n0lerr1
    @n0lerr1 17 дней назад

    Thenks bro i love you

  • @_I_like_kebeb
    @_I_like_kebeb 2 месяца назад

    the best snake video on entire you tube

  • @luuhgentile
    @luuhgentile 8 месяцев назад

    First of all thank you very much for this tutorial! Apreciate it!
    I have a dual boot machine, I tried this tutorial first on Ubuntu and it didn't work, it didn't open the window when I executed the program on 3:44, then I switched to windows 10 and it worked fine.
    Do you think is there something wrong with my machine or with how I installed java on Ubuntu? Or does this code doesn't work on Ubuntu?

  • @sadiulhakim7814
    @sadiulhakim7814 19 дней назад

    Awesome

  • @yeetlouis9077
    @yeetlouis9077 Месяц назад +1

    Does this code work on BlueJ too?

  • @andrejklester5851
    @andrejklester5851 3 месяца назад

    Do you have javafx experiance, it is possibile too? Snake game?

  • @nathanmandala8465
    @nathanmandala8465 Год назад +1

    hey thanks for the amazing video! Next time, could you explain a little bit why you written some of the code?
    Thanks from Canada!

    • @KennyYipCoding
      @KennyYipCoding  Год назад

      Hi! Thanks for watching! Let me know what parts of the code were confusing for feedback!

    • @BabyBunny-Cottontail
      @BabyBunny-Cottontail 11 месяцев назад

      ​@@KennyYipCoding Yeah, I agree. Sometimes you just add something and I wonder why and how you knew that.
      Still, your videos are great! There's hardly anyone doing any usable Java tutorials that's not CLI

  • @fgprince7052
    @fgprince7052 8 месяцев назад

    Sir please upload java from beginning please sir
    Love from India❤

  • @robtai6225
    @robtai6225 7 месяцев назад +1

    can you build a platformer game in java?

  • @imalkesara4466
    @imalkesara4466 2 месяца назад

    Thank u

  • @nihalchandrav.c273
    @nihalchandrav.c273 3 месяца назад

    Can we do this in scanner class?

  • @SiddhantShedge
    @SiddhantShedge 3 месяца назад +1

    Just did the project and it did help me clear my java fundamentals!I just had one idea,how can I increase the speed of the snake each time it eats the food?

    • @ronin6397
      @ronin6397 3 месяца назад

      Hmm looks complicated.. The speed increases with a lower level of the Timer. Maybe you can use and adapt to the same system as the velocity.

    • @SiddhantShedge
      @SiddhantShedge 3 месяца назад +1

      @@ronin6397 thanks for your suggestion!

  • @kimi59
    @kimi59 8 месяцев назад +2

    Hmm, at the point of 20:30, I get an error on the line:
    gameLoop = new Timer(100, this);
    It says that "The constructor Timer(int, SnakeGame) is undefined
    And, the line:
    gameLoop.start();
    Has the error "The method start() is undefined for the type Timer"
    Any idea what this might mean?

    • @omerkose3848
      @omerkose3848 8 месяцев назад

      +1 "

    • @omerkose3848
      @omerkose3848 8 месяцев назад

      bro did you solve it I'm getting the same error

  • @Kanha0321
    @Kanha0321 7 месяцев назад

    I have made something similar too can I share its link?

  • @mehraritvik
    @mehraritvik 9 месяцев назад

    nice

  • @RogeliollNLape
    @RogeliollNLape 10 месяцев назад

    new subs here

  • @pahmya1906
    @pahmya1906 10 месяцев назад

    i have a question, if we use random for the food, will it spaw inside the snake ?

    • @KennyYipCoding
      @KennyYipCoding  10 месяцев назад +1

      Yes but it is very unlikely to collide with the snake’s head given the total number of square available.

  • @tonyguerra136
    @tonyguerra136 10 дней назад

    Hello Kenny, I am wondering why when I type in line #9.....frame.setVisible (true);
    and line #11....frame.setsetLocationRelativeTo(null);
    a "b:" and a "c:" are added automatically to the "true" and "null" like (b:true) and (c:null).
    Is it there an "auto-correction command" in the VS that I can deselect?
    Wonderful videos and thanks for teaching me VS and Java.

    • @KennyYipCoding
      @KennyYipCoding  10 дней назад

      I think you might be referring to the parameter help box.
      ruclips.net/video/BB0gZFpukJU/видео.htmlsi=W-lNBaE7m-T-l-cT
      In my pinned comment for the how to set up java in vs code video, you will find instructions on how to disable this feature

  • @emilianogonzalezperez2772
    @emilianogonzalezperez2772 10 месяцев назад +1

    where are you from?

  • @gasparcalix2095
    @gasparcalix2095 10 месяцев назад

    grate

  • @omerkose3848
    @omerkose3848 8 месяцев назад

    at the point of 20:30, I get an error on the line:
    gameLoop = new Timer(100, this);
    It says that "The constructor Timer(int, SnakeGame) is undefined
    And, the line:
    gameLoop.start();
    Has the error "The method start() is undefined for the type Timer"

    • @Dr_Mossig
      @Dr_Mossig 7 месяцев назад

      Same here

    • @COZYTapezz
      @COZYTapezz 6 месяцев назад +1

      I figured out our issue we IMPORTED THE WRONG TIMER

    • @Dr_Mossig
      @Dr_Mossig 6 месяцев назад

      @@COZYTapezz How do we import the right one?

    • @Dr_Mossig
      @Dr_Mossig 6 месяцев назад

      I found how to fix it!

    • @srushtivaghasia4223
      @srushtivaghasia4223 Месяц назад

      ​@@COZYTapezzthank you

  • @urdukahaniya570
    @urdukahaniya570 8 месяцев назад

    is anyone know how to restart game from which key

    • @tencent200
      @tencent200 6 месяцев назад

      u just have to make one in the keyPressed function.
      Here is a code just paste it in there:
      if (e.getKeyCode() == KeyEvent.VK_SPACE){
      snakeHead = new Tile(5, 5);
      snakeBody = new ArrayList();
      placeApple();
      velocityX = 0;
      velocityY = 0;
      gameOver = false;
      }

  • @honzeus2010
    @honzeus2010 6 месяцев назад

    I can´t run the code,I think it´s because the javax.swing feature is not working, but I´ve written it exactly how you did, so I am confused a little bit.
    Sorry if there is a mistake on my side, but I´d be really happy if you could help me with that.
    I set up Java in vscode like you in your tutorial, but I could´ve done a mistake, so I please help me if you can.
    Also thank xou for creating videos like this.

  • @olehliashyk6988
    @olehliashyk6988 7 месяцев назад

    Hi bro! Thnx for lessons.
    I have a problem with class "tile". This class not found in my IDE. Why? My IDE tell me "do not find symbol "tile".

    • @KennyYipCoding
      @KennyYipCoding  7 месяцев назад +1

      I wouldn’t be able to tell. Did you make a typo? Ex) Tile, not tile. It should also say which line your issue is coming from

    • @olehliashyk6988
      @olehliashyk6988 7 месяцев назад

      @@KennyYipCoding I'm writing on mac os, maybe that's the problem?

    • @olehliashyk6988
      @olehliashyk6988 7 месяцев назад

      @@KennyYipCoding I understand that Tile and tile are completely different things, but I can't use it myself, because the IDE does not recognize it

    • @KennyYipCoding
      @KennyYipCoding  7 месяцев назад +1

      @@olehliashyk6988
      perhaps a problem with your project setup? is Tile in a different class file?

    • @olehliashyk6988
      @olehliashyk6988 7 месяцев назад

      @@KennyYipCoding I don't have a Tile class at all. I thought it was the same as JFTame etc. And because of that I can't continue my studies (((

  • @williamkakooza4603
    @williamkakooza4603 4 месяца назад

    The best way to appreciate you is by Subscribing. Thanks for this video. Can you please create a soccer game development tutorial.

  • @AayushEditzzz..
    @AayushEditzzz.. 4 месяца назад

    AI:🗿🗿

  • @user-ym8nf1zq1g
    @user-ym8nf1zq1g 7 месяцев назад +1

    сду перваши вы тут?

  • @tencent200
    @tencent200 6 месяцев назад +2

    nice video. if it bothers you that the snake goes in with and and one more body tile in the boarder and doesn't die, just do - 1 at the boardWith and boardHeight like this: if (snakeHead.x*tileSize < 0 || snakeHead.x*tileSize > boardWidth - 1||
    snakeHead.y*tileSize < 0 || snakeHead.y*tileSize > boardHeight - 1){
    gameOver = true;
    }

  • @timdelarboulas4796
    @timdelarboulas4796 3 месяца назад

    Thank you for this video, it help to learn how write java code :) !
    I try tobuild a restart function after a game over. For exemple, when you press the space key, it restart the snake game. I failed but, can you advice or give food for thought please ?
    Thank you in advance.
    I tried this :
    boolean restart = false;
    public void keyPressed(KeyEvent e) {
    ...
    // restart function
    if (e.getKeyCode() == KeyEvent.VK_SPACE && gameOver) {
    restart = true;
    }
    }
    @Override
    public void actionPerformed(ActionEvent e) {
    ...
    if (gameOver) {
    gameLoop.stop();
    if (restart) {
    gameOver = false;
    gameLoop.restart();
    }
    }
    }