The thing Matt did well is making a backup of the code that works. I haven't seen anyone praise him for that yet. I have had far too many interns come to me saying "It's now broken.", me asking to see the previous working version to compare and them not having it saved (or `git commit`ed).
That's about the only good instinct he had... To be fair coding logic can be harder for some people, and there's many things that you kinda need to know or be taught to even think about it. Everyone first code looks horrible with all the additions and copy/paste everywhere. And since he's a Real Civil Engineer, he is already used to saving often so he doesn't lose all his work due to a bug or other problems XD
@@raznaak It is all about the teacher. If the teacher focuses mostly on the syntax of the programming language, then it doesn't help you think like a programmer which is really what beginners need.
@@RandyFortier Honestly, this. I don't even remember the syntax of the code I write, I just copy and paste from other things I wrote, and focus on understanding the logic.
I program for a living, and I always enjoy watching folks get their head around fundamental programming concepts. Even if I do end up shouting at the screen a couple times every time.
@@ZephrymWOWhe used hardcode only to determine whether he is on start or finish of the line, his logic never consisted of finding out if he is on odd/even tile.
It's like someone playing a game for the first time with you, that has been playing the game for many years now and not understanding why someone doesn't understand/ do something the rigtht way
@@transcent7 he didn't do it exactly how Mr. ZephrymWOW wanted though so it's obviously wrong even though it works. Odd/even doesn't even make sense when you have more than 3 rows and 3 things to plant.
I've been programming for a little over 20 years, and I was both amused and bemused by some of the little errors that all beginners make and that I've long forgotten ever making myself. Never frustrated, though. It was clear that Matt has had some minor experience with programming (as he mentioned), and the editor did a great job of cutting out any long pauses that lacked tangible progress while keeping the rest of the problem-solving process intact. Very well done! Also, this game seems pretty well made for an introduction to basic programming concepts. Unlocking new features of the language as you go looks like a great way to introduce them in small chunks, and only when the player is ready to actually use them. The designer clearly put a lot of thought into that.
NGL... forgetting the god damn semi-colon brings back nightmares of searching through codes consistently, failing to notice a tiny error... But not being told that the error is on that line so you begin re-writing and testing and... after 2 god damn hours of searching... realizing the screw up.
As a programmer I have never heard a phrase that describes my job better than "It's basically like Excel but there's no boxes. That's what programming is right. Excel without boxes." -RCE 7:58
I think something important that was missed is that 'if' doesn't always need an 'else'. And that do a flip just basically wastes time but the loop could just hold until can harvest is true.
@@decivex isn't that usually placeholder code? Where it essentially doesn't have a purpose because not including it is exactly the same, just less code.
@@acidoflacuna I actually wrote the code wrong the first time. The basic idea is that you create a while loop with an empty body so you can wait until you can harvest. Python doesn't allow empty loop bodies so that's where the no-op comes in. In actual python you can also use ... as a no-op but I don't know if the game allows that.
If it helps, MatLab is pretty horrible from a programmer's point of view. Languages like Python (which this game uses something similar to) are much easier.
They were forcing us to use it almost 20 years ago when I was in college, but the tutorial they gave us was seriously lacking and the program would just not work without any indication as to why. You miss one little period and just.... nothing. I literally skipped every homework question where Matlab was required, cause I'd sit there for 3 or 4 hours and never get the damn thing to work.
My school also used MatLab. It definitely has a unique way of doing things, but, once you get used to it, it's really not so bad. But yeah, going from procedural code to vectorized code definitely messes with your head. Also makes some code that can get pretty hard to follow. Oh and if you really hate MatLab's licensing stuff, there's an open source semi clone called GNU Octave. The language is mostly compatible with MatLab's (it mostly has some extensions to the language - really not hard to write scripts that work in both). Biggest downside is the toolboxes aren't as complete as MatLab's.
Software engineer student here, i loved this game, i wish i had this when i started coding... its a good start for people who dont know anything about programming. You did better than i did when started studying, so kudos for that!
As a software developer, this reminds me of when I learned programming for the first time! It's such a satisfying feeling when everything just clicks together and your code starts working!
As a dev, you're not as bad as most comments I've seen thus far seem to imply. You're obviously a bit confused at some points but you've got good logic skills, curiosity and most importantly, you're having a load of fun! The best programmers I know are just the ones that like creating stuff and have the most fun programming. At some points you got some ideas of stuff you wanted to do, and tried to do it regardless of its difficulty, that same feeling has personally gotten me really far. Cool video! I hope you do more programming-like games!
This! Also, my first iteration of solving ANY problem looks just as wild. But after that iteration WORKS, I learned enough to solve it in a more pretty way :D .
@@Joker22593 There's a reason 'spaghetti code' is a term, it looks like a mess, but is functional.. Poorly optimized, some sections wholly redundant, and you don't know why == 0; fixes the timer you made.. but it 'functions'.
I’m a full-stack engineer and have been for longer than most of this audience has been alive, and oddly enough? This was really fun to watch. I didn’t get frustrated at all, it was just fun watching you learn. Great video.
Honestly, I've been coding for around 10 years and it's always a joy to watch people start to click on how coding works....also seeing everyone make the exact same mistakes and mistakes that developers make to this day
For those who haven't realized yet, this is Python as a game. If you want to learn basic (and I do mean *basic* ) programming, I recommend picking it up. Just remember Python is an object oriented programming language. Meaning that every program you write can be used by every other program you write. Example: if can_harvest(): | harvest() | move(North) is a program that can be used in any other program. Also, remember that else is optional. Don't use else like Matt did. Because Matt was using else statements like an architect.
That is not what object-oriented programming means. If you want to learn programming with Python and you're just starting out, don't worry about what it does mean. And for the record: Python is a fully capable language used extensively in the industry. It's a language great to start with for basic programming, and grows with you once you gain more experience. Extremely complex software can still be written with Python.
@@mananasi_ananas I'm well aware that Python is a fully functional language and that Object-oriented programming is more complex than what I described. My comment is directed at people completely new to programming. Not at people who already have a basic understanding of it. Since reusing functions, classes and modules are one of the core skills when using Python, I decided to simplify my explanation as much as possible. As for the basic understanding part, that was in relation to the game. Not to Python as a whole.
@@rendomstranger8698 sorry I misunderstood, I thought you meant picking up Python but you meant buying the game. Although still, your statement about object-oriented programming is confusing to me, and probably to beginners as well.
As a former developer turned manager, then *shudder* system architect (sorry!) I wasn’t cringing at the programming. Honestly, you solved every problem within a moments using your brain. This is a really neat little game that would have taught me programming a lot quicker when I was at uni - or younger, I imagine!
> solved every problem within a moments The power of good editing :p But jokes asides, I think this is the best game to learn programming basics. It's real enough to give real skills while still being... Approachable? Tutorialized?
1:35 basically its to call a function the () that means that u wrote a function for example: func harvest(): remove grass; hay_counter+=1 its simplified of course cause there is no command for removing grass but the premise is instead of writing the same lines of code u just call the the label of the func which its harvest() and it does everything u wrote in it p.s tbf for almost a complete beginner u have done a good job in this vid yes the code at the end was unnecessarily long and complicated but at least it worked and u didnt gave up well done matt!
The reason harvest has () is that it's a function. In most programming languages, all functions have some kind of container after them to take arguments/parameters. Like move(North), the function is move, the parameter is north, telling the move function where to move. Harvest is a function that doesn't take arguments, so it's () are blank, but they still exist because they basically tell the program that the prior word is a function.
You're right... coders were shouting at the screen. You don't need to check planting conditions with your moves... What you had to harvest everything at first was great all ya needed was to add an if before planting to know which to plant. moving logic & planting logic should be their own things. You want to keep the logic as simple as possible and generally that means keeping them separate. Keep up the great videos, if you want more programming games perhaps check out Screeps:World it is a cool game that doesn't get as much love as I think it deserves.
As a programmer, I have to say this was a really good video! And to answer your question, "Why do we add () after harvest?" is because it's a function. "harvest" is the name of the function and () tells the program to run that function. This also allows us to give that function data between (), like you did with "move(North)".
Matt, if you want to continue this as a series: if you write a part of the code that is **identical** to another one like at least two or three times, you probably should refactor your code (check how to improve it and simplify it). **Warning, this is a WALL OF TEXT and contains coding technical knowledge that may be a lot to read if you don't care about coding.** Suggestions: *A good philosophy when you begin is: If your function has more than two indentations (the spaces or tabs at the beginning), it needs to be refactored if possible, three indentations is sometimes okay, but that part needs to do simple and quick. *In your main while, separate your movement, the harvest and the rest, so you don't have to copy/paste that part each time you want to do something new. *You don't have to do an "else" if there is no need for an else. In your movement code, you move North anyways, so get rid of the else and move North all the times. *You'd probably want to move East on Y == 0 because if they add new rows you'd need to change it each time to the new last row. *A "while" is also kind of a "if", you don't have to repeat the "if", for example if the "x" is not 2, it won't try to do the "while" anyways so you save an "if". *In fact, you don't really need that many "while"s since you already loop each time and with a little thinking, things could be rearranged to be more concise. *Eventually you could create functions, and that'll make things both more complicated for you, but so much simpler in action (and also for you when you get the knack for it), but until then keep it in the main "while". *Any many other little tricks. So an example of refactoring would be (I used dots because youtube often destroys the formatting of code if spaces or tabs are used, three dots equals a tab): BTW "##" is a way to represent the programmer's comments in Python, what is after it on that line doesn't count as code and is often a remainder that can help your future self or others understand details about your code, or also parts of the code you want to work on later and you don't want to be active right now. while True: ...if can_harvest(): ......harvest() ## Up to now, you must use harvest every plant you have, remove it from the rest as it'll do it each time anyways. Use an "elif" if a plant doesn't need harvest. .... ...if get_pos_x() == 1: ......trade(Items.Carrot_Seed) ......plant(Entities.Carrot) ...elif get_pos_x() == 2: ......plant(Entities.Bush) ## ...elif get_pos_x() == 3: ## TODO ... ...move(North) ...if get_pos_y() == 0: ......move(East) ## That way, you move North each time and East only when it gets back to the first row. And that's it, it does what your function do, but in much less lines, much more readable and easy to add things to. Well, I switched the grass to the first column and the bush to the last, because Grass only needs harvesting anyways and not planting, so it'll just skip that part and loop again, saving much time and not needing another "elif" for nothing, but it's still basically the same. If you get a new plant, you just add a new "elif" and the required row, trade and plant, although as you unlock new things (especially functions and lists), you may even "simplify" your code even more... by using more complex techniques XD But the idea is, the easier you make it for the machine, the more optimized and fast it'll go, and/or the more versatile it can be (adding a new type of plant would eventually be much easier), but at the cost on making it more complicated for you, it needs a certain logic and experience to make the correct choices of techniques. There of course could be more optimal functions: *You could take into account the growth speed of various things. For example, perhaps the drone needs to do two harvests and flip inbetween for the grass, because grass grows really quick but needs a flip to let it grow a bit, and you need it more than the rest. *You could also check your needs in each different plants so you don't have an excess of one and a lack in the others, and do columns with multiple plants, but you'd need to change how your code works entirely for that one. *You could also skipping the whole column if the first plant is no ready to harvest (if you think about it, if the first plant of the column can't be harvested, you don't need to check the whole column to know they'll all be not ready if they're all the same species). *Since carrots need tilling, you could add a check if that tile needs to be tiled when there's new rows that get added (because otherwise you'd need to pause the program and manually get that new carrot tile tilled), right now you could just add it to the carrot column check and check if the soil needs to be tilled and till it if yes, but eventually you'd want that outside the if because you probably need tilling for multiple types of plants. And MANY others improvements I can't think of right now or would take too long to explain, but that comment is already a yuge wall of text and I'll stop now.
This is great but having played the game after seeing this video, every plant after this has some weird rule that means it's not as simple as adding the next type. For example, trees can't grow next to each other, pumpkins can form mega pumpkins and sunflowers you can only harvest the one with the most petals or you get nothing. And I haven't even finished the game yet.
When i played it I had it like this, imagine a 4x4 grid For i in ROW_LEN For j in COL_LEN do_plant(1) do_carrot(2) do_grass(1) And inside the do_x you do all the processing for that type of veggie. Of course those functions call more functions but once it's done you just dont care about the internals, if you know do_carrot yields you a carrot it doesnt matter how. And for later game you add another layer outside While true: Normal_farm() Full_pumpkin_fam() Maze()
@@diegomastro5681 I did something similar but different. I worked out which crop was the lowest and passed that into the function then did the logic inside that function, always producing full fields of crops. Of course, that was before I looked at polyculture which is going to need another rewrite I think. Haven't even attempted maze but I did get everything up to sunflowers working.
@@Xeridanus Oh that's clever, I did the balancing manually, once I saw low of some resource i just tweaked the amount of iterations for each field. I also couldn't make polyculture work, just too much work for little return. Without spoiling anything, try to keep going until you get to the first reset.. The thing you unlock oh boy it blows the game wide open
I love how he makes his code future proof, by making his system go back by running into the wall, it does'nt matter how big your farm is since it just goes back.
As a dev, I gotta say Well Done! Watching you learn was great to see. I know how difficult it is to get programming at the beginning as i've been trying to teach my son some programming recently
Bought the game in minute 1 and paused. Very fun way to learn programming. I've been doing it for the last 10 years, but still enjoy these little challenges. In the start you should treat the field as a 2 dimensional array (rows and columns). Since the field grows in both directions you want to make sure your code doesn't break. This way you can dynamically say how many rows (or columns) you want to grow different crops, Also a tip: you don't actually need to do_a_flip, that's just time spent when you could just skip to the next produce and see if that's ready instead this is a pseudo how mine works: size = get_world_size() col_carrots=1 col_bushes=1 while True: for x in range(size): for y in range(size): # will not spoil the actual logic but USE FUNCTIONS # this way we will always iterate over every row and column and we can just change parameters if we need more / less of something
Remember you don't want to overcook the spaghetti, code is best served al dente. and as a pro tip, here is a recipe for some spaghetti sauce: First brown the beef and onion. Chop the ground beef finely as you go. After it’s browned I often like to add it to my food processor to pulse it once or twice so that it’s finely crumbled. It makes the sauce extra smooth (although some people like their spaghettie sauce with larger peices of meat in it,) Side by side photos of a skillet with uncooked ground beef and onion, and then cooked and crumbled ground beef and onion. Next, add the tomato sauce, tomato paste, seasonings, Worcestershire sauce, and sugar and bring the mixture to a simmer. Add water and simmer for 30 minutes or longer, to get more depth of flavor. The longer you simmer it, the more the flavors will blend together beautifully.
I actually think this game looks like an excellent programming tutorial. It doesn't hide "real code" but still lets you instantly visualize what the effect of the code has on the drone. And has some pretty good documentation compared to some of the actual libraries I have to use in my job.
also infinite loops are technically fine (while true do) they just arent safe *depending on the language your using (*even then, they usually arent safe) The one thing that makes infinite loops 'safe' is a built in terminate button, or otherwise something that can manually break the loop. Else, if not caught by OS or CPU, the program will deadlock the cpu and simply hang EVERYTHING (..actually now that i think about it... it will only hang a cpu core.) (note, interpreter languages basically never have this possibility, as usually the interpreter will save you)
Well, you know how you disparage Architects.... As a developer myself, this was both hilarious and cringe at the same time. I was like WTF is he doing with that first grid navigation attempt. But then I would suck at designing bridges. We should stick to our areas of expertise ;) Seriously and honestly though this game is just brilliant for introducing people to our world. You learn SO much more by trying and failing than by just following a tutorial where all the code is handed to you on a plate. Well done for having a crack and exposing the game to wider audiences. We need more developers despite what people say about generative AI.
I LOVE this. It was a lot of fun watching you work through the basics. And what you ended up with reminds me A LOT of my first project. I have one small hint, if you want to hear it. Separate your movement from all the other if statements. Only have one place that says "Move North" or "Move East". You're gonna see something so cool once you get to functions
As a student of Computer Engineering I both laughed and facepalmed multiple times. I have to say though, you've got so much experience in problem solving in general that you've made a lot of progress considering it's only one video, hope to see more! P.S.: Yes programming is rewarding but as the complexity of the program increases the debugging process increases exponentially and that's pretty frustrating
Thanks for showing this game, I liked this concept enough to buy it today and just finished it (haven't done the timed run for the leaderboard yet). I really want to see you finish this game; or at least see you try to automate sunflower and gold farming. Overall not too bad for a non-programmer but definitely room for improvement. I had a couple notes on your "else" usage: -TLDR: an if does not require an else. --If you have the same line in the `if` and the `else`, like "move(North)", just delete the else section and remove a tab to bring "move(North)" out of the if. --If the only thing in an `else` is "do_a_flip()" you can just delete the whole thing; do_a_flip() is like a sleep() or delay(); but not really needed. -You can define functions like "def func_name():" and put loops or shared code in different windows to organize stuff better.
This is a nice little game to learn coding. And it's so funny to see you do the "while true" and go "That's not gonna work, it must be capital T" or "while: True" go "The colon needs to be at the end." But don't worry, mistakes like these are common when you start to program, but it's a bit like learning a language. In the beginning, you may sometimes flip two letters of unfamiliar words or forget a comma, but over time you will do it correctly without even thinking about it.
Hey Matt, people probably have said this already, but the brackets after the "harvest" function exists as a way for it to get inputs. So leaving it empty just means that it's not taking any inputs. An oversimplification, but I hope this helps.
Fun fact: every game has an infinite loop except very very few. This is where the game logic, graphics, sound, user input and etc is all taken care of.
I spent a lot of years as a programming tutor. The monstrosity of the while: while: if: brought back a ton of night terrors... So many times I spent going "What the hell are you even trying to do?" The devs owe you at least one purchase. I'm buying.
While I am not an experienced coder like most of these folks - this put a smile on my face watching you essentially recreate a double matrix FOR loop to be able to iterated through the 2d grid. Great fun and great way for people to get introduced to coding! Unfortunate that you jumped past the FOR loop section when you unlocked it. I think it might have saved you some headache from creating that monster
A lot of programming uses infinite loops, but you'd usually have some conditions in there so that it only does it so often, maybe checks a timer. And actions would depend on other conditions, like if can_harvest(). But generally you want a program to run forever, as long as it's doing useful things. The warning in the game was that, if one program is running a _tight_ infinite loop, doing nothing but looping round and round, it can fill up all the processor's time. But the code you write here isn't running on your actual PC's processor, just a simulated one in the game. And besides that, modern versions of Windows will keep an eye to make sure one program isn't trying to grab all the processing cycles and lock up the system.
Yup. I have and encountered plenty of "while (True)" commands. Most of which can be replaced with "until ()" commands, but the logic didn't properly exist in that language or it was waiting on an external response between iterations
AS A PROGRAMMER - I feel it's compulsory to start like that with this video - I was indeed holding myself back and trying not to scream "no! what the bloody hell are you doing?!", and also giggling at the "solutions" and "logic" of it all. But it works, and that's what's important. But since I am not subscribed, I was instructed to only push the subscribe button. Else: push_like_button() was skipped because the first if-statement was true. I'll like the next video then, since I was not instructed to like this one.
For making grass and wood you should do: while True: if can_harvest(): harvest() if get_pos_x() == 0: plant(Entities.Bush) elif get_pos_x() == 1: if get_ground_type() != Grounds.Soil: till() if num_items(Items.Carrot_Seed) == 0: trade(Items.Carrot_Seed) plant(Entities.Carrots) move(North) if get_pos_y() == 0: move(East)
A tip, I'd set up one code box to plant each type in a single row. Then the main code checks what is there. If carrots, if canHarvest, harvest, buy seed, plant, water, move else move. This way, you plant rows initially, then main will just check what it is. If it can harvest it will harvest and replant the same thing and move otherwise it will just move and check what is growing in the next plot.
In Chemical Engineering, I had a physical chemistry class where we modeled quantum tunneling of particles in Matlab. We were able to effectively determine the probability of losing particles in atomic space and then plot that probability over the modeled space at the same time. Pretty neat if you ask me.
16:35 to be fair.... Yeah, as someone that is able to find really weird errors and that do know how to properly code I am seeing what I would have done the first time I was learning to code but would never do now.
There is a robot battle game that requires you to do a similar process. Its very entertaining since you have different builds, so you're like "if an enemy is in range fire" "if an enemy if closer than x move away" or commands to focus fire since you get 3 robots at a time.
Tbh though, as a software developer I use Google daily, some might even say its an essential skill of developing to use Google right and find the good resources
What do you mean "at least"? Sure it's good that he didn't just Google how to beat the game, but as the other person mentioned I would imagine most programmers use Google. It's a vast resource that can help come up with ideas or lead down the path to fixing errors, why would we not use it?
If it makes you feel any better, the programmers in your audience aren't making fun of ya. We all were newbies at one point. Honestly it's just putting a big ol smile on my face just watching you learn in real time. Programming is more than just knowing what commands you can use, it's about taking a complex problem and breaking it down into pieces, and this game does a great job of conveying that.
I just started this game Matt. I went to college for programming I don’t understand it much. However all the little rules you break make me smile and it’s exactly what I went through. There’s a learning curve but it gets sooo good.
Also fascinating because it shows you how many of these things I've internalized over the years to the point where they're second nature to the me which aren't at all intuitive for a beginner.
I don’t think I could ever do coding for a living. It amazes me the patience of typing in every single action for a program because I just like to work on problems with my hands
You just described something you wouldn't want to do because it involves using your hands and then qualified that statement by saying you like to use your hands instead. Huh?
@@Sundablakr what I mean is with coding and things it’s more about typing but I’d like to physically move things around to fix problems not stare at a screen
Easy solution: while True: move(North) if get_pos_y == 0: move(East) if can_harvest(): harvest() # Now do whatever you want to plant if get_x_pos() == 2: plant(Entities.Bush) elif get_x_pos() == 1: if get_ground_type() != Grounds.Soil: till() trade(Item.Carrot_Seed) plant(Entities.Carrots) (Untested from the top of my head on my phone, on the train)
I did computer engineering at uni. As you mentioned, a lot of other engineers had to learn some basic programming for things like matlab. Your programming in this reminded me a lot of how they programmed vs. how the computer engineering people with actual programming classes programmed.
for a beginneer coder, the only things I know is wait() and print("yas") and if your wait looks like this: wait(1), that means 1 second. print("print") just prints the text inside, also that's why () is needed in coding!
This is my main channel, where I fix and race cars and motorcycles. Decent sized channel but I know this channel does not have the projected growth as another niche...like the framing channel I had for a year. My farming channel where I am attempting to automate farming(weed reduction/grass cutting) on my properties, I do this at my house in the states, and my small farm in Scotland. This video is exactly what I have been looking for. As for me I can buy the equipment no problem, I can even attach the cameras and go as far as learning to remotely operate the equipment from my office chair. But its this next stage in Automating that I am struggling with. I would love to add you to my network as weird as that sound, but Im past the point in caring how I sound as I know this technology is about to grow very fast, and I want to be on the right side of this! Steve
I would love to see a whole expansive base building game all about coding machines to harvest resources, and then coding conveyors and trucks to take the resources to the correct location where they are sold. Something like satisfactory for coders that also teaches you how to code from the beginning
The thing Matt did well is making a backup of the code that works.
I haven't seen anyone praise him for that yet. I have had far too many interns come to me saying "It's now broken.", me asking to see the previous working version to compare and them not having it saved (or `git commit`ed).
That's about the only good instinct he had...
To be fair coding logic can be harder for some people, and there's many things that you kinda need to know or be taught to even think about it. Everyone first code looks horrible with all the additions and copy/paste everywhere.
And since he's a Real Civil Engineer, he is already used to saving often so he doesn't lose all his work due to a bug or other problems XD
@@raznaak It is all about the teacher. If the teacher focuses mostly on the syntax of the programming language, then it doesn't help you think like a programmer which is really what beginners need.
That was definitely a good instinct.
That’s how Engineers think.
@@RandyFortier Honestly, this.
I don't even remember the syntax of the code I write, I just copy and paste from other things I wrote, and focus on understanding the logic.
I program for a living, and I always enjoy watching folks get their head around fundamental programming concepts. Even if I do end up shouting at the screen a couple times every time.
when he started with hard coding the position instead of using % to check for odd/even tiles i knew we were in for a massive spaghetti meal
@@ZephrymWOWhe used hardcode only to determine whether he is on start or finish of the line, his logic never consisted of finding out if he is on odd/even tile.
It's like someone playing a game for the first time with you, that has been playing the game for many years now and not understanding why someone doesn't understand/ do something the rigtht way
@@transcent7 he didn't do it exactly how Mr. ZephrymWOW wanted though so it's obviously wrong even though it works. Odd/even doesn't even make sense when you have more than 3 rows and 3 things to plant.
I have no clue how to program, and this comment section is scaring me
As a coder of 20+ years this video makes me smile and cringe in equal measure!
Its kinda lime python whit that syntax but the sheer ammount of useles operation who pump up the computetional cost of the algoritm....
Yep, agree. the funniest part is that despite the code being all spaghetti… it worked in the end 😂
@@tipolacko just like the omnishaia intended
my mind was screaming, _"FUNCTIONS GOD DAMN IT!!! FUNCTIONS!!"_
Same :3
When Matt says all the programmers were probably yelling at the screen, we had been yelling for ages already 😂
I can back that, taking computer science A Level and watching mat work was slitlghtly painful, however hilarious
yeah this was painful
You use screens? I use receipt printer to programm. Sometimes I even watch videos on my fridge.
yup
yep
Pros of computers: they do *everything* you tell them to
Cons of computers: they do everything *you* tell them to
i'd have emphasized "everything" in both but this is equally true lol
Con: they ONLY do what you EXPLICITLY tell them to
so true😂
Conclusion: computers just execute and we are dumb in programming it.
Con: they do *exactly* what you tell them to
I've been programming for a little over 20 years, and I was both amused and bemused by some of the little errors that all beginners make and that I've long forgotten ever making myself. Never frustrated, though. It was clear that Matt has had some minor experience with programming (as he mentioned), and the editor did a great job of cutting out any long pauses that lacked tangible progress while keeping the rest of the problem-solving process intact. Very well done!
Also, this game seems pretty well made for an introduction to basic programming concepts. Unlocking new features of the language as you go looks like a great way to introduce them in small chunks, and only when the player is ready to actually use them. The designer clearly put a lot of thought into that.
RCE getting overwhelmed by documentation at the end is true programming.
Yeah xD hour-long debugging saves you minute-long reading of the docs
Screw the docs I'll wing it.
500 hours later.....
Using 20 year old in documented libraries to make homebrew games is where the real pain is at
The way you read overwhelming docs is to skip anything you don’t understand.
lets be honest this dev IS A GENIUS he litterally got the consumers to do his job
Enter screeps, or gladiabots
Kinda like how people who use windows have to fix Microsoft's os by making third party patches
Who coded do_a_flip() and harvest() functions?
@@Doomslaya-1923 shut up
@@iamswyfo Wanna cry?
The fact that the test window becomes real code is so true.
I can relate so much to both the “programming is so rewarding!” and the “why is it doing that?!?” sentiments.
As a developer for a living I really enjoyed seeing u go through the coding basics, this was really funny to watch
1:50 As a developer, this REALLY HURT.
Clearly a python dev
As a developer, the entire video hurts lol
@@Alex_192. Yes.
NGL... forgetting the god damn semi-colon brings back nightmares of searching through codes consistently, failing to notice a tiny error... But not being told that the error is on that line so you begin re-writing and testing and... after 2 god damn hours of searching... realizing the screw up.
Yeah it does hurt 😢
As a programmer I have never heard a phrase that describes my job better than "It's basically like Excel but there's no boxes. That's what programming is right. Excel without boxes."
-RCE
7:58
Yepo 100%, Its also a database right?
It’s true especially for MATLAB lol.
@@romanmorozov6974 I actually hated matlab 😂
Isn't it, based on what comes first, more like Excel is programming with boxes?
@@talayoki6989 yes especially when almost all of the employees (in my field at the time at least) wanted Python (or maybe C++)
I think something important that was missed is that 'if' doesn't always need an 'else'. And that do a flip just basically wastes time but the loop could just hold until can harvest is true.
while not can_harvest(): pass
Edit: while, not if. I'm tired lol
@@decivex isn't that usually placeholder code? Where it essentially doesn't have a purpose because not including it is exactly the same, just less code.
Else is always needed to create a loop escape. Could be as simple as Else: do nothing()
Well, technically Else itself is not always needed. But a loop escape is needed.
@@acidoflacuna I actually wrote the code wrong the first time. The basic idea is that you create a while loop with an empty body so you can wait until you can harvest. Python doesn't allow empty loop bodies so that's where the no-op comes in. In actual python you can also use ... as a no-op but I don't know if the game allows that.
Me: taking a break from my programming job to cringe at matt trying to use a while command
As a recent electrical engineering graduate it warms my heart I wasn’t the only one learning how to fail to use Matrix Laboratory.
As a current electrical engineering student I can confidently say I actually cried because of MatLab last night
As a mechanical engineer, I can confidently say I love MATLAB
If it helps, MatLab is pretty horrible from a programmer's point of view. Languages like Python (which this game uses something similar to) are much easier.
They were forcing us to use it almost 20 years ago when I was in college, but the tutorial they gave us was seriously lacking and the program would just not work without any indication as to why. You miss one little period and just.... nothing. I literally skipped every homework question where Matlab was required, cause I'd sit there for 3 or 4 hours and never get the damn thing to work.
My school also used MatLab. It definitely has a unique way of doing things, but, once you get used to it, it's really not so bad. But yeah, going from procedural code to vectorized code definitely messes with your head. Also makes some code that can get pretty hard to follow.
Oh and if you really hate MatLab's licensing stuff, there's an open source semi clone called GNU Octave. The language is mostly compatible with MatLab's (it mostly has some extensions to the language - really not hard to write scripts that work in both). Biggest downside is the toolboxes aren't as complete as MatLab's.
Civil engineers can't be computer engineers. This was PAINFUL to watch 😂😂
Its kinda lime python whit that syntax but the sheer ammount of useles operation who pump up the computetional cost of the algoritm....
true its like please do this but he never did
@user-xv4li2mo7d IKR? I kept thinking "there are a few right ways to do this.... and that is not one of them"
I found it fun.
I've only been doing Python and only for 4 Years, but it still hurt
Software engineer student here, i loved this game, i wish i had this when i started coding... its a good start for people who dont know anything about programming. You did better than i did when started studying, so kudos for that!
As a software developer, this reminds me of when I learned programming for the first time! It's such a satisfying feeling when everything just clicks together and your code starts working!
As a dev, you're not as bad as most comments I've seen thus far seem to imply.
You're obviously a bit confused at some points but you've got good logic skills, curiosity and most importantly, you're having a load of fun!
The best programmers I know are just the ones that like creating stuff and have the most fun programming.
At some points you got some ideas of stuff you wanted to do, and tried to do it regardless of its difficulty, that same feeling has personally gotten me really far.
Cool video! I hope you do more programming-like games!
The best game is game dev 🤗
This! Also, my first iteration of solving ANY problem looks just as wild.
But after that iteration WORKS, I learned enough to solve it in a more pretty way :D .
He started really bad, but i fast forwarded 15 mins and it was decent. Love how fast he started understanding
Matt: "It looks complicated, but it works" the definition of every program
Only bad ones
@@Joker22593 There's a reason 'spaghetti code' is a term, it looks like a mess, but is functional.. Poorly optimized, some sections wholly redundant, and you don't know why == 0; fixes the timer you made.. but it 'functions'.
@@Joker22593 Right the good ones dont work (most of the time xD)
As a Game Dev, I loved watching you figure it out, but I also screamed at my screen MANY times 😂 I'm really hoping for more of this
"It works?" With a questionmark at the end is peak programming, innit?
I’m a full-stack engineer and have been for longer than most of this audience has been alive, and oddly enough? This was really fun to watch. I didn’t get frustrated at all, it was just fun watching you learn. Great video.
My new favorite phrase: "Programming is just Excel... without boxes"
It's more like the opposite. Excel is just programming with boxes
@@Alexandar358why can't it be both
Honestly, I've been coding for around 10 years and it's always a joy to watch people start to click on how coding works....also seeing everyone make the exact same mistakes and mistakes that developers make to this day
For those who haven't realized yet, this is Python as a game. If you want to learn basic (and I do mean *basic* ) programming, I recommend picking it up. Just remember Python is an object oriented programming language. Meaning that every program you write can be used by every other program you write.
Example:
if can_harvest():
| harvest()
| move(North)
is a program that can be used in any other program.
Also, remember that else is optional. Don't use else like Matt did. Because Matt was using else statements like an architect.
That is not what object-oriented programming means. If you want to learn programming with Python and you're just starting out, don't worry about what it does mean.
And for the record: Python is a fully capable language used extensively in the industry. It's a language great to start with for basic programming, and grows with you once you gain more experience. Extremely complex software can still be written with Python.
@@mananasi_ananas I'm well aware that Python is a fully functional language and that Object-oriented programming is more complex than what I described. My comment is directed at people completely new to programming. Not at people who already have a basic understanding of it. Since reusing functions, classes and modules are one of the core skills when using Python, I decided to simplify my explanation as much as possible.
As for the basic understanding part, that was in relation to the game. Not to Python as a whole.
@@rendomstranger8698 except that your simplification is completely wrong. OOP and interoperability are completely unrelated.
@@rendomstranger8698 sorry I misunderstood, I thought you meant picking up Python but you meant buying the game.
Although still, your statement about object-oriented programming is confusing to me, and probably to beginners as well.
@@rossclutterbuck1060 Seems that my own understanding of OOP could use some work in that case. My apologies if I'm spreading misinformation.
As a former developer turned manager, then *shudder* system architect (sorry!) I wasn’t cringing at the programming.
Honestly, you solved every problem within a moments using your brain.
This is a really neat little game that would have taught me programming a lot quicker when I was at uni - or younger, I imagine!
Right?
> solved every problem within a moments
The power of good editing :p
But jokes asides, I think this is the best game to learn programming basics. It's real enough to give real skills while still being... Approachable? Tutorialized?
As a software developer I can agree, it's great for visualising what your code is doing 👍
1:35 basically its to call a function the () that means that u wrote a function for example:
func harvest():
remove grass;
hay_counter+=1
its simplified of course cause there is no command for removing grass but the premise is instead of writing the same lines of code u just call the the label of the func which its harvest() and it does everything u wrote in it
p.s tbf for almost a complete beginner u have done a good job in this vid yes the code at the end was unnecessarily long and complicated but at least it worked and u didnt gave up well done matt!
The reason harvest has () is that it's a function. In most programming languages, all functions have some kind of container after them to take arguments/parameters. Like move(North), the function is move, the parameter is north, telling the move function where to move. Harvest is a function that doesn't take arguments, so it's () are blank, but they still exist because they basically tell the program that the prior word is a function.
and harvest on it's own is a value. Later on when you get variables you can do things like if cond: a = harvest else: a = do_a_flip ... a()
You're right... coders were shouting at the screen. You don't need to check planting conditions with your moves... What you had to harvest everything at first was great all ya needed was to add an if before planting to know which to plant. moving logic & planting logic should be their own things. You want to keep the logic as simple as possible and generally that means keeping them separate. Keep up the great videos, if you want more programming games perhaps check out Screeps:World it is a cool game that doesn't get as much love as I think it deserves.
He made it so much more complicated than it had to be. He's a true dev, hehe.
@@DanielKling feature creep is a tricksie beast
Now do it all with just one while loop. And only one call to the harvest function.
im disappointed he didnt even touched on functions, if this game even has that feature
DEFinatly had functions
@@NineEyeRon Ha! INTeresting thing you did there.
Functions need to be unlocked, but yeah they exist.
Wasn't expecting to see RCE programming, but as a programmer, I can say you have done well for the first time! Good job!
As a programmer, I have to say this was a really good video!
And to answer your question, "Why do we add () after harvest?" is because it's a function. "harvest" is the name of the function and () tells the program to run that function. This also allows us to give that function data between (), like you did with "move(North)".
"It looks complicated but it works" are word to live by
Words to program by at least
Works for Todd Howard😂😂
The question mark is so important too, that little "it works...?" is a universal experience for programmers.
the other one is "I don't know what I did, but it works now" XD I was waiting for him to say something like that, but he never did.
Matt, if you want to continue this as a series: if you write a part of the code that is **identical** to another one like at least two or three times, you probably should refactor your code (check how to improve it and simplify it).
**Warning, this is a WALL OF TEXT and contains coding technical knowledge that may be a lot to read if you don't care about coding.**
Suggestions:
*A good philosophy when you begin is: If your function has more than two indentations (the spaces or tabs at the beginning), it needs to be refactored if possible, three indentations is sometimes okay, but that part needs to do simple and quick.
*In your main while, separate your movement, the harvest and the rest, so you don't have to copy/paste that part each time you want to do something new.
*You don't have to do an "else" if there is no need for an else. In your movement code, you move North anyways, so get rid of the else and move North all the times.
*You'd probably want to move East on Y == 0 because if they add new rows you'd need to change it each time to the new last row.
*A "while" is also kind of a "if", you don't have to repeat the "if", for example if the "x" is not 2, it won't try to do the "while" anyways so you save an "if".
*In fact, you don't really need that many "while"s since you already loop each time and with a little thinking, things could be rearranged to be more concise.
*Eventually you could create functions, and that'll make things both more complicated for you, but so much simpler in action (and also for you when you get the knack for it), but until then keep it in the main "while".
*Any many other little tricks.
So an example of refactoring would be (I used dots because youtube often destroys the formatting of code if spaces or tabs are used, three dots equals a tab):
BTW "##" is a way to represent the programmer's comments in Python, what is after it on that line doesn't count as code and is often a remainder that can help your future self or others understand details about your code, or also parts of the code you want to work on later and you don't want to be active right now.
while True:
...if can_harvest():
......harvest() ## Up to now, you must use harvest every plant you have, remove it from the rest as it'll do it each time anyways. Use an "elif" if a plant doesn't need harvest.
....
...if get_pos_x() == 1:
......trade(Items.Carrot_Seed)
......plant(Entities.Carrot)
...elif get_pos_x() == 2:
......plant(Entities.Bush)
## ...elif get_pos_x() == 3:
## TODO
...
...move(North)
...if get_pos_y() == 0:
......move(East) ## That way, you move North each time and East only when it gets back to the first row.
And that's it, it does what your function do, but in much less lines, much more readable and easy to add things to. Well, I switched the grass to the first column and the bush to the last, because Grass only needs harvesting anyways and not planting, so it'll just skip that part and loop again, saving much time and not needing another "elif" for nothing, but it's still basically the same.
If you get a new plant, you just add a new "elif" and the required row, trade and plant, although as you unlock new things (especially functions and lists), you may even "simplify" your code even more... by using more complex techniques XD But the idea is, the easier you make it for the machine, the more optimized and fast it'll go, and/or the more versatile it can be (adding a new type of plant would eventually be much easier), but at the cost on making it more complicated for you, it needs a certain logic and experience to make the correct choices of techniques.
There of course could be more optimal functions:
*You could take into account the growth speed of various things. For example, perhaps the drone needs to do two harvests and flip inbetween for the grass, because grass grows really quick but needs a flip to let it grow a bit, and you need it more than the rest.
*You could also check your needs in each different plants so you don't have an excess of one and a lack in the others, and do columns with multiple plants, but you'd need to change how your code works entirely for that one.
*You could also skipping the whole column if the first plant is no ready to harvest (if you think about it, if the first plant of the column can't be harvested, you don't need to check the whole column to know they'll all be not ready if they're all the same species).
*Since carrots need tilling, you could add a check if that tile needs to be tiled when there's new rows that get added (because otherwise you'd need to pause the program and manually get that new carrot tile tilled), right now you could just add it to the carrot column check and check if the soil needs to be tilled and till it if yes, but eventually you'd want that outside the if because you probably need tilling for multiple types of plants.
And MANY others improvements I can't think of right now or would take too long to explain, but that comment is already a yuge wall of text and I'll stop now.
This is great but having played the game after seeing this video, every plant after this has some weird rule that means it's not as simple as adding the next type. For example, trees can't grow next to each other, pumpkins can form mega pumpkins and sunflowers you can only harvest the one with the most petals or you get nothing. And I haven't even finished the game yet.
When i played it I had it like this, imagine a 4x4 grid
For i in ROW_LEN
For j in COL_LEN
do_plant(1)
do_carrot(2)
do_grass(1)
And inside the do_x you do all the processing for that type of veggie. Of course those functions call more functions but once it's done you just dont care about the internals, if you know do_carrot yields you a carrot it doesnt matter how.
And for later game you add another layer outside
While true:
Normal_farm()
Full_pumpkin_fam()
Maze()
@@diegomastro5681 I did something similar but different. I worked out which crop was the lowest and passed that into the function then did the logic inside that function, always producing full fields of crops. Of course, that was before I looked at polyculture which is going to need another rewrite I think. Haven't even attempted maze but I did get everything up to sunflowers working.
@@Xeridanus Oh that's clever, I did the balancing manually, once I saw low of some resource i just tweaked the amount of iterations for each field.
I also couldn't make polyculture work, just too much work for little return.
Without spoiling anything, try to keep going until you get to the first reset.. The thing you unlock oh boy it blows the game wide open
Putting all those loops really threw me for a loop.
Putting all those loops really threw me for a loop.
Putting all those loops really threw me for a loop.
Putting all those loops really threw me for a loop.
Putting all those loops really threw me for a loop.
Putting all those loops really threw me for a loop.
I love how he makes his code future proof, by making his system go back by running into the wall, it does'nt matter how big your farm is since it just goes back.
> Names a temp script file "test"
"Yup thinking like. A programmer already"
Man. This bring back memory when I start programming and before I learn how to do automated tests.
The pain and fun in chaotic programming.
As a dev, I gotta say Well Done! Watching you learn was great to see. I know how difficult it is to get programming at the beginning as i've been trying to teach my son some programming recently
Bought the game in minute 1 and paused. Very fun way to learn programming. I've been doing it for the last 10 years, but still enjoy these little challenges.
In the start you should treat the field as a 2 dimensional array (rows and columns). Since the field grows in both directions you want to make sure your code doesn't break. This way you can dynamically say how many rows (or columns) you want to grow different crops,
Also a tip: you don't actually need to do_a_flip, that's just time spent when you could just skip to the next produce and see if that's ready instead
this is a pseudo how mine works:
size = get_world_size()
col_carrots=1
col_bushes=1
while True:
for x in range(size):
for y in range(size):
# will not spoil the actual logic but USE FUNCTIONS
# this way we will always iterate over every row and column and we can just change parameters if we need more / less of something
23:26 Every programmers in a nutshell
Rule No. Zero: if it works don't touch it.
@@blackfox848 "If it ain't broke, don't fix it"
- Somebody, sometime
"If it ain't broke, optimize it"
- Some programmer
This feeling of satisfaction makes programmers want to continue their work
Remember you don't want to overcook the spaghetti, code is best served al dente.
and as a pro tip, here is a recipe for some spaghetti sauce:
First brown the beef and onion. Chop the ground beef finely as you go. After it’s browned I often like to add it to my food processor to pulse it once or twice so that it’s finely crumbled. It makes the sauce extra smooth (although some people like their spaghettie sauce with larger peices of meat in it,)
Side by side photos of a skillet with uncooked ground beef and onion, and then cooked and crumbled ground beef and onion.
Next, add the tomato sauce, tomato paste, seasonings, Worcestershire sauce, and sugar and bring the mixture to a simmer. Add water and simmer for 30 minutes or longer, to get more depth of flavor. The longer you simmer it, the more the flavors will blend together beautifully.
Your recipe needs a long irrelevant story behind it before you get to the actual recipe :P
Cool, now I can play after work without thinking that I'm not improving my programing skills
I actually think this game looks like an excellent programming tutorial. It doesn't hide "real code" but still lets you instantly visualize what the effect of the code has on the drone. And has some pretty good documentation compared to some of the actual libraries I have to use in my job.
At 16:32 I was itching for Matt to discover for loops
also infinite loops are technically fine (while true do) they just arent safe *depending on the language your using (*even then, they usually arent safe) The one thing that makes infinite loops 'safe' is a built in terminate button, or otherwise something that can manually break the loop.
Else, if not caught by OS or CPU, the program will deadlock the cpu and simply hang EVERYTHING (..actually now that i think about it... it will only hang a cpu core.)
(note, interpreter languages basically never have this possibility, as usually the interpreter will save you)
MatLab is short for Mathew Labrador Retriever. You need Paddy.
MatLab Stands for Matrix Laboratory
@@noah907 Matt Labrador, but definitely not Mattias Labradoodle.
Well, you know how you disparage Architects....
As a developer myself, this was both hilarious and cringe at the same time. I was like WTF is he doing with that first grid navigation attempt. But then I would suck at designing bridges. We should stick to our areas of expertise ;)
Seriously and honestly though this game is just brilliant for introducing people to our world. You learn SO much more by trying and failing than by just following a tutorial where all the code is handed to you on a plate.
Well done for having a crack and exposing the game to wider audiences. We need more developers despite what people say about generative AI.
Ah yes excel without boxes, that’s exactly how programming works.
Formulas: the gateway to coding
I mean...VBA?
@@AtrakKarta We don't talk about that lol
@@AtrakKarta *Slams fist on table*
Do not say that name in this house!
I LOVE this. It was a lot of fun watching you work through the basics. And what you ended up with reminds me A LOT of my first project. I have one small hint, if you want to hear it.
Separate your movement from all the other if statements. Only have one place that says "Move North" or "Move East". You're gonna see something so cool once you get to functions
1:26 You assume wrong. Everyone is screaming. All the time.
As a student of Computer Engineering I both laughed and facepalmed multiple times. I have to say though, you've got so much experience in problem solving in general that you've made a lot of progress considering it's only one video, hope to see more!
P.S.: Yes programming is rewarding but as the complexity of the program increases the debugging process increases exponentially and that's pretty frustrating
00:01 Matt went MatPat
What…….
@RasikaVaidya-ix6ge he started off with a little bit of a MatPat style "Hello"
Omg he did lol
Thanks for showing this game, I liked this concept enough to buy it today and just finished it (haven't done the timed run for the leaderboard yet).
I really want to see you finish this game; or at least see you try to automate sunflower and gold farming.
Overall not too bad for a non-programmer but definitely room for improvement. I had a couple notes on your "else" usage:
-TLDR: an if does not require an else.
--If you have the same line in the `if` and the `else`, like "move(North)", just delete the else section and remove a tab to bring "move(North)" out of the if.
--If the only thing in an `else` is "do_a_flip()" you can just delete the whole thing; do_a_flip() is like a sleep() or delay(); but not really needed.
-You can define functions like "def func_name():" and put loops or shared code in different windows to organize stuff better.
what is the name of the game
Name?
The farmer was replaced!
I recommend only one while loop. You should not need to nest anything in the loop except if-else conditionals. Hope that helps!
This is a nice little game to learn coding. And it's so funny to see you do the "while true" and go "That's not gonna work, it must be capital T" or "while: True" go "The colon needs to be at the end." But don't worry, mistakes like these are common when you start to program, but it's a bit like learning a language. In the beginning, you may sometimes flip two letters of unfamiliar words or forget a comma, but over time you will do it correctly without even thinking about it.
as a programmer this looks amazing to watch
I would love to learn to program like this.
The programming language is actually a real one called Python, and it's quite useful so yeah.
@@briondalion 99 little bugs in the code, 99 little bugs in the code. Take one down, patch it around 117 little bugs in the code.
@@briondalionsoldering is pretty fun and somewhat simple, just remember one rule, always use flux. Solder doesn't behave well without flux
There a lots of useful ways to learn for free. You just need to sample a bunch of different options and find one that works for you.
You can. That's what this game is for.
Hey Matt, people probably have said this already, but the brackets after the "harvest" function exists as a way for it to get inputs. So leaving it empty just means that it's not taking any inputs. An oversimplification, but I hope this helps.
1:35 professional programmer
Fun fact: every game has an infinite loop except very very few. This is where the game logic, graphics, sound, user input and etc is all taken care of.
I spent a lot of years as a programming tutor. The monstrosity of the while: while: if: brought back a ton of night terrors...
So many times I spent going "What the hell are you even trying to do?"
The devs owe you at least one purchase. I'm buying.
While I am not an experienced coder like most of these folks - this put a smile on my face watching you essentially recreate a double matrix FOR loop to be able to iterated through the 2d grid. Great fun and great way for people to get introduced to coding!
Unfortunate that you jumped past the FOR loop section when you unlocked it. I think it might have saved you some headache from creating that monster
A lot of programming uses infinite loops, but you'd usually have some conditions in there so that it only does it so often, maybe checks a timer. And actions would depend on other conditions, like if can_harvest(). But generally you want a program to run forever, as long as it's doing useful things.
The warning in the game was that, if one program is running a _tight_ infinite loop, doing nothing but looping round and round, it can fill up all the processor's time. But the code you write here isn't running on your actual PC's processor, just a simulated one in the game. And besides that, modern versions of Windows will keep an eye to make sure one program isn't trying to grab all the processing cycles and lock up the system.
Yup. I have and encountered plenty of "while (True)" commands. Most of which can be replaced with "until ()" commands, but the logic didn't properly exist in that language or it was waiting on an external response between iterations
:(){ :|:& };:
No they won't lol. C++ or any low level programming language can definitely clog windows and get to 100% CPU usage.
AS A PROGRAMMER - I feel it's compulsory to start like that with this video - I was indeed holding myself back and trying not to scream "no! what the bloody hell are you doing?!", and also giggling at the "solutions" and "logic" of it all.
But it works, and that's what's important.
But since I am not subscribed, I was instructed to only push the subscribe button. Else: push_like_button() was skipped because the first if-statement was true.
I'll like the next video then, since I was not instructed to like this one.
as a software engineer i want to play this game, my kids might learn coding too playing this
For making grass and wood you should do:
while True:
if can_harvest():
harvest()
if get_pos_x() == 0:
plant(Entities.Bush)
elif get_pos_x() == 1:
if get_ground_type() != Grounds.Soil:
till()
if num_items(Items.Carrot_Seed) == 0:
trade(Items.Carrot_Seed)
plant(Entities.Carrots)
move(North)
if get_pos_y() == 0:
move(East)
epic farming! im getting this on my laptop, looks great!
A tip, I'd set up one code box to plant each type in a single row.
Then the main code checks what is there. If carrots, if canHarvest, harvest, buy seed, plant, water, move else move.
This way, you plant rows initially, then main will just check what it is. If it can harvest it will harvest and replant the same thing and move otherwise it will just move and check what is growing in the next plot.
In Chemical Engineering, I had a physical chemistry class where we modeled quantum tunneling of particles in Matlab. We were able to effectively determine the probability of losing particles in atomic space and then plot that probability over the modeled space at the same time. Pretty neat if you ask me.
So fun to watch someone learning to program. Sometimes we learn more from a mistake (bug) than a success (bug free).
Thanks for sharing!
16:35 to be fair....
Yeah, as someone that is able to find really weird errors and that do know how to properly code I am seeing what I would have done the first time I was learning to code but would never do now.
There is a robot battle game that requires you to do a similar process. Its very entertaining since you have different builds, so you're like "if an enemy is in range fire" "if an enemy if closer than x move away" or commands to focus fire since you get 3 robots at a time.
How dare you bring up MatLab... I had blocked it out 😆
When matt says "the programmers are all shouting at their screens" to be fair he isn't lying
At least he didn’t use Google like most of us
Tbh though, as a software developer I use Google daily, some might even say its an essential skill of developing to use Google right and find the good resources
What do you mean "at least"? Sure it's good that he didn't just Google how to beat the game, but as the other person mentioned I would imagine most programmers use Google. It's a vast resource that can help come up with ideas or lead down the path to fixing errors, why would we not use it?
If it makes you feel any better, the programmers in your audience aren't making fun of ya. We all were newbies at one point. Honestly it's just putting a big ol smile on my face just watching you learn in real time. Programming is more than just knowing what commands you can use, it's about taking a complex problem and breaking it down into pieces, and this game does a great job of conveying that.
Petition for a mega edit of season 5 of timber born
Mega edits are for finished things. He still makes tinberbiurners
@@simonsepicwhat are you smoking? He’s released mega edits of prior timberborn seasons already
@@Tall_dark_and_handsome I smoke a lot lmao so I clearly forgot that.
Tbh I'm just not a fan of mega edits I like new content each time.
I just started this game Matt. I went to college for programming I don’t understand it much. However all the little rules you break make me smile and it’s exactly what I went through. There’s a learning curve but it gets sooo good.
Am subscribed, so will hit like button. 24:11 - Shame only subscribers will hit the like button though.
Watching this as a developer is grotesquely painful but also hilarious
Also fascinating because it shows you how many of these things I've internalized over the years to the point where they're second nature to the me which aren't at all intuitive for a beginner.
Matt is making me get the money to buy the game just so that I do it better.
10/10 advertisement Matt
Not even mobile add can dream of being this good
Update: I got the game and love it to bits. No shady advertising here
The variables and functions upgrades will be your friend! Get those before unlocking more farmy stuff
I would agree with my fellow developers that this was a little painful, but you’re learning! And that’s what the job is about.
I don’t think I could ever do coding for a living. It amazes me the patience of typing in every single action for a program because I just like to work on problems with my hands
Patience is definitely something you need as a programmer, not getting frustrated easily is also very helpful 😅
You just described something you wouldn't want to do because it involves using your hands and then qualified that statement by saying you like to use your hands instead. Huh?
@@Sundablakr what I mean is with coding and things it’s more about typing but I’d like to physically move things around to fix problems not stare at a screen
@@MrJerrytheSlimeWell yeah, you fix the problems in your code by physically moving your monitor around. That's the part nobody tells you about.
Easy solution:
while True:
move(North)
if get_pos_y == 0:
move(East)
if can_harvest():
harvest()
# Now do whatever you want to plant
if get_x_pos() == 2:
plant(Entities.Bush)
elif get_x_pos() == 1:
if get_ground_type() != Grounds.Soil:
till()
trade(Item.Carrot_Seed)
plant(Entities.Carrots)
(Untested from the top of my head on my phone, on the train)
I did computer engineering at uni. As you mentioned, a lot of other engineers had to learn some basic programming for things like matlab.
Your programming in this reminded me a lot of how they programmed vs. how the computer engineering people with actual programming classes programmed.
if check(subscribed):
print("yeah! i am subcribed")
else:
print("i liked the video as well")
for a beginneer coder, the only things I know is wait() and print("yas")
and if your wait looks like this: wait(1), that means 1 second.
print("print") just prints the text inside, also that's why () is needed in coding!
This is painful Matt, I’m sorry
I mean, he got it done.
This is my main channel, where I fix and race cars and motorcycles. Decent sized channel but I know this channel does not have the projected growth as another niche...like the framing channel I had for a year.
My farming channel where I am attempting to automate farming(weed reduction/grass cutting) on my properties, I do this at my house in the states, and my small farm in Scotland. This video is exactly what I have been looking for. As for me I can buy the equipment no problem, I can even attach the cameras and go as far as learning to remotely operate the equipment from my office chair. But its this next stage in Automating that I am struggling with.
I would love to add you to my network as weird as that sound, but Im past the point in caring how I sound as I know this technology is about to grow very fast, and I want to be on the right side of this!
Steve
Day 119 of notifying people that the Discord server's Suggestions forum is a better place to suggest new games to Matt. (Just don't ping him!)
Please do more. As a programmer; it hurt seeing that code, but it was fun and entertaining anyway
Man really said never eat shredded wheat. Bud it’s never eat soggy waffles
Nah it's definitely never eat shredded wheat, or naughty elephants splashing water
This was great 😂 As a programmer for a decade now, I love seeing new folks trying their hands in programing
Architects should be replaced by small kids, they basically do the same drawings, and the kids need the money so they can go to engineering school
I would love to see a whole expansive base building game all about coding machines to harvest resources, and then coding conveyors and trucks to take the resources to the correct location where they are sold. Something like satisfactory for coders that also teaches you how to code from the beginning
Day 1 of commenting for no reason