ENG 06 Winter 2021 Final Project
Up to now in ENG6, we have focused on teaching you the “how” of programming. In the team
project you will be taking your own ideas and bringing them to fruition through your knowledge
of computer programming. Software development is rarely a one-person effort, so the project
will be team-based. You will be randomly placed into a 3-4 person team with members from any
section. Beyond the core part of the final project, we ask you to implement a number of special
features, called Reach elements, so as to make your project different from your classmates.
Important: We discourage the use of other Matlab code written by someone else, however, if
you use it you must reference the code creator.
Project : Card Game
Project Description: Implement a MATLAB program of a card game of your team’s choice.
You may create your own rules. The card game must involve more than two players. The
players should be able to make strategic decisions to win the game. The program should draw
cards upon request, apply the rules, and score the game. Each team makes decisions on what
programming elements to use to interact with the users. Special attention should be paid to:
1. Clarity on how to play the game.
2. How the users should interact with the program.
3. The visual, auditory cues and special effects (e.g. animations, a sound clip when the
cards are drawn, etc.). You are allowed to use simple pictorial representations for each
card, for example a King of hearts card with a large K and a heart, etc.
4. The users should be able to play the game with each other over the internet.
The implementation of the card game should involve two players at different locations using a
keyboard or a mouse to play their turn. All projects should have the following elements:
1. A graphical user interface.
2. An animation.
3. A sound effect.
4. Make use of a user-defined OOP class in at least one programming element.
5. One or more tables.
6. The capability to play the game between two, or more, players remotely.
7. Clearly indicate in your code and your video where these elements are
implemented. In your YouTube video, please point out how you implemented some
features (especially in the Core and the Reach) inside your code. What functions did
you use? Did you use any data structures such as structs etc? What was challenging
about implementing a certain feature and why?
Appendix
· MATLAB supporting files - zipped directory
Links to external resources:
· Controlling Random Number Generation.
· Play Audio
· MathSoft Guide
Collaboration Policy: Once the teams are formed you are only allowed to talk and collaborate
with members within your team. Team members are expected to equally participate, and
collaboratively work towards the completion of the project. Other than contacting the teaching
assistants for clarification, you may not seek the assistance of other persons to complete your
team's project. (Of course, general discussions about how to implement a GUI, OOP, and other
programming constructs could be discussed with other students, but your team must be totally
responsible for the implementation of code used in your project).
Grading Criteria: The projects are open ended. As long as your program can perform the
assigned tasks, there will be no correct or incorrect approaches. Certainly there will be more
acceptable and attractive solutions, and these will be judged in comparison with competing
solutions submitted by your classmates. The final project will be graded in 6 parts:
1. Project proposal: Each team submits a 2-3 page project proposal via Canvas
describing the project they have selected, a general description of how they will implement
the main components of their project, and a clear description of the Reach features that their
team proposes. Essentially, the scope of the project should be both challenging enough to
merit full credit and doable within the timeline. An Appendix should contain a breakdown of
programming tasks, and who will be responsible for what, along with a timeline that will
meet the submission deadline (we suggest you make use of a Gantt chart.. The expectation
is that each team member must take responsibility for a specific aspect of the project and
grading for each member will be adjusted according to how the project tasks were delegated
and who was responsible for what aspects of the project. The more specific you can be in
defining the programming tasks, what functions should exist, and what each function should
accomplish, the better.
2. Core: Complete the basic project as outlined in the project description.
For example: Show whose turn it is to play, an image background such as a green table, an
image showing the card draw outcome, the scores, etc
● Features of the GUI:
○ A button to shuffle and draw a card
○ A button to play a card.
○ Display scores edit fields
○ Anything else you need or want to add depending on the game you have
chosen.
3. Reach/Special Features: Implement the project enhancements described in your
proposal. Your completion of the Core and the creativity of your proposal will be taken into
account during the grading process.
● Animations
○ Drawing a card
○ Play a card
○ A scoring system
○ Others
● Sound
○ Shuffling card
○ Playing a card
○ A scoring system
○ Others
4. Additional Core Requirement: Remote players and Tables:
● The GUI interface must include a table keeping a record of the rolls for each
player throughout the game.
● The capability to play the game between two, or more, players remotely.
5. Youtube Video Requirements: Youtube has several examples of ENG6 videos (search
ENG6). The format of the video is entirely up to your team as long as the following criteria
are met:
A. The maximum length of the video is 10 minutes
B. Each team member must be seen in the video to present their work and
contributions
C. A clear and easy to follow demonstration that shows the correct functionality
of your program (show your program actually working in the video – not screen
shots of before and after.)
D. Use visual aides to help explain your steps (whiteboard, markers,
poster, etc.). The video does not have to be fancy, just effective in relaying
the most important information.
6. Team Evaluations: Each member must provide a brief personal summary of her/his
involvement and contributions. Each team member is required to submit evaluations of
her/his teammates’ contribution, one for each of Core and Reach. For example, if your team
has members A, B, C, your evaluation can be similar to the following for a single member.
Team Member A: was in charge of writing the code to execute the equalizer filters. For the
Reach, A was in charge of adding 2 different analysis plots that could show power spectral
density plot and frequency content of audio file. Team Members B, C agree that A performed
these tasks for the project.
Project Deadlines:
Deadline #1: Sunday, February 14, 5:00 PM: Submit the Project Proposal: A team member
must submit your team name to canvas with the project proposal. Only one team member
should do this!
The submission should also contain an image of the design view with the main components of
your game. The image must show the buttons, axes, images, edit fields, etc.
Figure 1. Example of a design view: Crazy Eights card game.
Deadline #2: Sunday, February 28, 5:00 PM: Submit the core. Each team will submit all
relevant code files. Each team will submit a zip file of all the code, the zip file will have the
mlapp. and all .m files, all .img files and any other files that are needed for the game to run.
The submitted .mlapp GUI must allow the game to be played by one or two players using the
same keyboard.
Note: The UI components for the remote player locations and tables can be avoided in this
stage.
Deadline #3: Friday, March 12, 5:00 PM: Submit the Final Project. The final project must
include the Additional Core Requirements and the Reach/Special features: Implement
tables, remote locations and the project extensions described in your proposal.
Each team will submit all relevant coding files, a link to Youtube video and team evaluation
materials. Each team will submit a zip file of all the code, the zip file will have all .mlapp files, all
.img files and any other files that are needed for the game to run. In addition, it should contain a
PDF of the team evaluation document. The link of the Youtube should be accessible to all those
who use the link.
学霸联盟