Тёмный

Coding Pac-Man in JavaScript Complete Tutorial Every Step Explained 

Coding With Adam
Подписаться 12 тыс.
Просмотров 42 тыс.
50% 1

Опубликовано:

 

6 окт 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 134   
@CodingWithAdam
@CodingWithAdam 3 года назад
Here is a link to try the game: codingwith-adam.github.io/pacman/ If you plan to deploy to github pages make sure to update the image and sound urls to strip out the '../' this was an oversight. Link to all the assets is in the description. I hope you enjoy the tutorial.
@namaefumei
@namaefumei Год назад
Thanks for the easy to understand tutorial. I'd love to see a simple multiplayer RPG game next!
@CodingWithAdam
@CodingWithAdam Год назад
You’re welcome! Thank for the suggestion.
@luuduong4213
@luuduong4213 3 года назад
Great tutorial Adam! Made the game for my 7 year old kid since he discovered Nintendo Switch this summer and now he wants me to make Mario Bros!
@CodingWithAdam
@CodingWithAdam 3 года назад
Thanks Luu! That’s awesome! You’re officially a game developer now. I hope your son enjoyed the game. A Mario bros type game would be fun to make. I plan to do that in the future.
@luuduong4213
@luuduong4213 3 года назад
@@CodingWithAdam Nice, he'll have to subscribe to your channel and do it himself! Nothing better than the reward of playing a game that you built yourself... with your help of course!
@CodingWithAdam
@CodingWithAdam 3 года назад
That’s so true. Look forward to his subscribe and making the game. I suggest trying the intro to game development tutorial on my channel. If successful he should give the snake tutorial a try as they increase in difficulty.
@luuduong4213
@luuduong4213 3 года назад
@@CodingWithAdam Will do, thanks again!
@gholler09
@gholler09 7 месяцев назад
​@luuduong4213 can you share the pacman code?
@forrestgoryl1650
@forrestgoryl1650 3 года назад
This is such a great walkthrough, I highly recommend it!! I've even told my non-programmer friends about it
@CodingWithAdam
@CodingWithAdam 3 года назад
Thank you Forrest! That's awesome, thank you for recommending my video :)
@awicca3079
@awicca3079 Год назад
Great stuff! I liked the pace, the explanations were on point, finished the tutorial with 0 confusion. Definitely following for more!
@CodingWithAdam
@CodingWithAdam Год назад
Awesome! Thank you for the great feedback. Really glad you enjoyed the tutorial. I really enjoy making the game dev tutorials more to come in the future!
@Modpod
@Modpod 2 года назад
This is excellent! Your voice is clear and you explained your thinking! You are extremely underrated my man :)
@CodingWithAdam
@CodingWithAdam 2 года назад
Thank you Modpod. I hope the channel continues to grow. Feel free to share my videos with other people and help grow the channel :)
@g20703
@g20703 3 месяца назад
A well-documented tutorial, but attempted to use this as a template to expand in a different direction artistically and ran into some difficulties, particularly with the enemy A.I. and loading the sound effects. Unsure if that's an issue with the assets I was aiming to implement or if there's something I was missing? Either way, very well explained and easy to follow when the code wasn't fighting with me. :) Good video!
@CodingWithAdam
@CodingWithAdam 3 месяца назад
Thank you! I really appreciate the feedback. I’m really glad you enjoyed the video and were able to take the project in another direction. Sometimes running into issues is just the coding process 😁
@kalahari8295
@kalahari8295 2 года назад
The use of Game dev terms and concepts is appreciated. Thank you ❤️🔥
@CodingWithAdam
@CodingWithAdam 2 года назад
You’re welcome! 😀
@jamescao2008
@jamescao2008 2 года назад
Thanks for your making a very good game in JavaScript. That I follow your instructions to get pressed an arrow key code failed instead it can be used to return a string such as "ArrowUp" from the event.key.
@CodingWithAdam
@CodingWithAdam 2 года назад
Thanks James. Sorry I don’t understand your question. Could you provide a few more details.
@jamescao2008
@jamescao2008 2 года назад
@@CodingWithAdam To replace the code which does not return a number for an arrow key pressed , I have tried the code as following: document.addEventListener("keydown", this.#keydown); #keydown = (event) => { if (event.key === "ArrowUp") { // this is one of four strings if (this.currentMovingDirection === MovingDirection.down) this.currentMovingDirection = MovingDirection.up; this.requestedMovingDirection = MovingDirection.up; this.madeFirstMove = true; } //..continue the code for the rest of three cases. } The code on my side is working. I don't know why this would happen.
@scottatkinson7649
@scottatkinson7649 Год назад
I loved this tutorial. Your a great teacher and so clear and easy to follow. Pleeeease can you add mobile functionality as i like playing on my phone at work and showing my friends
@CodingWithAdam
@CodingWithAdam Год назад
Thank you for the amazing feedback. I’m really glad that you enjoyed the tutorial. I’ll see if I can do this in the future. In the mean time I did add mobile in my latest game dev tutorial on the chrome Dino game. Although the mobile controls are simple since all you do is tap the screen.
@scottatkinson7649
@scottatkinson7649 Год назад
@@CodingWithAdam Hi Adam I'm getting an error saying size is already defined so I'm having didfficulty rotating please help
@kexkiri
@kexkiri 2 года назад
Very professional coding and teaching. thank you very much!
@CodingWithAdam
@CodingWithAdam 2 года назад
You’re welcome! Thank you for the feedback 😁
@bumblebeesj6283
@bumblebeesj6283 2 года назад
This tutorial was awesome! Helped a lot to understand JavaScript. But a I have a question… how can i put more levels to when all dots were gone he switch the map for the next level?
@CodingWithAdam
@CodingWithAdam 2 года назад
Thank you! Congratulations for completing the tutorial! Really great question. I have not done this yet but I would put the code to change the map in the tileMap class. In the tileMap you could define a list of maps and a property to track the current level the index of the array. When you pass the first level the game.js could tell the tileMap to go to the next level. I hope this tip helps. Perhaps in the future I will make a follow up video. Currently I'm working on other videos one of which is space invaders!
@bumblebeesj6283
@bumblebeesj6283 2 года назад
@@CodingWithAdam I will try just like you said! I would love if you can make this video in the future, so excited for it. The space invaders sounds increable to make. Let us know soon as possible. Thanks for all the suport!
@CodingWithAdam
@CodingWithAdam 2 года назад
Awesome! I really like the suggestion and your excitement for it! I’ll let you know as soon as space invaders is released.
@legendaryfishyt
@legendaryfishyt Год назад
im only 2 minutes in and i can tell this will be another great tutorial so keep it up!
@CodingWithAdam
@CodingWithAdam Год назад
Thank you! That’s great to hear. I hope you enjoy the tutorial! 😀
@fionzheng9312
@fionzheng9312 3 года назад
This tutorial is so detailed and well done! Great job with this one!
@CodingWithAdam
@CodingWithAdam 3 года назад
Thanks Fion!
@madivallarino4606
@madivallarino4606 2 года назад
Great walkthrough and I'm very excited to continue to grow this project. Thanks for all your work!
@CodingWithAdam
@CodingWithAdam 2 года назад
Thank you! I’m really happy that you enjoyed the tutorial 😁
@heathery2997
@heathery2997 8 месяцев назад
Thank u very much, while following step by step I understood the material very wee! U r excellent at explaining things ^^
@CodingWithAdam
@CodingWithAdam 8 месяцев назад
You’re welcome! I’m really glad that you enjoyed the tutorial and that it was easy to follow. Thank you for the awesome feedback I really appreciate it! 😀
@heathery2997
@heathery2997 8 месяцев назад
Based on it I tryed to code simple roguelike. It`s not polished yet but im glad i understood mechanics and canvas itself better x)@@CodingWithAdam
@scottatkinson7649
@scottatkinson7649 Год назад
So I've sorted the mobile controls. Yay but still struggling to win game with multiple dot types and sound issues on touch which is weird as user interacted first 🤔. And just 1 more question. Can u respawn ghosts after they are eaten cos if the map is big and you've eaten the ghosts it's too simple.
@CodingWithAdam
@CodingWithAdam Год назад
Awesome you have made some great progress!!! Yes you can respawn please check the comments I provided a code snippet ( I would copy paste it but I’m on my phone). Keep up the great work!!! 😁
@gholler09
@gholler09 7 месяцев назад
Can you share the code for the game?
@Wampire1994
@Wampire1994 Год назад
Thank you so much! Great stuff!
@CodingWithAdam
@CodingWithAdam Год назад
You’re welcome! Glad you liked the tutorial!
@skenox6658
@skenox6658 2 года назад
wooooah this is insane, greatly appreciate your tutorials :)
@CodingWithAdam
@CodingWithAdam 2 года назад
You’re welcome! Really glad you enjoy the tutorials :)
@scottatkinson7649
@scottatkinson7649 Год назад
Hi Adam, This is an amazing project, I'm learning so much from your clear teachings. Please please please can You add mobile functionality as a final touch to this project so I can play it on my phone and show friends etc.
@ai_historical_speeches
@ai_historical_speeches 2 года назад
Hey man! Very great tutorial! Do you have any ideas for implementing a pathfinding algorithm for the Ghosts? I want to make it so that Dijkstra’s algorithm is used with some randomness so the ghosts don’t kill you all the time. Thanks!
@CodingWithAdam
@CodingWithAdam 2 года назад
You’re welcome! Glad you liked the tutorial. I have not explored using a path finding algorithm yet. I really like the suggestion and might look into it in the future. Excited to hear your findings! 😀
@andreazwingler3972
@andreazwingler3972 2 года назад
Hi I have just subscribed to this brilliant tutorial. Basically I am sport journalist and I like writing creative sport article, mixing different genders like music, cinema and videogames to sport. So I need to implement PacMan, having a tennis court behind instead of a wall. I followed step by step your tutorial, but I am now blocked because gameloop function is not being called from Browser. There might be some firewall or some checks carried out, as I cannot see the wall being drawn and the function executing within the Chrome Console. The code is equal to your code. Any suggestion is really welcomed. Thanks in advance. Andrea
@CodingWithAdam
@CodingWithAdam 2 года назад
Thank you for subscribing! That's a really interesting project. I would suggest taking a look at the solution linked in the description. Download the solution and see if you can make it run on your computer. This is a good starting point from here you can try to figure out what code that you might be missing in your solution.
@andreacanella811
@andreacanella811 2 года назад
Hi @@CodingWithAdam , thanks for all the support. I would like to ask you a couple of permissions: 1. Permission to mention you in my article. I have added the following words to the text of my article titled "Being Pac-Man Charlie": "It was not easy to conceive such crazy idea and I was undoubtedly helped by Adam, whose tutorial was essential to learn a little bit of logic related to game development. In fact I am honest with myself, when say that all the logic of the videogame, written in JavaScript comes from Adam brilliant tutorial, having done myself only some "cosmetics operations", mainly related to choosing colors, images and fonts. Therefore I also put here the link to Adam youtube channel, in case someone would like to learn how to develop games not only using JavaScript paired with Visual Studio Code, but even more things related." Links are embedded within the words: tutorial and youtube channel. 2 Permission to publish in GitHub my "cosmetic version", in order to allow my subscribers and fans to play the videogame, even if the structure comes from your work. Just let me know what you think. Then, once I will publish my article, I will forward if you wish the link of my piece. Thanks in advance. Andrea
@SergioTortosa60m32
@SergioTortosa60m32 3 года назад
Awesome!!! Thanks for all tutorial👍🏻
@CodingWithAdam
@CodingWithAdam 3 года назад
You’re welcome! Glad you enjoyed the tutorial.
@softwaredeveloper4882
@softwaredeveloper4882 10 месяцев назад
Best tutorial I've ever followed ❤
@CodingWithAdam
@CodingWithAdam 10 месяцев назад
Thank you for the super thanks! I really appreciate the support! 😀
@gianpaolomosoni7230
@gianpaolomosoni7230 3 года назад
Very well done tutorial! I love it!
@CodingWithAdam
@CodingWithAdam 3 года назад
Thank you Gian!. Glad you enjoy it!
@Bleutounge
@Bleutounge 2 года назад
your video's are amazing! thank you for teaching us ^^
@CodingWithAdam
@CodingWithAdam 2 года назад
Thank You!
@thecolacat_
@thecolacat_ 2 года назад
@@CodingWithAdam it doesn't even work i have linux ubuntu, so idk if its because of that.
@Bartnick81
@Bartnick81 Год назад
Dziękujemy.
@CodingWithAdam
@CodingWithAdam Год назад
Thank you for the Super Thanks. I really appreciate it and I'm happy that you enjoyed the Pac-Man tutorial!
@c.rutherford
@c.rutherford 2 года назад
Very nice. Do you have a code snippet or advice for placing a bonus fruit in the middle of the screen, or having one enter and march around the board, like in Ms Pacman? I imagine it would be something like adding a 4th ghost in, but with a different sprite and having it always be flagged blue.
@CodingWithAdam
@CodingWithAdam 2 года назад
Thank you. I have not implemented that yet but your ideas are good. I would suggest implementing the static fruit like the pellets or power pellet. For moving fruit they do seem similar to the ghosts in the blue state. You could try to use inheritance if you are familiar with that to inherit from the ghost or a common base class that the ghost and fruit use. Thank for taking the tutorial!
@themessifan1785
@themessifan1785 3 года назад
Omg your tutorial worked :) but do you now a way that makes it so when ghost are died for 30seconds or anytime they respawn!
@CodingWithAdam
@CodingWithAdam 3 года назад
Awesome glad it worked. Here is a quick way you can get that working by using setTimeOut. In pacman eatGhost method you can add this. setTimeout(() => enemies.push(enemy), 1000 * 5); The ghost will reappear where it died. Here is the full method #eatGhost(enemies) { if (this.powerDotActive) { const collideEnemies = enemies.filter((enemy) => enemy.collideWith(this)); collideEnemies.forEach((enemy) => { enemies.splice(enemies.indexOf(enemy), 1); this.eatGhostSound.play(); //New code here to respawn setTimeout(() => enemies.push(enemy), 1000 * 5); }); } }
@gauravtiwari6104
@gauravtiwari6104 2 года назад
when we are inserting pacman image i am unable to do it, i tried to give the address directly to see other issue but still didn't get the result. any idea why?
@CodingWithAdam
@CodingWithAdam 2 года назад
Sounds like you could have a typo. Look carefully at the code on GitHub and compare.
@yanuka7
@yanuka7 2 года назад
thank you! this is great
@CodingWithAdam
@CodingWithAdam 2 года назад
You’re welcome!
@johnhtml604
@johnhtml604 2 года назад
thank you so much so smooth
@CodingWithAdam
@CodingWithAdam 2 года назад
You’re welcome!
@scottatkinson7649
@scottatkinson7649 Год назад
I've cracked it. So I made it so all dots turn to cash when eaten then when all cash is eaten u win the game. I've created a new map for level 2 but not sure how switch to that map after first level is complete. Please help
@CodingWithAdam
@CodingWithAdam Год назад
Awesome that’s really great progress congrats 😀 For the map switching I’ll have to look at the code again. If I recall the names of the objects correctly the game file could track which level you are in. That value can be passed into the tile map to select a map. On the the game over win screen you could listen for a space bar or enter press that would switch the level to 2. These are some rough ideas hope they help.
@alangarcia3971
@alangarcia3971 3 года назад
oh snap he back! with a banger!
@CodingWithAdam
@CodingWithAdam 3 года назад
Thanks Alan!
@Tczewianka19
@Tczewianka19 2 года назад
For some reson I can't draw walls or yellow dots on canvas. Code looks exactly like yours. There should be no problem with directory to the image. There is no info about mistakes in the console. What could I do wrong? Any ideas?
@CodingWithAdam
@CodingWithAdam 2 года назад
Try putting a console.log(“here”) message in the game loop and check the console. If it’s there that’s good remove it and go one level deeper. For example put one in the tile map to make sure it’s executing the code. Let me know if that helps
@Tczewianka19
@Tczewianka19 2 года назад
@@CodingWithAdam It helped. Thanks.
@blackfire7586
@blackfire7586 2 года назад
For some reason when I implemented all of the pause methods for Pac-Man and the ghosts I’m not able to move them anymore? Could you help me where I’ve gone wrong
@CodingWithAdam
@CodingWithAdam 2 года назад
Is there an error message in the developer console. If not I recommend trying it again by removing the pause code
@AshwinSKumar
@AshwinSKumar 2 года назад
There is no scoring and will this work on mobile?
@CodingWithAdam
@CodingWithAdam 2 года назад
Sounds like a good suggestion for the future thanks.
@AshwinSKumar
@AshwinSKumar 2 года назад
@@CodingWithAdam No problem!
@michael_hackson_handle
@michael_hackson_handle Год назад
Thanks! Super tutorial!
@CodingWithAdam
@CodingWithAdam Год назад
Thank you! You’re welcome!
@GeorgeStirbu-gv8hb
@GeorgeStirbu-gv8hb 8 месяцев назад
Amazing tutorial! However I have an issue, I followed the tutorial (by tiny detail) just to make sure I haven't messed up a spacing, a bracket, anything that might interfere.. I managed to make the ghosts move once, however even after adding the collision check with the environment, the ghosts continue to move once and then stop forever. I made sure to follow every single step up to this point with no typos, and it just won't work.
@GeorgeStirbu-gv8hb
@GeorgeStirbu-gv8hb 8 месяцев назад
I feel stupid, apparently the line "this.directionTimer = this.directionTimerDefault;" was missing after setting up the 10-50 field for the number randomizer (in your video, line number 17), even though it was there previously the other day.. weird, anyway, very cool tutorial, keep it up!
@CodingWithAdam
@CodingWithAdam 7 месяцев назад
Awesome I’m so happy that you were able to solve the issue. Thank you for taking the tutorial and I’m glad that you are enjoying it.
@jamescao2008
@jamescao2008 2 года назад
In lines 9 to 13, the statement listed as pacman = tileMap.getPacman(velocity), is pacman.draw(ctx) defined? Thanks for your response in advance.
@CodingWithAdam
@CodingWithAdam 2 года назад
When we first Define that method at around 42 min the draw method for pac man is not yet defined. Some time after that we define the draw method. I hope that answers your question.
@FirstnameLastname-gy4bz
@FirstnameLastname-gy4bz 3 года назад
Great tutorial!
@CodingWithAdam
@CodingWithAdam 3 года назад
Thanks!
@scottatkinson7649
@scottatkinson7649 Год назад
Please help with the win function to handle more than 1 dot type
@skillzorskillsson8228
@skillzorskillsson8228 2 года назад
I get error "Cannot read properties of undefined (reading 'drawImage')" when i am at 35:10 in the video. Also my wall does not appear... I have tried to verify that there is no typo or anything like that. I have made sure about uppercase and lowercase that everything is correct and i checked that i dont accidentally wrote a comma instead of dot and all this kind of things. It is just not working. I have checked everything....
@CodingWithAdam
@CodingWithAdam 2 года назад
Hi Skillzor, sorry to hear that. Programming can be frustrating at times :( My best advice is to start from the beginning and as you go make sure to stop and check each part is working. I hope this advice helps :)
@skillzorskillsson8228
@skillzorskillsson8228 2 года назад
@@CodingWithAdam Thanks for reply. Eventually i found the problem. i forgot to pass ctx to i think pacman in game.js
@skillzorskillsson8228
@skillzorskillsson8228 2 года назад
@@CodingWithAdam But now i have another problem... I get this error in console "Uncaught (in promise) DOMException: play() failed because the user didn't interact with the document first." The game works perfectly fine but i just have this error. When i read online they say i should add mute like this.wakaSound.muted = true but i tried it and it did not work. The error is still there
@scottatkinson7649
@scottatkinson7649 Год назад
U can fix that a quick way by putting a button on screen. In button put play sound and it will work 👍
@GrayCodeGaming
@GrayCodeGaming 3 месяца назад
How we can add playing button for mobiles like 4 arrows functionalities please tell someone with code or do fork so that we can play on mobile also
@flebedev9974
@flebedev9974 Год назад
I have noticed that the ghosts mostly travel on the outside of the level and they barely reach the center.
@CodingWithAdam
@CodingWithAdam Год назад
That’s right the enemy Ai is very weak it switches direction based on a random number feel free to try and make it better 😁
@adheeb6461
@adheeb6461 Год назад
I keep getting an error in Game.js for const ctx and const canvas. it says cannot redeclare block-scoped variable 'canvas'
@CodingWithAdam
@CodingWithAdam Год назад
Sounds like you are near the start of the tutorial. I would start at the beginning. You can also compare against the repository linked in the description.
@haowangg4095
@haowangg4095 Год назад
thank you!
@CodingWithAdam
@CodingWithAdam Год назад
You’re welcome!!!
@scottatkinson7649
@scottatkinson7649 Год назад
Im struggling to make the win function as I have a couple of different types of dots
@tozagultojiboyeva3897
@tozagultojiboyeva3897 Год назад
Thanks for the easy following tutorial. But I cant move pacman ,it is bug free.I don't have a clue
@CodingWithAdam
@CodingWithAdam Год назад
Sorry to hear that. If there not any errors in the console log there might be a typo. Try to compare to the complete solution linked in the description
@gencodethailand5007
@gencodethailand5007 3 года назад
Thank you. Can you make a pong game, or memory card game, or dinosaur jumping game tutorials? Thank you.
@CodingWithAdam
@CodingWithAdam 3 года назад
Thanks for the suggestions Gencode
@scottatkinson7649
@scottatkinson7649 Год назад
Hi Adam I'm getting an error saying size is already defined so I'm having didfficulty rotating please help
@johnniegilkerson4724
@johnniegilkerson4724 Год назад
Works good, How about a score?
@CodingWithAdam
@CodingWithAdam Год назад
Great suggestion it would be easy to added
@jurassicworld5205
@jurassicworld5205 Год назад
Hello, I downloaded the code but it doesn't show me the game help me please
@spacebuddy5339
@spacebuddy5339 7 месяцев назад
This is an old tutorial but how did you get the ctx to render the images without an onload event listener. I can't seem to figure it out I'm build it from scratch.
@spacebuddy5339
@spacebuddy5339 7 месяцев назад
Figured it out seconds after I typed this. It's the setInterval() and I've been thinking about it for days nw. Haha 😂
@АндрейИльин-д6ж
отличное объяснение
@CodingWithAdam
@CodingWithAdam Год назад
Thank you! 😁
@scottatkinson7649
@scottatkinson7649 Год назад
Ok so I changed the const name to turn but now when he goes along the bottom hes upsidedown lol
@snehgupta5720
@snehgupta5720 Год назад
this.#draw is not woring for me
@snehgupta5720
@snehgupta5720 Год назад
Okay guys , got it , there was problem in the formatar , just uninstall all Beautify plugins , and disable format on save and re start vs code , it will work , ( ps later just download prettier or any 1 formater of your choice)
@CodingWithAdam
@CodingWithAdam Год назад
Awesome glad you got it working!!!! 🎉
@ProLosergaming
@ProLosergaming 5 месяцев назад
is there a code for this that I can look at
@CodingWithAdam
@CodingWithAdam 5 месяцев назад
The code is linked in the description
@ProLosergaming
@ProLosergaming 5 месяцев назад
@@CodingWithAdam i made the same game, but i want to export mine and create a playable game link just like how you did, could you teach me how to do that?
@Ell1otC4ke
@Ell1otC4ke 3 года назад
OMG I'm the 999 subscriber
@CodingWithAdam
@CodingWithAdam 3 года назад
That's Awesome Hisoka! Thank you for Subscribing and being the 999th Subscriber!
@Bartnick81
@Bartnick81 Год назад
Awesome tutorial I wish I could finish but at 35:09 I got the error: Uncaught TypeError: Cannot read properties of undefined (reading 'drawImage') at TileMap.drawWall (Tilemap.js:39:13) at TileMap.draw (Tilemap.js:31:26) at gameLoop (Game.js:9:13) I checked it many times. Is it somekind of typo or something else?
@CodingWithAdam
@CodingWithAdam Год назад
Thanks! It sounds like your context (ctx) is null. Check that the ctx has a value with console.log(ctx). The value should be passed into the draw method of tile map in the game loop if I recall correctly.
Далее
Pac-Man Ghost AI Explained
19:34
Просмотров 1,4 млн
ЛЮБИТЕ ШКОЛУ?😁​⁠​⁠@osssadchiy
00:20
КОТЯТА НАУЧИЛИСЬ ГОВОРИТЬ#cat
00:13
How To Create a JavaScript TileMap For a 2D Game
23:27
Learn JavaScript With This ONE Project!
1:10:26
Просмотров 731 тыс.
How to Shoot Bullets in JavaScript - Game Dev
37:34
Просмотров 32 тыс.
Sprite Animation in JavaScript
46:05
Просмотров 168 тыс.
Beginner's Guide to the Bash Terminal
1:14:37
Просмотров 2,3 млн
Code Super Mario in JS (Ep 1) - Backgrounds & Tiles
25:35
ЛЮБИТЕ ШКОЛУ?😁​⁠​⁠@osssadchiy
00:20