Note: OPEN UNOGAME FILE, NOT JACHACKS2024 FILE

Inspiration

Our friend and teammate Avery always brings a deck of cards to school. Whether it's during lunch breaks or those rare moments of free time between classes, Avery's deck is like a beacon of fun that draws us in for a quick game or two whenever we get the chance. It's become our default go-to activity whenever we need a break from the grind of schoolwork, and a way to give our brains a break. Since we are tech nerds, we instantly knew that we would love to develop this game ourselves to put our skills to the challenge, and maybe play against the bots if none of us are available!

What it does

Our Uno card bot console game is a digital version of our beloved Uno card game, offering an immersive experience of the same strategic gameplay that you know and love except against bots. With the input of numbers, you can interact with the game by drawing cards, coming up with plans, and aiming to be the first to empty their hand and win. The bots will also be fighting for the win, so make sure to make good moves! It's the perfect solution for those times when friends aren't around, giving you endless entertainment and a chance to hone your Uno skills solo style.

How we built it

We built it using C# in Visual Studio. All our logic was created in this project, over the span of 6 classes all with different functionalities controlling different aspects of the game.. We had plenty of planning beforehand on our white boards, deciding which classes contain what code, how to link them together, how to split the work so everybody is doing something of importance, and a giant checklist to help motivate us! After planning, we all begun working on different classes and doing the research where necessary. One other key component that helped us build it is plenty of snacks.

Challenges we ran into

We ran into SO MANY problems throughout this project. Initially, we wanted to implement a real AI API that we could train to play Uno. This proved extremely difficult as we are first year students and have very bare-bones knowledge on programming, so AI was a couple levels too high. We only just learned object oriented programming a few weeks ago. We all researched plenty, watching many videos and reading many documentation. Eventually we landed on ML.NET that works with Visual Studio and C#. We had problems with training, and then later problems with implementing the (poorly) trained bot as our initial training dataset was not very good as we did not really understand how it all worked. We were running out of time, and the AI would be useless without a functioning game so we all collectively decided to turn out focus towards that and create a simple logical bot within our project using logic that was understandable to us, as AI training was not.

We had several problems with our methods, such as the Draw card method that should always be available at every turn. We collectively spent 2 hours trying to find a fix to this and eventually ran out of time before we could.

We also had several problems with organizing our code in the right place as it was the first time we worked with this many classes because as I mentioned before, we only learned OOP a few weeks ago and have only made very simple classes.

We had never done a group coding project either, so communicating was a struggle at the beginning because we were used to working in silence and not sharing what we were working on. By the end of this hackathon we had improved plenty on this. We used a site called replit to have a google docs style coding environment where we can see each other's live updates, which did help.

Accomplishments that we're proud of

There is a lot that we are proud of. For two of us, it was our first ever Hackathon so we went in very blind. We are mostly proud of the sheer amount of new things we learned. This involves AI training as we got to experiment with this for the first time, we also made our biggest programming project to date in the span of 24 hours. We have never had this many classes, this many lines of code and accomplished something this complicated. We're proud of doing this much in such a short amount of time, and we are proud of how much we have learned simply in one year of Computer Science to be able to make a project like this, even if we needed more time to make it fully functional.

What we learned

We learned lots about the development of Artifical Intelligence, what it is, how it works, and the idea of how training it works, even if we did not accomplish this. We also learned how to implement bots and give them logic to have someone to play Uno against as we have never done something like this before. We learned way more about OOP and game designing in general. It has truly broadened our view of things we considered unfeasable a mere 24 hours ago, and taught us things we hadn't thought of learning or understanding.

What's next for UnoGameAgainstBots

We dicussed this and we all agreed we would love to continue to develop this, and perhaps when we have more programming knowledge than simply basic C# we could use a game engine and turn this into a real game that is not restricted to the console. Though so far we have never done anything outside the console and it was too much for us to do today. We would love to continue developing this project together as it has taught us so much and it is not done. It can teach us plenty more.

How it is Educational?

Uno has been a part of our childhood since we were young. Simple card games like this help educate low-level logic and reasoning skills, pattern recognition, and overall can help give your brain some challenges!

Built With

Share this project:

Updates