This year I decided to learn about coding, with the original intention of coding in Java, but I ended up doing some work in C# as well. Now that In-Depth is coming to a close, here’s a summary of my journey! The two big “artefacts” that I have to show today are a calculator and a chess AI program, which I ended up spending most of my time on, especially near the end of the project.
First, I want to give a big thanks to my mentor, Steven Zhang. He helped me a lot with my learning and I couldn’t have done this project without him. He taught me many coding techniques and gave me tons of great resources so I could learn outside of meeting time as well.
Calculator and chess AI
I don’t want to waste too much of your time, so I’ll get straight into some details. Here’s a PowerPoint where I explain my calculator and chess AI at a high level.
If you want to download my calculator and try it for yourself, here’s the link. Note that you will need Java Runtime Environment to run the calculator.
If you want to download my chess AI and try it for yourself, here’s the link. Download the whole folder containing the exe file, the data folder, as well as the MonoBleedingEdge folder. Then, extract everything and run the .exe file (the one with the chessboard icon). First, I have to mention that the chess game is not mine. I borrowed someone’s project on GitHub for the chess game. This was an effort to reduce the time I spend working on the chess game so I could have more time to work on the AI (sometimes called a chess engine) part, which is what I wanted to focus on more. My chess engine is still sort of a work in progress and is really slow, so it runs on depth 2 (plies) for now. It should take about 10-20 seconds to make a move. The amount of moves the AI has to search increases exponentially with the max search depth with an average branching factor of about 30, so the engine is absurdly slow at higher depths. In the future, I plan to improve it with something called bitboards. Be aware that there may be some glitches I missed as well.
If you have the time and are interested, here is the chess engine at depth 3. It may take a minute or even more to make a move, so I would recommend just trying it out at depth 2. However, the AI will be significantly stronger at depth 3.
Here is the link to my GitHubRepository for the calculator, in case you’re interested in the source code. The final version is in the “Recursive” branch.
Here is the link to my GitHub repository for the chess engine, in case you’re interested in the source code. The actual C# files are in Assets > Scripts > Classes and Assets > Scripts > UI.
14 thoughts on “In-Depth Final Post”
Very detailed and well organized post. Thank you. What did you enjoy most about this project?
My favorite parts of the project were when I was trying out new programming techniques and algorithms that I learned either from my mentor or from the internet. There would always be bugs when testing new ideas, but when they are all fixed, I get the reward of seeing the results in my projects. That’s part of the beauty of working with a language like Java. Java has become so widespread that there’s a massive community and tons of forums, especially for question and answer. If I encounter a simple error in my code and don’t know how to fix it, often a solution is available with a quick Google search.
The chess game is great! I’m having a difficult time against the Depth 2 version of the game, but that may just be because I’m not that great at chess, haha. Great job, Colin, this is an amazing game!
Thanks! I noticed the bot sometimes randomly makes a really bad move which may give you an opportunity to win! This is probably due to a bug that I can’t quite find or fix at the moment.
Thank you, Colin! Coding is something I do not have a frame of reference for. What analogy would you use to expalin it to a neophyte? I was not able to access your PPT which would have helped me follow along. Now that you have learned some coding skills, how transferable is it? Is this something you will continue and how much time would you have to devote to move to the next level? Thanks!
Hmm… That’s weird. It seemed to work for me and my friends.
One analogy that I came up with is that code is like a car manual. Code is really just text that gives instructions to the computer just like a car manual that gives instructions to a human. For example, the “troubleshooting” part of the car manual contains instructions in case something is wrong with the car. Similarly, a common programming command is an if-then statement which tells the computer to do something only in a certain situation.
Coding has been really interesting and fun for me, and I plan to keep it as a hobby. In the future when I have time, I think I could try making some Minecraft mods for fun if I can understand Minecraft’s poorly written code.
Hey Colin! Great job on your game! I love how you were able to not only create the game, but also an AI to play against! That takes a new level of talent. Wonderful job!
Thanks for the reply. I completely forgot to mention in this post that the game itself is not mine and I just downloaded a random Unity chess game from the internet (but I ended up making many changes to it). The AI is the part that I focused on most. I’ll update the post now.
Woah Colin, this is so cool! I, unfortunately, don’t have the requirements to run the calculator and I don’t really know how to play chess, but you seem like you put a ton of work into those artifacts, and I learned so much about coding from your slideshow. You explained everything really well. What do you want to make next?
Thanks! Recently I’ve been thinking of building an email spam detector that can intercept spam emails and put them in my junk folder. I get a lot of spam emails so this would be really helpful.
Wow! Awesome In-Depth project; coding is super hard to learn and you did an amazing job! You should be proud of yourself!
Thank you for the comment!
I was wondering what else you can see yourself doing with coding?
I’m not completely sure what comes next with coding, but I have an Arduino at home that I haven’t really used much. Arduinos can be useful for many real-world applications. I could also see myself contributing to some open-source projects on https://github.com/.