EECE 1080C: programming for ECE
Summer 2022
Laboratory P: Computer Project
Project is due on Wednesday, 15 June 2022
Objective:
The goal of the project is to demonstrate mastery of C++ through the design and implementation of a multi-level interactive computer game.
Project Description:
For one or two players...
Players should navigate around a maze to complete an objective and advance through levels or maps of increasing difficulty
Players can work together to defeat obstacles (traps or npc) compete to find special items and powerups
Players should use keyboard controls to navigate around the maze toward a finishing spot (WASD or keys are preferred, or provide clear instructions)
Groups:
Students may work in teams with 2-3 members.
If students would like to organize a larger team (maximum of 5 members), they should contact Me by email outlining the project goals and responsibility for each member. A larger team should mean a more complex programming project, so that each member has equal contribution to its success.
Rubric (100 points):
See separate paper: EECE1080_Project_Solution for a description of grading criteria
The C++ source code should meet or exceed the following requirements
oUse the full range of C++ tools that have been discussed in this course
Create meaningful variable and function names
Use arrays, repeating blocks, and decision blocks
Maximize the use of global functions, namespaces, and object types
Use modular programming techniques
oOther C++ tools will be discuss each week, that provide options for enhancing the interactive experience
oAvoid using implementation found on the internet
These could be considered plagiarism and will affect you overall score.
If you do find something you want use in your code, make sure you understand how to use it fully and send me an email for permission to use – mainly I like to learn cool ways of doing things, and am interested in what you find
If these advanced implementations are difficult to use or generate a bug in your program. I and the teaching assistances will be unable to help with your project.
Use good programming practice
General Tips:
Take time to discuss and outline the features that you want to build into the game – a flowchart or list of features can help greatly when requesting help from Me or the teaching assistants
Decide who will design each object type, then bring them together in the main code
Compatibility:
The program should compile and run successfully on both Windows OS and Mac OS
Students should be mindful that the professor and teaching assistants may not have the same operating system.
Students should avoid using special features that they find on the internet. – if you don't how it works, don't use it – these special features are usually unique defined for one operating system or another. and will impact the overall score of your project.
Professor's Notes:
The outline on the next page can be used to begin each file in your project.
If you use a modular approach, a object prototype header (hpp) and object definition compiler (cpp), upload an instruction file for compiling
Multiple Object Header Files are advisable to make the project navigation better.
Object Header File
/***********************************************************\
Filename:
Project Name:
Developers:
About:
\***********************************************************/
#include //array utilities
#include //cctype tools
#include //mathematics library
#include //C-standard library
#include //cstring tools
#include //C time library
#include //IO manipulation library
#include //input/output library
#include //address utilities
#include //string class library
#include //vector class library
using namespace std;
#ifndef change_flag_name
#define change_flag_name
/* add object here */
#endif
Program Compiler File
/***********************************************************\
Filename:
Project Name:
Developers:
About:
\***********************************************************/
#include"Insert Header File Name";
int main() {
/* add code here */
return 0;
}
Execution File (.ps1, for modular programs only)
c++ -o output.exe mainProgramFile.cpp classOne.cpp
./output.exe
where
output.exe – name of output execution file
mainProgramFile.cpp – name of the file that contains int main
classOne.cpp – name of first object definition compiler file
more cpp files can be added to the list as needed
Sample Maze Layout
In the sample maze below, the hero (#) must sneak past the monster (M) and find its way from start (S) to a end (E)
Enter Direction (use wasd, arrow keys, or 0 to exit):
You may design your maze as you like; make it fun and interesting.
Player can select from multiple characters, each having a different skill set
During gameplay
Player can select the maze to play (0 through 9)
Player starts on a square of the maze
Player should be able to press the standard buttons to interact with the maze
ow – to go up (up arrow)
oa – to go left (left arrow)
os – to go down (down arrow)
od – to go right (right arrow)
oq – to quit (esc key) (alternative: 0 or another key of your choice)
Limit the players ability to "walk" outside the maze boundary or pass through walls
The player’s goal is to get the character to the end space in the maze
Player should face bad guys and traps, or find hidden items as they wander through the maze
Concerning object types... you may need
A class to manage the attributes of each position on the maze – like traps, special items, and bad guys
An array of positions to represent the maze
A class to describe the general attributes of the hero
A derived class for each of the type of playable character
A class to describe special items
A class to describe npc (non-playable characters)