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
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
o Use 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
o Other C++ tools will be discuss each week, that provide options for enhancing the interactive experience
o Avoid 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: <insert Name>
Project Name: <insert Name>
Developers: <insert Name> <insert CQU#>
<insert Name> <insert CQU#>
<insert Name> <insert CQU#>
About: <insert Header Description>
\***********************************************************/
#include <algorithm> //array utilities
#include <cctype> //cctype tools
#include <cmath> //mathematics library
#include <cstdlib> //C-standard library
#include <cstring> //cstring tools
#include <ctime> //C time library
#include <iomanip> //IO manipulation library
#include <iostream> //input/output library
#include <iterator> //address utilities
#include <string> //string class library
#include <vector> //vector class library
using namespace std;
#ifndef change_flag_name
#define change_flag_name
/* add object here */
#endif
Program Compiler File
/***********************************************************\
Filename: <insert Name>
Project Name: <insert Name>
Developers: <insert Name> <insert CQU#>
<insert Name> <insert CQU#>
<insert Name> <insert CQU#>
About: <insert Header Description>
\***********************************************************/
#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)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%S %%%%%%% E%
% %% %%%%% %
% %%% M %% %
% %%% %% %
% # %% %%% %% %
% %% %%% %%%% %% %
% %% %%%% %%% %%%% %% %
% %% %%% % %% %
% %% % %% %
% %%% %%% %% %%% %
% %% %%% %%% %%% %
% %%% %%% %%% %% %
% %%% %%%%%%%%%%%%% %% %
% %%%% %%%% %
% %%%%%%%%%%%%%% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
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
o w – to go up (up arrow)
o a – to go left (left arrow)
o s – to go down (down arrow)
o d – to go right (right arrow)
o q – 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)