Racket lends itself particularly well to creating rules for a card-matching game. Using the cards
and rsound
libraries, we can programmatically create matched pairs (or larger sets) of cards which have unique characteristics that are reconciled within each pair or set.
This project will rely heavily on the object-oriented facilities of Racket which we were introduced to in the lecture. The cards
library uses local state to maintain the state of the game through the card table, and we will extend the card objects to keep track of the sound(s) they must play in response to particular gameplay events.
We will design any assets which we cannot (or decide not to) define in code externally. Currently, we plan to design custom faces for our cards in Photoshop, which can be brought in as bitmaps. Additionally, some primitive sounds may be generated in Audacity if they cannot be adequately modeled by a generator procedure. These will be imported using the file I/O capabilities of the rsound
library, and filtered to achieve the desired sound using the filter procedures we write.
Our live demonstration will feature the playable matching game, with players winning upon successfully matching all corresponding cards. We plan to shuffle the cards after a set number of incorrect guesses in lieu of a firm lose condition. The player's score will be calculated using failed attempts, as well as how long it took to find all of the matches.
How will you know if you are successful? The purpose of a game is to entertain. As such, our success will depend largely on our ability to offer an entertaining experience through our core gameplay and audiovisual feedback features.
- Create scramble feature.
- Determine how to create matches.
- Begin point system using matches.
- Determine how to keep time.
- Create a final point system based on time, matches and mismatches.
- Design primitive sound generators and filters
- Synthesize final sounds through combination and filtering of primitives
- Have the scramble feature working for a set number of cards.
- Determine how to create matches.
- Begin to determine the point values for each element of the final score, and how it will be calculated.
- Initial set of primitive sound generators completed
- One or more filters completed
- Some, if not all, card faces designed
- Integration of scramble feature with the rest of the game.
- Completed scoring system.
- Sound integration figured out with some sounds added to card objects and usable in-game
Will be responsible for initializing the board state, as well as implementing the match checking system. The match checking system will called upon anytime there are two face up cards on the board. If the two cards are matching they will be removed, otherwise they will be flipped back down. Since this would be an ideal place to put any scoring procedures, I will also be working with other members on how to implement the scoring system.
Will be working on creating the scramble feature after there are several (possibly 5 - we'll need to test what is reasonable) failed attempts at matching cards. I will also be working on the point system with the help of the other members to determine how we can incorporate both missed matches and time into your total score, as well as successful matches.
Will work primarily on building the sound effect system in rsound
. This includes writing generators for primitive sounds, combining and filtering these primitives to create more interesting sounds for use in the game, and integrating these sounds with the core gameplay functionality. Additionally, I will design the custom card faces to be used in the game.