ENG 06 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 oneperson effort, so the project will be teambased. Teams can be formed with members of any section. You can form your own team of three. No other team size will be allowed. Only if strictly needed, the TAs may form smaller teams or add members to teams. 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 teams 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 userdefined 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?
Links to external resources:
Controlling Random Number Generation.
Play Audio
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 teams 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 23 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
3. ReachSpecial 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
Shuffling card
Playing a card
A scoring system Others
4. Additional Core Requirement: Remote players and Tables with ThingSpeak:
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 herhis involvement and contributions. Each team member is required to submit evaluations of herhis 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: TBA: Submit the Project Proposal: A team member must submit the project proposal. The proposal needs to include project name and names of all team members at the beginning. 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.
Deadline 2: TBA: 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: TBA: Submit the Final Project. The final project must include the Additional Core Requirements and the ReachSpecial 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.
Figure 1: Example of a design view: Crazy Eights card game.