Тёмный

Programming a Tetris Game in C# - Full Guide 

OttoBotCode
Подписаться 9 тыс.
Просмотров 203 тыс.
50% 1

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

 

14 окт 2024

Поделиться:

Ссылка:

Скачать:

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

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 435   
@OttoBotCode
@OttoBotCode 10 месяцев назад
*Source code* If you don't want to write the code yourself, it's available here for 3$ (and free for Patreon supporters): www.patreon.com/OttoBotCode/shop/78691 Your support would be a massive help for me and my channel! 🤩
@norbertabone9157
@norbertabone9157 10 месяцев назад
The link seems not to be working
@OttoBotCode
@OttoBotCode 10 месяцев назад
@@norbertabone9157 That's a shame. It works just fine on my end. Could you try again and see if it works now? Alternatively, try to go straight to www.patreon.com/OttoBotCode. You can find the Tetris code in the shop 😊
@PMyt007
@PMyt007 4 месяца назад
Brother do you want sail any project of c#
@PMyt007
@PMyt007 4 месяца назад
Bcz i need in emergency
@alexanderbozhko
@alexanderbozhko 2 месяца назад
​@@OttoBotCodeI see CS0122 Error. I don't know how to fix it. Thanks for advance. Here's the code: int dropDistance = gameState.BlockDropDistance();
@vstom910
@vstom910 2 года назад
I love how simple this way of creating Tetris is compared to other examples. Keep up the good work!
@OttoBotCode
@OttoBotCode 2 года назад
Thanks, I appreciate it. More content coming soon😀
@aiksjdijdemlfnewklfn7092
@aiksjdijdemlfnewklfn7092 Год назад
@@OttoBotCode What is the name of the data structure u used?
@chipolinchikaloe8447
@chipolinchikaloe8447 6 месяцев назад
I'm from Belarus, studying at university and starting to make games. Your tutorial was very helpful, the code is very beautiful. Thank you ♥♥♥
@OttoBotCode
@OttoBotCode 6 месяцев назад
Thank you! I'm glad you like it 👍
@shanep2514
@shanep2514 2 года назад
I love how you took the time to talk about designing the application. Much appreciated after browsing other C# videos.
@OttoBotCode
@OttoBotCode 2 года назад
I am glad you liked it, thanks for watching!
@gurbanaarongulman2505
@gurbanaarongulman2505 6 месяцев назад
Bro I can't stress this enough : if you keep making C++ , C# tutorials your channel is going to skyrocket ,and hold on hold on before you say that people are more into py and js now yeah yeah I’ve done it all ppl in the comments have done it all, BUT because C# and C++ tutorials are FREAKING rare . I figured that learning the universal concepts and principles of programming languages and their special features are best served with a pinch of tutorials before you go out there and create your own apps. It can be very frustrating just sitting there and creating stuff without seeing how to make them in the first place. You are freaking life savior with this I swear to God. PLEASE make more videos !!!n
@OttoBotCode
@OttoBotCode 6 месяцев назад
Thanks, I hear you. There will be more videos, this is just the beginning! At the moment, it's hard for me to find time for my videos, but that will change in 2 months time 😉
@gurbanaarongulman2505
@gurbanaarongulman2505 6 месяцев назад
@@OttoBotCode Man all thanks to you sure I can't wait to see more !
@joevaghn457
@joevaghn457 Год назад
Very good for showing a completed project! Can't say many have ever actually shown a project as finished, or even so much as _declared_ their project as finished. So that gets bonus points! Kudos, bro.
@TeamROsky
@TeamROsky 2 года назад
this video and channel are SOOO underrated you deserved my sub!
@OttoBotCode
@OttoBotCode 2 года назад
Thank you so much!
@TeamROsky
@TeamROsky 2 года назад
@@OttoBotCode For real this is one of the best tutorial video's I've ever seen in my programming career love to see a new big channel at it's early stages of growing! I will do my best to share this content with everyone I know that loves this! I hope the best for you and wishes your channel a great growth in the near future :)
@OttoBotCode
@OttoBotCode 2 года назад
@@TeamROsky Awesome to hear. It is greatly appreciated, much more content coming soon!
@TeamROsky
@TeamROsky 2 года назад
@@OttoBotCode My teacher has send the other classes towards your video so they can do this as a task! Never expected that to happen but here you go :)
@OttoBotCode
@OttoBotCode 2 года назад
@@TeamROsky Wow super cool! Thanks again :)
@nikolaoskonstantinidis3505
@nikolaoskonstantinidis3505 Год назад
I'm a beginner at C# and unfortunately this is very hard for me to follow for some reason. Something about the explanations don't "click" with me. Maybe I'll try it again at a future time. Appreciate all the hard work you put in it though and the fact that you answer all your comments. Much respect.
@OttoBotCode
@OttoBotCode Год назад
For a beginner, this is too hard. It's more helpful for people who know properties, inheritance, basic collections, etc. If you know such things, following a tutorial like this one can help you get to the next level. I don't speed up the typing like I did for this video anymore, that's probably another reason why it's a bit hard to follow. Once you get more familiar with C# and you want to create a small project, definetely come back here (or perhaps check out my Snake tutorial) and give that a try. Thanks for your comment! 😊
@BeenYT
@BeenYT 2 месяца назад
the implementation is more math than code, hes good at explaining what each method does ur just not listening
@nikolaoskonstantinidis3505
@nikolaoskonstantinidis3505 2 месяца назад
@@BeenYT He said it himself that this is too hard for beginner. I guess "ur" just not reading...
@tuyetnguyenanh8024
@tuyetnguyenanh8024 15 дней назад
​@@BeenYTBro is not reading💀
@sumugu161
@sumugu161 2 месяца назад
thank you for showing the complete guide from programming to developing and testing everything in real world. it helps me a lot to understand the various use of method and functions too ..keep it up.. one subscriber ..
@mrjelk8902
@mrjelk8902 Год назад
Otto, this tutorial helped me a lot. Thank you for a clear and simple explanation. Keep making such amazing and interesting videos. Well done and good luck
@OttoBotCode
@OttoBotCode Год назад
Thank you, that's great to hear! I'm working on the next project (also in C#) 😉
@tbpotn
@tbpotn 2 года назад
Very clean! Don't know how i stumbled upon this video, but well done :)
@rawbrwoarry6407
@rawbrwoarry6407 2 года назад
why is this channel so underrated????
@daeyoungkim4971
@daeyoungkim4971 2 года назад
This would be my weekend challenge for this Saturday. Thanks for the great tutorial!
@OttoBotCode
@OttoBotCode 2 года назад
Thank you! 😃
@kallismb3015
@kallismb3015 2 года назад
This is one of the best programming videos I've seen. Everything very well explained but simple at same time. Btw loved the edit too. Keep up the amazing work! Thank youu!!
@OttoBotCode
@OttoBotCode 2 года назад
Thank you! Awesome to hear 😃
@cobrakilla8
@cobrakilla8 Год назад
This is amazing. How did you learn to program, so simple yet so efficiently? It's like you are so perfect at this, when I program I just go with the flow, and although I would love my code to be as flexible and simple as yours, it never turns out like this. You are extremely talented, thanks for this amazing tutorial.
@OttoBotCode
@OttoBotCode Год назад
Thank you so much for the kind words! When I program, I try my best to write clean and efficient code that's as easy to understand as possible. I have a masters degree in computer science, which is where I have a lot of my knowledge from. My coding style comes from a lot of hard work and passion for the field! 😊
@TinyMaths
@TinyMaths Год назад
Well, I'm still in the 'learning to code phase' but I just finished my first iteration of Tetris which I coded with JavaScript. Wow, at a certain point I thought I was going to lose my mind because I ran into so many issues, but somehow it's 95% finished now. So, seeing your vid thumbnail, I thought I'd come and learn something. My code is about 4 times the size of yours. I've got a thing or two to learn as yet. It's fascinating to see how you handled the dropping of non-full rows after clearing 'x' amount of rows. That whole process gave me massive headaches.
@OttoBotCode
@OttoBotCode Год назад
Good luck with finishing your project. I'm glad this video was helpful 😊
@solomareds
@solomareds 2 года назад
Thanks for making this video. I believe it is the best way to learn how to transform theory into true code. You have been very clear and I would not be able to do many things.
@OttoBotCode
@OttoBotCode 2 года назад
Thank you for watching. Glad it was helpful
@andergarcia1115
@andergarcia1115 Год назад
Master... thank you very much for the quality of your content. It is a great contribution to make the knowledge available to everyone. Someday i want to be like you.
@OttoBotCode
@OttoBotCode Год назад
Glad you enjoyed it and thanks for the kind words!
@InOutLake
@InOutLake 11 месяцев назад
So simple and clear! I like it Also I noticed how your clead code improves mine, and it feels is amazing! Thank you
@OttoBotCode
@OttoBotCode 11 месяцев назад
Great to hear! Thanks for your comment 👍
@DasiyshineAJ
@DasiyshineAJ 6 месяцев назад
Hello! What a great video! I haven't made the project yet but have a quick question, I notice that you use individual tile pictures to make a whole block, can I use the entire png of the block instead of using this method? I wish to make my own fun spin on Tetris with a different style to the blocks, maybe something like animals! Thanks!
@OttoBotCode
@OttoBotCode 6 месяцев назад
It is possible but you would have to change the code to display your blocks correctly. Also keep in mind that your blocks will be chopped up when the player clears a row.
@firulais9982
@firulais9982 9 месяцев назад
amazing video, do you consider this project as a beginner or intermediate project
@OttoBotCode
@OttoBotCode 9 месяцев назад
Thanks! I'd say this is an intermediate project but on the easy side 😉
@MaineMaineJr
@MaineMaineJr 3 месяца назад
First off fantastic video. Secondly I see there's code so that the same block cannot be called twice in a row. What would be the best way to make this happen call all 7 blocks before repeating the same block?
@DennisRitchie1978
@DennisRitchie1978 Год назад
Very good explanations, it helped me a lot in learning object oriented programming in C#. thanks a lot!!! :-)
@OttoBotCode
@OttoBotCode Год назад
Thanks for your comment 😊
@norbertabone9157
@norbertabone9157 10 месяцев назад
Great video!! the idea flow is simple and easy to understand
@rul1175
@rul1175 Год назад
Incredible video. I have a question, why did u use public abstract classes???
@OttoBotCode
@OttoBotCode Год назад
You don't need to make it public, that's just how I was taught programming. Using "abstract" does make a lot of sense because we don't want the Block class to be instantiated directly (only the subclasses).
@ЮрійЛютий-ю6л
@ЮрійЛютий-ю6л 2 месяца назад
'MainWindow' does not contain a definition for 'Window_KeyDown' and no accessible extension method 'Window_KeyDown' accepting a first argument of type 'MainWindow' could be found (are you missing a using directive or an assembly reference?)😣
@dadoodooman4928
@dadoodooman4928 2 года назад
Very clear and good explanation, good animations and entertaining, helped me a lot :) Well done:)
@OttoBotCode
@OttoBotCode 2 года назад
Thank you so much, really glad you like it!
@saatvikparab3999
@saatvikparab3999 28 дней назад
Can I make the same project using the .NET Framework? And if so, then what can be the changes made? Thank You for this video, going to make this for my college project!❤❤
@remigiuszobrycki9098
@remigiuszobrycki9098 8 месяцев назад
This tutorial is great, but for some reason I couldn't get the game to run fully. While debugging, the game goes to GameOver state after a split second. After pressing "PlayAgine" it is the same. VisualStudio shows no errors.
@El_kammex
@El_kammex 2 года назад
Hey, where you learned programming like that? Any Books or only tutorials from yt, maybe some studies(I ask out of curiosity). About same game, this is really simple explain and coding, good work.
@OttoBotCode
@OttoBotCode 2 года назад
Hello! I have a bachelor's degree in "Software Development" and a master's degree in "Computer Science" 😊 Whenever I find something that interests me, I like to try it myself and create some small project 😉 Great that you like this one!
@markharby180
@markharby180 4 месяца назад
Great tutorial Otto, this is a feature-rich game.
@OttoBotCode
@OttoBotCode 3 месяца назад
Thanks!
@funtimesans13
@funtimesans13 Год назад
Very cool game, it was fun to make at times, other times it was a pain in the back because of the errors I got, but overall, I got'em fixed and the game itself is pretty well done. Thank you for the experience
@OttoBotCode
@OttoBotCode Год назад
Glad to hear you worked out in the end. Thanks for your comment!
@mariousranasinghe2161
@mariousranasinghe2161 2 месяца назад
Seriously well done and thank you for this.
@greekz8750
@greekz8750 2 года назад
I've seen that has actually explained it to in a concise way!
@melitonolguinmendoza
@melitonolguinmendoza 9 месяцев назад
Great video. It was easy to follow and understand.
@A_S0ur
@A_S0ur Год назад
This tutorial is amazing, i've been trying to expand the game by adding a database to make a register/login feature is there any way you can help??
@Gozer
@Gozer 2 года назад
Thanks mate, this helped me a lot!
@rileyscola9343
@rileyscola9343 2 года назад
I’m trying to make dr.Mario and using the grid really helped. How would you go about making things fall in dr.Mario?
@OttoBotCode
@OttoBotCode 2 года назад
I am glad that it helped you. Many games are easiest to implement using some kind of grid. Unfortunately, I am not familiar with dr.Mario, but best of luck with your project 😀
@rileyscola9343
@rileyscola9343 2 года назад
@@OttoBotCode thank you!
@brunobezzan1169
@brunobezzan1169 2 года назад
It's my first day of soft School, and I can tell I'm going to like my teacher!
@footballCartoon91
@footballCartoon91 2 года назад
I also want to ask about how can you think about what function to create and how would you create it.. for example create a basic function that can be called later inside another function .. how do you think about it? Does this comes from experience and you just instinctively create all the functions in one go? is there a mathematics that can help us create the desired function? Does math function is really important in programming? for example a composite function is that necessary to learn for programming.. i honestly dont know what function to create but you just seamlessly code that without any troubles..
@OttoBotCode
@OttoBotCode 2 года назад
What you don't see in the video is the process of planning everything and structured the code to be as easy to understand as possible. There are design principles and standard patterns you can follow to some extent. That being said, there is no substitute for practice. With time you will develop a feel for what "good" code and "bad" code is. How important is math? That really depends on what you want to do. For most projects it's not so important in my opinion. It's more important to think logically and keep the code as simple as possible. BUT the really impressive programs like ray tracers, machine learning algorithms and game engines require a lot of math! 😉
@gonzaloalbornoz4128
@gonzaloalbornoz4128 Год назад
This is awesome. Thank you so much and greetings from Argentina
@OttoBotCode
@OttoBotCode Год назад
Thanks for your comment and greetings from Denmark 😉
@SANTHOSHsanto-gq3dq
@SANTHOSHsanto-gq3dq 18 дней назад
Bro.. which server is used to stord a data? Cloud & database 🤷‍♂️
@BizBroTango
@BizBroTango 2 года назад
I'm surprised you have less than 700 subs! This is great content, keep up the great work
@OttoBotCode
@OttoBotCode 2 года назад
Thank you for the kind words. More content coming soon 😊
@overgarven
@overgarven Год назад
i want to add a pause Function on it. Can you help? btw GREAT tutorial and worked like charm
@OttoBotCode
@OttoBotCode Год назад
Sorry I completely missed your comment! The easiest way to add a pause feature would probably be to add a bool isGamePaused to MainWindow.xaml.cs. When the user presses P (or some other key) we set isGamePaused to true if it's currently false and vice versa. You also want to show something on the screen that indicates that the game is paused. When isGamePaused is true, we must make sure that: a) Pressing any key (except P) won't do anything. b) The current block doesn't move down. Stopping the current block from moving down can be a bit tricky, it requires modifying the game loop a bit. The easiest (but maybe not the prettiest) way would be to add a condition like this: if (!isGamePaused) { gameState.MoveBlockDown(); Draw(gameState); } That way each iteration of the game loop doesn't manipulate the GameState when the game is paused. Hope this makes sense and thank you for the kind words 😊
@KidFlash22898
@KidFlash22898 3 месяца назад
27:58 I'm getting 2 errors under the TilePositions and under the Id in [block.Id]. Both the error codes are CS1061
@JuxGD
@JuxGD 4 месяца назад
aw i was hoping you'd do 7-bag instead of random with double protection 7-bag is like, you get the tetrominos in groups, or bags, of 7. all tetrominos in one bag are different. then you get a new bag, and the cycle repeats. 7-bag is the standard in modern guideline Tetris
@JuxGD
@JuxGD 4 месяца назад
also no SRS kick table :(
@smpitbaitussalam2cangkring515
@smpitbaitussalam2cangkring515 2 года назад
DUDE, I got so frustrated 'cause of that problem, thanks a lot!
@wootanfall1
@wootanfall1 5 месяцев назад
I hope i get an answer after all the time :D The .Reset(); method at 14:38 is red underlined because its not defined and either am blind or you didn't shown it. What to write in it if i create the method?
@OttoBotCode
@OttoBotCode 5 месяцев назад
It's around 10:45
@ledschmidt1441
@ledschmidt1441 7 месяцев назад
Thanks much for your answer I joined your patreon club(lol) as I need all the help I can get. Curious though, I wrote a message in the OttoBot not sure how that works to receive a reply?.
@EchosongVV
@EchosongVV Год назад
Hello! This type of content is amazing!! One question I have: how do you do your visualizations? For instance, at 0:47 you have a game grid representation that is animated well and with smooth transitions. I want to do things like that when I make content for my channel. Thank you so much for reading! Definitely gained a sub from me :)
@OttoBotCode
@OttoBotCode Год назад
Thanks for the kind words and the sub 😉 I did the animations for this video in After Effects. It was a little painful but it turned out well 😄
@EchosongVV
@EchosongVV Год назад
@@OttoBotCode Oh god, AFTER EFFECTS Do you think that I could do something like this in Unity?
@OttoBotCode
@OttoBotCode Год назад
​@@EchosongVV In some of my more recent videos I've been experimenting with programming the animations instead. Then I start the program and sceen record the animation. You can certaintly do something like that in Unity, but it also takes some work 😊
@e.alarcon5322
@e.alarcon5322 2 года назад
what throws off is the step sequencer. i ntally associate it with a soft/clip whether it's being used or not. also when you do
@pink3395
@pink3395 2 года назад
This video is super awesome! I'm following along and trying to code the same thing, but in java, which is posing some fun challenges. Do you have any suggestions for how to approach coding the UI in java?
@OttoBotCode
@OttoBotCode 2 года назад
Thank you! Cool that you are trying to make it in Java. You should be able to write the game logic in a very similar way to what is in the video. I don't have much experience with UI in Java, but I wish you the best of luck 😀
@harryhayfron-benjamin5199
@harryhayfron-benjamin5199 2 года назад
Hey i ran into this issue what should i do 'MainWindow' does not contain a definition for 'GameCanvas_Loaded' and no accessible extension method 'GameCanvas_Loaded' accepting a first argument of type 'MainWindow' could be found (are you missing a using directive or an assembly reference?
@OttoBotCode
@OttoBotCode 2 года назад
Hello! It sounds like you are missing the GameCanvas_Loaded method in MainWindow.xaml.cs.
@harryhayfron-benjamin4189
@harryhayfron-benjamin4189 2 года назад
@@OttoBotCode true I fixed it but the program was just showing the canvas but it was still empty how do I fix that?
@ЮрійЛютий-ю6л
@ЮрійЛютий-ю6л 2 месяца назад
Inconsistent accessibility: property type 'Position[][]' is less accessible than property 'Block.Tiles'?
@OttoBotCode
@OttoBotCode 2 месяца назад
I would guess that your Position class is "internal" or "private". Make sure the Position class is "public". Inside Position.cs, the code should be: public class Position 😀
@ЮрійЛютий-ю6л
@ЮрійЛютий-ю6л 2 месяца назад
@@OttoBotCode Thank you very much!
@oleggordeev5849
@oleggordeev5849 Год назад
Is using OOP for such small projects worth it?
@alperenates1165
@alperenates1165 Год назад
I have a question. What should i do if i want to tetris 3d? How should i set the positions and change 'Block' class? I am not sure honestly how many position state.
@DasiyshineAJ
@DasiyshineAJ 5 месяцев назад
Hello! I am having some trouble with the game after play again is clicked. The DropBlock method is not being invoked but all the other buttons work. When I do the dropblock method, the game speed up. Any ideas? Thank you!
@alshick3973
@alshick3973 3 месяца назад
would parts of this code would you be able to use it in the windows forms c# or would you have to change some of it?
@OttoBotCode
@OttoBotCode 3 месяца назад
You don't have to change any of the actual Tetris logic. All you have to do is rewrite the UI (the code in MainWindow.xaml and MainWindow.xaml.cs).
@alshick3973
@alshick3973 3 месяца назад
@@OttoBotCode great thank you, ill try to convert it any particular advice on what i could do? also great video btw i like how each function ,method and class is explained very helpful
@ledschmidt1441
@ledschmidt1441 7 месяцев назад
I'm up to GameStateBlock and I'm a little concerned as I have several underlined code words in this block (like GameState and BlockFits) and others that you do not. I've followed you perfectly down to the exact line number on every block....... I'm using VS 17.9.3 ease my mind please?? thanks
@OttoBotCode
@OttoBotCode 7 месяцев назад
My guess would be that the warnings disappear if you disable the "nullable" feature under project settings. It is a newer feature which is now enabled by default when you create a project. Its purpose is to help you avoid null reference exceptions by imposing additional constraints on your code. I did not follow these constraints. Don't worry about those warnings, the code will work just fine! For this project, I recommend disabling nullable under project settings. That should get rid of those annoying warnings! Best of luck with the tutorial 😊
@ventox1337
@ventox1337 2 года назад
I am very new to c#, it's honestly the first ever language I want to start learning and this is pretty hard for me. Imma still try and understand what things you are doing but I just dont get the arrays. For example grid[r + numRows, c] or grid[r, c]. Does that just change the values of the row and column to 0?
@OttoBotCode
@OttoBotCode 2 года назад
Hello and sorry for the late reply! The grid array is a 2-Dimensional rectangular array (containing integers in our case). You can think of it as a grid or table of numbers. To access a specific element we must provide two indices - a row and a column. *r* and *c* are integer variables. When your code is running, they will store some integer value. *grid[r, c]* accesses the element at row *r* and column *c*. We can also change an entry like this: *grid[r, c] = 0* *grid[r + numRows, c]* is similar. Here we access the element at row (*r + numRows*) and column *c*. We just do a little addition inside the square brackets. I hope this helps and good luck with your programming journey 😀
@ventox1337
@ventox1337 2 года назад
@@OttoBotCode Thank you for the explanation!
@rickyryannacario1936
@rickyryannacario1936 2 года назад
OMG, it really worked. Thank you so much!!
@OttoBotCode
@OttoBotCode 2 года назад
You're welcome!
@lancebrixtermendoza3268
@lancebrixtermendoza3268 6 месяцев назад
I have problem here the block it doesn't move. When I press the keys for rotating is ok but when I press right, left and down button it doesn't move please help me 29:07
@panaikran
@panaikran 7 месяцев назад
Hey, I need help at 29:30 I can't get the row to clear is something wrong with it?
@Apep88
@Apep88 11 месяцев назад
First, thanks for the tutorial. I have an Issue that is only one tetrominos spawns I can move him around and place but after that they spawn no one more
@footballCartoon91
@footballCartoon91 2 года назад
i would like to ask question @3:05 does declaring /*Rows=rows; /*is the same as */ this.Rows=rows; /*Columns=columns; /*is the same as */ this.Columns=colums; what does that imply?.. is that mean the class can only have one instance or object?
@OttoBotCode
@OttoBotCode 2 года назад
In this case *Rows = rows* and *Columns = columns* is the same as *this.Rows = rows* and *this.Columns = columns* *this* just refers to the current instance of the class. In the case above you don't have to add it explicitly but it is sometimes necessary. If the parameters in the constructor were also called *Rows* and *Columns* then we would have to do this: *this.Rows = Rows* and *this.Columns = Columns*. It does not imply that you can only create one instance of the class. We don't need it but you could create multiple instances of GameGrid. I hope this helps 😊
@Smqckd
@Smqckd 2 года назад
Elsker at jeg kan hører du er dansker!
@Avichan_
@Avichan_ 6 месяцев назад
Good afternoon! I have a problem in the code. I am writing on Visual stusio 2017. Everything is clearly written in code, but the O-block is not displayed. It is displayed transparent on the playing field, although it is displayed in the HOLD and NEXT fields.
@OttoBotCode
@OttoBotCode 6 месяцев назад
The hold and next fields display the Block-O.png image. On the playing field, an O-block is displayed using four instances of TileYellow.png. I suspect that Tile-Yellow.png is not loaded correctly in your project. Make sure that Tile-Yellow.png has build action set to "Resource" and double check that you have written the filename correctly in MainWindow.xaml.cs. Let me know if this resolves the issue! 😊
@theperfectionist3924
@theperfectionist3924 2 года назад
There's a video on In The setup's channel about free DAWs, alternatives, and even if you can't afford it you can "get" it. Not quite an
@NguyenMinh-th2li
@NguyenMinh-th2li 2 года назад
Hey , I want to ask you something, how to apply color to cells in grid, canvas? why is your loop giving an empty color grid ?
@OttoBotCode
@OttoBotCode 2 года назад
SetupGameCanvas populates a Canvas with Image controls, one for each cell in the GameGrid. If there is nothing in a given a cell (gameGrid[r, c] == 0), the source of the corresponding image is set to "Assets/TileEmpty.png". This image is just a dark gray border, with a transparent fill color. To give the cells a different color use one of these options: 1) Change the background color of the Canvas in the xaml code. 2) Change the TileEmpty.png image (this way will also allow you to change the color of the grid lines)
@NguyenMinh-th2li
@NguyenMinh-th2li 2 года назад
@@OttoBotCode Thank you very much , I understood . I have one more question that is the id variable in the Drawgrid method, it will always default to 0 right?
@OttoBotCode
@OttoBotCode 2 года назад
@@NguyenMinh-th2li The "IDs" are stored in an int array in the GameGrid class. The default value for int is 0. So yes, initially all IDs will be 0 by default.
@NguyenMinh-th2li
@NguyenMinh-th2li 2 года назад
@@OttoBotCode Thank you, I got it. Your project is very good to learn 😃😃
@josephyang8569
@josephyang8569 Год назад
are there any other function besides "Children"? cuz im using visual studio 2019
@stevengualoto4626
@stevengualoto4626 Год назад
at what moment does the Hold appear on the screen, that is, when this event occurs
@ryanatkinson3961
@ryanatkinson3961 9 месяцев назад
Hi, I have used the code exactly how you have but the blocks won't move down I was wondering if you knew why this would be?
@OttoBotCode
@OttoBotCode 9 месяцев назад
It's hard for me to guess what the issue is. The source code for the project is available here for 3$: www.patreon.com/OttoBotCode/shop. If that doesn't help you locate the mistake, then I can take a look at your project 😊
@aaronjayzosadelapena8356
@aaronjayzosadelapena8356 2 года назад
thank you so much. Its easy to understand. it was really helpful
@OttoBotCode
@OttoBotCode 2 года назад
You're welcome 😃 Glad you liked it!
@mrstickman6718
@mrstickman6718 2 года назад
Sir I just watched ur video big fan sir U deserve respect coz u r a very talented person. I'll subscribe u from my all 5 RU-vid accounts 🙂❤️❤️❤️
@OttoBotCode
@OttoBotCode 2 года назад
Wow, thank you so much! Glad you enjoyed it 🤩 Next video will be out next week 😃
@mrstickman6718
@mrstickman6718 2 года назад
@@OttoBotCode Job done sir 😌 5 added..
@OttoBotCode
@OttoBotCode 2 года назад
@@mrstickman6718 Awesome, thanks again!
@dave_s_vids
@dave_s_vids 2 года назад
Seriously impressive - thanks!
@OttoBotCode
@OttoBotCode 2 года назад
You're welcome 😊
@Thallane
@Thallane Год назад
I am trying to learn from this video and i keep running into the same problem in the Block.cs class When i create the constructor i get an error saying this: 'Position[][]' does not contain a definition for 'Row' and no accessible extension method 'Row' accepting a first argument of type 'Position[][]' could be found (are you missing a using directive or an assembly reference?) Same error goes for Column. I have tried your your git project and i get same error.
@OttoBotCode
@OttoBotCode Год назад
Can you send the project with the error to ottobotcodehelp@gmail.com? Then I'll figure out what is wrong 😉
@thesituation5315
@thesituation5315 2 года назад
Hi, I'm not sure if you'll see this, but I have a question. I want to figure out all the technical stuff myself, so I kind of just skimmed through the video. I can't figure out how to draw the graphical parts, how did you do that? I didn't see it in the vid. Whenever I move a block, there's a shutter I can see, where it's being repainted. I can't get it to not have that shutter.
@OttoBotCode
@OttoBotCode 2 года назад
I use a grid of image controls. When a block moves, the image sources are updated to reflect the new state of the game. It's all in the video if you ever feel like checking it out in depth 😉 I can't say why your program stutters without seeing your code.
@thesituation5315
@thesituation5315 2 года назад
@@OttoBotCode Ok thanks. I'll try that. Is there a way I could show you the code?
@OttoBotCode
@OttoBotCode 2 года назад
@@thesituation5315 You can send it to ottobotcodehelp@gmail.com. Then I'll take a look when I have the time 😃
@elenatrifonova5286
@elenatrifonova5286 2 года назад
OMG! You are a life saver. Thanks you for clear description of every step of the way; amazing content! Good luck!!!!
@OttoBotCode
@OttoBotCode 2 года назад
You're welcome 😀
@elenatrifonova5286
@elenatrifonova5286 2 года назад
@@OttoBotCode Is it possible to add tetris song to this app? I know how to do it in Windows Forms app, but here the same code doesn't work :sob: I added the mp3 file to the Assets folder and changed the Build Action to Resource as for the images, but what do I do next? Thank you so much for your assistance. :hugging_face:
@OttoBotCode
@OttoBotCode 2 года назад
@@elenatrifonova5286 For the mp3 file. You have to set "Build Action" to "Content" and "Copy to Output Directory" to "Copy always". You can play the sound with the MediaPlayer class. MediaPlayer player = new MediaPlayer(); player.Open(new Uri("Assets/your_sound.mp3", UriKind.Relative)); player.Play();
@elenatrifonova5286
@elenatrifonova5286 2 года назад
@@OttoBotCode Super Mega LIKE to you, my friend! It can sing now :grin:
@meatgaming1352
@meatgaming1352 2 года назад
utilised and enjoyed wNice tutoriallst increasing in value.
@SlikerEdits
@SlikerEdits 2 года назад
Brandony man pls i need to know how can I restore the snare and the hat in the channel rack, I accidentally deleted them.
@EgorGromovikUa
@EgorGromovikUa 18 дней назад
i have only one simple question how tiles and StartOffSet even appears here because i got Error
@EgorGromovikUa
@EgorGromovikUa 18 дней назад
uh i didn't see public class prob solved
@nghialuongtrong2311
@nghialuongtrong2311 Год назад
Is there an external interface code for this game?
@frejandsubtolclc7935
@frejandsubtolclc7935 8 месяцев назад
hi OttoBotCode i need help with the protected abstrasct tiles and start offset the Error is: incosistent accesbilitiy property Type 'Position' is less accesible than Blockscs.Startoffset: the 2 error is: incosistent accesbilitiy property Type 'Position' is less accesible than Blockscs.Tiles
@OttoBotCode
@OttoBotCode 8 месяцев назад
It sounds like your Position class is either "internal" or "private". Go to Position.cs and make the class "public" 😊
@chadgessner4412
@chadgessner4412 2 года назад
I can't get the keys to work, I can't find anything I haven't followed perfectly as I re watch the video. The only thing that sticks out is I have a "Non-nullable field 'currentBlock' must contain a non-null value when exiting the constructor....." So I'm not sure if that has anything to do with it.
@OttoBotCode
@OttoBotCode 2 года назад
Does nothing happen when you press the arrow keys? Try setting a breakpoint in Window_KeyDown and then run the program in Debug mode. Then let me know if that breakpoint is hit when you press the arrow keys.
@chadgessner4412
@chadgessner4412 2 года назад
@@OttoBotCode tried that. And that is about the extent of my knowledge with debugging using visual studio features. And it did not trigger the breakpoint.
@OttoBotCode
@OttoBotCode 2 года назад
@@chadgessner4412 Okay so it seems like the event handler is not registered. I think the problem is in MainWindow.xaml. Do you have this property "KeyDown="Window_KeyDown" on the Window?
@chadgessner4412
@chadgessner4412 2 года назад
@@OttoBotCode I may have found something useful... My Window_KeyDown shows '0 references' above it, but yours shows 1. Maybe I missed a line of code somewhere?
@chadgessner4412
@chadgessner4412 2 года назад
@@OttoBotCode yes that was the problem. Thanks!
@maddoxriddick5759
@maddoxriddick5759 3 месяца назад
hi there, purchased the code and followed the tutorial, cant figure out how to run the game. please help
@OttoBotCode
@OttoBotCode 3 месяца назад
Thanks for buying the code. You should unzip the compressed file first and then open Tetris.sln with Visual Studio. Once opened, you can start the game by clicking the run button (green arrow) or pressing CTRL + F5. If that does not work, let me know what kind of error message you get! ☺
@hurmanfåraiallaämnen
@hurmanfåraiallaämnen 2 года назад
Great vid!
@OttoBotCode
@OttoBotCode 2 года назад
Thanks! 😉
@ArtemSerov
@ArtemSerov Год назад
It's awesome!!! Thank you very, very much!!!!
@OttoBotCode
@OttoBotCode Год назад
Thanks for the nice comment 😊
@itsmrknott2u
@itsmrknott2u Год назад
Hey bro, Finished the tutorial but the O block keeps spawning as every other block and all but the 0 block are cyan. Any idea what I might have done? The BitMapImages look correct for colors. Not even sure where to look for the logic that keeps spawning the O block though.
@OttoBotCode
@OttoBotCode Год назад
Sorry for the late reply. If you are interested I can help you out. Send your entire project to me at ottobotcodehelp@gmail.com (zip or github link). I'll figure out what the problem is for you 😉
@rickyricky4610
@rickyricky4610 Год назад
Great video 👍🥰❤️
@akainktsn
@akainktsn 5 месяцев назад
I wrote the code as in the video, but for some reason cells and blocks are not drawn in my Canvas
@akainktsn
@akainktsn 5 месяцев назад
ok, i I tried manually inserting the green cell image, but when i start app, my canvas is empty
@OttoBotCode
@OttoBotCode 5 месяцев назад
@@akainktsn It's probably not an issue with your code then. Make sure that your assets have "Build Action" set to "Resource"
@seyyarforever
@seyyarforever 26 дней назад
Hello, i get an error 14:55 . When i try to write public GameState(). Can you help me please
@OttoBotCode
@OttoBotCode 25 дней назад
What does the error message say?
@seyyarforever
@seyyarforever 25 дней назад
@@OttoBotCode Actually, i solved that problem. But now i get a debug problem. It says debug does not exist.
@anom234
@anom234 Год назад
Hi i just wanted to ask if polymorphism was used in this program?
@OttoBotCode
@OttoBotCode Год назад
Yes, I use it a little bit for the different blocks in the game.
@VeryBigDoor
@VeryBigDoor Год назад
Im having an issue where no blocks will spawn for like 20 seconds and then when it finally does theres a invisible layer a few squares above the current blocks, any idea of what it could be?
@OttoBotCode
@OttoBotCode Год назад
I can find out if you send me your code. You can send it to ottobotcodehelp@gmail.com, then I'll take a look 😊
@Enderdash3838
@Enderdash3838 7 месяцев назад
Hey, I need a little help: at 14:31 the computer gives me a warning on "currentBlock". Could you explain me why, please?
@OttoBotCode
@OttoBotCode 7 месяцев назад
What does the warning say?
@Enderdash3838
@Enderdash3838 7 месяцев назад
​@@OttoBotCode it says that "currentBlock" can't contain a Null value in the output, because it isn't nullable
@Enderdash3838
@Enderdash3838 7 месяцев назад
One more thing: at 19:40 it says that KeyDown="Window_KeyDown"> is an error because it can be declared only on the left side of += or -= I'm using Visual Studio 2022
@ChavaMartin
@ChavaMartin Год назад
i like video, but, what means CCW and CW on Rotate?
@OttoBotCode
@OttoBotCode Год назад
Great to hear ☺ CW = ClockWise CCW = CounterClockWise
@edrobinson8248
@edrobinson8248 Год назад
simply brilliant
@OttoBotCode
@OttoBotCode Год назад
Thank you!
@benstin2317
@benstin2317 4 месяца назад
Really appreciate it!!!!
@SADDE
@SADDE 2 года назад
hello, don't mind me asking but how would I go about adding a lock delay?
@OttoBotCode
@OttoBotCode 2 года назад
I am not a Tetris expert but from what I can tell "lock delay" is the time it takes for a block to lock in place when it is on the ground (or on top of another block). The lock delay can be reset by moving/rotating the block but only a certain number of times. Correct me if that is wrong. There is a problem with the Game Loop used in this video. It's simplistic which makes it easy to implement but not very flexible. We could easily detect when a block is on the ground (or on top of another block) and do something like. await Task.Delay(lockDelay); Instead of the usual delay for moving the block down, but how would we change this delay when the user moves the block? I don't think there is an easy way to change the duration of Task.Delay after it has been started. For more advanced features like lock delay I recommend using a "proper" game loop that runs a certain number of times per second. With that, you can create variables for time based events like moving the block down (and locking it in place). Every time the loop runs (at each frame) you subtract the elapsed time from these variables and check if they are
@SADDE
@SADDE 2 года назад
@@OttoBotCode it really was, thank you. Awesome tutorial by the way, much more thorough than many other ones out there
@OttoBotCode
@OttoBotCode 2 года назад
@@SADDE Thank you 😃
@ma.donnabelramos4350
@ma.donnabelramos4350 2 года назад
nice tuto bro, that solved!
@johnniegilkerson4724
@johnniegilkerson4724 Год назад
Sorry found my error: I had private void Window_KeyDown(object sender, KeyboardEventArgs e) instead of Window_KeyDown(object sender, KeyEventArgs e)
Далее
Learning C# In A Week... Otherwise I Fail University
9:04
CODING MY OWN TETRIS  (Unity)
13:00
Просмотров 128 тыс.
How many can you smash?🍫 IB : Florin
00:19
Просмотров 3,2 млн
ASMR Programming - Coding Pacman - No Talking
1:21:19
Просмотров 2,8 млн
Tetris с нуля на языке C
56:21
Просмотров 17 тыс.
Programming a Tic-Tac-Toe Game in C# - Full Guide
48:15
C# Tutorial - Make a flappy bird game in windows form
26:20
ИГРА ТЕТРИС НА C# WINFORMS GRAPHICS
39:46