You will develop a variant of the board game, Brass, a famous masterpiece of Martin
Wallace. The game is set in the industrial revolution era during the 19th century,
where players compete as entrepreneurs in building the most valuable enterprise by
acquiring capital and expanding their production networks in several rounds.
We have made the class design decisions, and completed the clumsiest parts of the
game for you. You will apply your knowledge in Inheritance and Polymorphism to
complete the remaining part of the game according to the documentation in the later
part of this page.
Don’t get overwhelmed by the number of source files we give you, only a few of
them concern you. You need not get down to the inner workings of every one of the
already implemented functions: just read the comments placed above the function
declarations in the header files to understand the functions’ intention. Furthermore,
it is more important to understand the programming logic than the actual game
Some important changes:
- We will cancel Card::BuildIndustry() and Card::CanBuildIndustry();
- Demolish should be done for built industry only, will update later
- IndustryImpl::BeOverbuilt() should use IndustryImpl::Demolish()
- you will put your answers in card.h card.cpp industry-todo.cpp and link
- the directory structure is reorganized
- income_sublevel is renamed to exp
- IndustryImpl::Build() and IndustryObserver::UpdateIndustry() are
- Link::set_observer() should be pure virtual, and LinkImpl should override
- You may want to use the diff tool in VS Code (see this StackOverflow post for
details) to check the differences between two files.
- Sample Program (see file “PA_Sample”):
○ The TUI does not work in VS Code’s terminal for Mac and Windows.
Windows users, please use “start ./pa2.exe”; Mac users, please start
the program in another terminal.
- If you use VS Code, you may follow the creating a project and using the
terminal for the custom compilation command section on our VS Code usage
tutorial. That is, create a folder to hold all the extracted files in your file
explorer, then open this folder in VS Code. You can then use the terminal
command g++ -std=c++11 -o programName *.cpp to compile all sources in
the folder to the program. You are also welcome to create a Makefile for it
yourself. After the compilation, you can then use the
command ./programName OR .\programName (depends on the OS/shell you
use) to run the program.
- Game Map:
- The map is semi-automatically created using graphviz with the fdp engine (code).
- Merchant locations are colored in grey.
- The others are industry locations. Their colors are just for easy reference.