Inspiration
We were very interested in coming up with a way to combine a fun game with learning. A memory game is a very simple game that any person with any kind of background can easily pick up and start playing.
What it does
This game gives 3 types of memory games. One of the styles is a simple number to number memory game where you choose the number card and you are shown the number that it hides, match the pair to gain points and win. The second style is a customizable question and answer format where you can substitute the hidden numbers from the style before with your own questions, whether they are about computer science or psychology. The last style is a permanent format. This can be changed to be whatever the user wants, but can only be adjusted through changing the code.
How we built it
We started building the first type of the game by structuring it very simple to get the format and card checking correct. Then we moved on to adjusting the program to randomly move the hidden values around. This took time as we also had to adjust the card checking algorithm, but overall it did not take too long. After this, we decided to add the customizable functionality, our main part of the project. This was one of the easier parts as all we had to add was a loop taking inputs and adding it to an empty list. Once we finished that we thought we should add a sample/permanent format to make it easier for users to see what they can actually build. We knew just telling people to make something may confuse them so adding this section gives users an idea of the potential of the program. Lastly, we added a scoring system to keep people playing for longer. Studies show that making things more "game-like" can keep players attention longer.
Challenges we ran into
When first creating the program we believed that this was going to be very easy, as the game itself is rather simple. We soon realized that keeping data in-line and consistent was a problem. At first, we decided to make the grid a 2D array. After working more on the program we realized that we were running into more problems when we were displaying the grid and traversing it as a whole. Because of this, we changed the layout to be a 1D array simply using a carriage return to display the grid.
Accomplishments that we're proud of
We are very proud of working together and the process of how we broke down problems. In a team, it is much harder to find a common direction where you would want the project to go. After a while of drawing up what we thought the project was going to be we had a very similar viewpoint as a group.
One of our groupmates, Joe, did not know any Python by the beginning of the project. As we worked on it we had to teach him as we went. It was a good lesson on how to teach and learn something very new while at the same time working on a time-sensitive project.
What we learned
We learned that having a detailed plan of the interface, coding structure, and small updates can help in the long run of creating and developing a program. For most of us, we knew how important it is but seeing it in complete action truly shows how being a little bit more detailed can take something good and make it even better. Groups may be tough to work with in some instances, but in others, they are crucial with members helping one another when they stuck on a certain line of code or persistent error.
What's next for Creatable Memory Game
When we got closer to the end we realized how much we could have added to the project as a whole. We thought about how we could create a database where we could maintain and hold old sets of questions and answers. This would make the game better as when you are studying you will most likely be studying over multiple sessions and having to go back and re-add the last session takes a long time. This is a great format that can be used in tons of different circumstances and ways that allows a greater number of people to be able to use the program. All of us feel as though this is a game that could be used in K-10 situations where students have ample access to computers. Being able to port this onto a mobile platform could also be useful in being easily used while on the go as well. With a lot of potential, we are interested in seeing where and how this program could develop to its fullest.
Log in or sign up for Devpost to join the conversation.