Code Snake Game in Java

Поділитися
Вставка
  • Опубліковано 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 😄!

КОМЕНТАРІ • 84

  • @KennyYipCoding
    @KennyYipCoding  6 місяців тому +3

    Check out the playlist of web project tutorials here!
    ua-cam.com/play/PLnKe36F30Y4Y1XQOqNsL9Fgg_p6nYhcng.html
    Code Snake Game in JavaScript: ua-cam.com/video/baBq5GAL0_U/v-deo.html
    Code Snake Game in Python: ua-cam.com/video/FtqWCo1_I4g/v-deo.html
    Got a tutorial suggestion? Let me know down below!

  • @hansmalm2801
    @hansmalm2801 9 місяців тому +24

    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.

  • @riccardogarista5092
    @riccardogarista5092 9 місяців тому +5

    Thanks for the flawless tutorial!

  • @dillonpaul1498
    @dillonpaul1498 5 місяців тому +5

    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.😊

  • @current_goliath
    @current_goliath 7 місяців тому +2

    Great tutorial, thanks for the clear and concise logic.

  • @hnudj9635
    @hnudj9635 7 місяців тому +1

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

  • @babymonster43
    @babymonster43 4 дні тому

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

  • @pland4r133
    @pland4r133 8 місяців тому +1

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

  • @BabyBunny-Cottontail
    @BabyBunny-Cottontail 9 місяців тому +4

    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  8 місяців тому

      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 8 місяців тому

      Thank You for this video!❤@@KennyYipCoding

    • @dovydasbalciunas5002
      @dovydasbalciunas5002 7 місяців тому

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

    • @dovydasbalciunas5002
      @dovydasbalciunas5002 7 місяців тому

      How are you doing in learning Java?

    • @KennyYipCoding
      @KennyYipCoding  3 дні тому +1

      @@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 8 місяців тому

    Appreciate this tutorial bro

  • @MakkalSelvan-Thalapathy
    @MakkalSelvan-Thalapathy 10 місяців тому +3

    Support from India❤️

  • @lavaflame059
    @lavaflame059 2 місяці тому

    Thanks for the latest info.

  • @eddibressan8805
    @eddibressan8805 3 місяці тому

    Thank you for the helpful video

  • @lucapepel5851
    @lucapepel5851 7 місяців тому

    10/10
    Thank you very much!

  • @Sandi22
    @Sandi22 2 місяці тому

    Really cool. Thanks

  • @stevensaleh4263
    @stevensaleh4263 6 місяців тому

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

  • @samarmahato3054
    @samarmahato3054 8 місяців тому

    Thank you
    ❤ from India

  • @damiaotiktok023
    @damiaotiktok023 2 місяці тому

    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 .

  • @sammo7017
    @sammo7017 10 місяців тому +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 💙

  • @luuhgentile
    @luuhgentile 6 місяців тому

    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?

  • @_I_like_kebeb
    @_I_like_kebeb 28 днів тому

    the best snake video on entire you tube

  • @codinghack2
    @codinghack2 8 місяців тому

    Perfect It really helped 😊

  • @uyg8
    @uyg8 4 місяці тому

    perfect brother keep up

  • @robtai6225
    @robtai6225 5 місяців тому

    awesome content

  • @Sweet_Solos
    @Sweet_Solos 6 місяців тому +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  6 місяців тому

      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 6 місяців тому

    Thank you❤️

  • @noahfeazell3336
    @noahfeazell3336 3 місяці тому

    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?

  • @HospiceCarlTaneo
    @HospiceCarlTaneo 8 місяців тому +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?

  • @nathanmandala8465
    @nathanmandala8465 10 місяців тому +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  10 місяців тому

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

    • @BabyBunny-Cottontail
      @BabyBunny-Cottontail 9 місяців тому

      ​@@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

  • @hyf1099
    @hyf1099 5 місяців тому

    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

  • @obieosuji9986
    @obieosuji9986 4 місяці тому

    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.

  • @devincaruso8128
    @devincaruso8128 8 місяців тому +1

    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!

  • @andrejklester5851
    @andrejklester5851 Місяць тому

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

  • @kimi59
    @kimi59 6 місяців тому +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 6 місяців тому

      +1 "

    • @omerkose3848
      @omerkose3848 6 місяців тому

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

  • @imalkesara4466
    @imalkesara4466 18 днів тому

    Thank u

  • @nihalchandrav.c273
    @nihalchandrav.c273 Місяць тому

    Can we do this in scanner class?

  • @SiddhantShedge
    @SiddhantShedge Місяць тому +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 Місяць тому

      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 Місяць тому +1

      @@ronin6397 thanks for your suggestion!

  • @tencent200
    @tencent200 4 місяці тому +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;
    }

  • @fgprince7052
    @fgprince7052 6 місяців тому

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

  • @honzeus2010
    @honzeus2010 4 місяці тому

    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.

  • @robtai6225
    @robtai6225 5 місяців тому +1

    can you build a platformer game in java?

  • @pahmya1906
    @pahmya1906 8 місяців тому

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

    • @KennyYipCoding
      @KennyYipCoding  8 місяців тому +1

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

  • @mehraritvik
    @mehraritvik 7 місяців тому

    nice

  • @Kanha0321
    @Kanha0321 5 місяців тому

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

  • @RogeliollNLape
    @RogeliollNLape 8 місяців тому

    new subs here

  • @omerkose3848
    @omerkose3848 6 місяців тому

    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 6 місяців тому

      Same here

    • @COZYTapezz
      @COZYTapezz 4 місяці тому +1

      I figured out our issue we IMPORTED THE WRONG TIMER

    • @Dr_Mossig
      @Dr_Mossig 4 місяці тому

      @@COZYTapezz How do we import the right one?

    • @Dr_Mossig
      @Dr_Mossig 4 місяці тому

      I found how to fix it!

  • @emilianogonzalezperez2772
    @emilianogonzalezperez2772 8 місяців тому +1

    where are you from?

  • @gasparcalix2095
    @gasparcalix2095 8 місяців тому

    grate

  • @olehliashyk6988
    @olehliashyk6988 5 місяців тому

    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  5 місяців тому +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 5 місяців тому

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

    • @olehliashyk6988
      @olehliashyk6988 5 місяців тому

      @@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  5 місяців тому +1

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

    • @olehliashyk6988
      @olehliashyk6988 5 місяців тому

      @@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 (((

  • @islamic76569
    @islamic76569 6 місяців тому

    is anyone know how to restart game from which key

    • @tencent200
      @tencent200 4 місяці тому

      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;
      }

  • @williamkakooza4603
    @williamkakooza4603 3 місяці тому

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

  • @AayushEditzzz..
    @AayushEditzzz.. 2 місяці тому

    AI:🗿🗿

  • @user-ym8nf1zq1g
    @user-ym8nf1zq1g 6 місяців тому +1

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

  • @timdelarboulas4796
    @timdelarboulas4796 Місяць тому

    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();
    }
    }
    }