Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Part C: The Tile Type [35% = 31% test program + 4% code] In Part C, you will create a structured record (struct) to represent

Part C: The Tile Type [35% = 31% test program + 4% code]

In Part C, you will create a structured record (struct) to represent a tile, as well as related constants and functions. You will have an interface file named Tile.h and an implementation file named Tile.cpp. Each tile will have unsigned integer member fields for the tile owner, genus, and species. We will use a special value to indicate that a tile has no owner. Tile will be an abstract data type (ADT), so client code will only operate on Tile variables using the functions we provide.

By the end of Part C, you will have functions with the following prototypes:

Tile tileCreate (unsigned int genus1, unsigned int species1);

bool tileIsOwner (const Tile& tile);

unsigned int tileGetAffectedPlayer (const Tile& tile,

unsigned int whose_turn);

unsigned int tileGetGenus (const Tile& tile);

unsigned int tileGetSpecies (const Tile& tile);

void tileSetOwner (Tile& tile, unsigned int owner1);

void tileActivate (const Tile& tile, unsigned int whose_turn);

void tilePrint (const Tile& tile);

void tilePrintOwnerChar (const Tile& tile);

void tilePrintGenusChar (const Tile& tile);

void tilePrintSpeciesChar (const Tile& tile);

Perform the following steps:

  1. In Tile.h, define a record to represent a tile.
  2. In Tile.h, define unsigned integer constants for the different kinds of tile genus. We will create all the constants for the whole CS 115 course now so that we never have to change them. The constants are GENUS_COUNT, GENUS_MONEY, GENUS_DICE, GENUS_POINTS, and GENUS_BOMB, and they have the respective values 4, 0, 1, 2, and 3.
  3. Copy in the function prototypes shown above.
  4. In Tile.cpp, define unsigned integer constant named NO_OWNER to indicate that a tile has no owner. It should have a very large value so that there is no danger of a player having that number.
  5. Add an implementation for the tileCreate function. First, it should create a local variable of the Tile type. Next, it should set the genus and species of the tile variable based on the parameters. Then, it should set the tile owner to NO_OWNER. Finally, the function should return the tile.
  6. Add an implementation for the tileIsOwner function that returns false if the tile owner is NO_OWNER and true otherwise.
  7. Add implementations for the tileSetOwner function that sets the tile owner to owner1.
    • Note: The Tile parameter for this function is not const. If it was, we wouldn't be able to change the owner.
  8. Add implementations for the tileGetGenus and tileGetSpecies functions. They should return the values of the appropriate fields of the Tile parameter.
    • Note: These functions will not be used by the game, but they will be used by the test programs.
  9. Add implementations for the tileGetAffectedPlayer function. If the tile has an owner, it should return the owner. Otherwise, it should return whose_turn.
  10. Add an implementation for the tilePrintOwnerChar function. If the tile has no owner, it should print a space (' '). Otherwise, it should call the playerGetTileChar function and print the value that function returns.
  11. Add an implementation for the tilePrintGenusChar function. If the tile genus is GENUS_MONEY, it should print a dollar sign ('$'). If the tile genus is GENUS_POINTS, it should print a star ('*'). Otherwise, it doesn't need to do anything.
    • Note: We will print things for the other kinds of genus in later assignments.
  12. Add an implementation for the tilePrintSpeciesChar function. It should just print the tile species as a number.
  13. Add an implementation for the tilePrint function to display three characters representing a tile. It should call the tilePrint*Char functions.
    • Hint: Remember * means "anything". In this case, there are three tilePrint*Char functions.
  14. Add an implementation for the tileActivate function to handle what happens when a tile is selected by a dice roll. It should start by determining which player is affected. Suppose that we name the player q. Then your code should check the tile genus. If the tile is a money tile, increase the affected player's money by an amount equal to the tile's species. In other words, increase qs money. If the tile is a points tile, increase that player's points. In other words, increase qs points.
    • Hint: Call a Tile function to determine the affected player.
    • Hint: Call a Player function to increase a player's money or points. The function also prints out the players money or points.
  15. Add a precondition to the tileCreate function. It should require that the genus parameter is strictly less than GENUS_COUNT.

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image_2

Step: 3

blur-text-image_3

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Modern Database Management

Authors: Jeff Hoffer, Ramesh Venkataraman, Heikki Topi

13th Edition Global Edition

1292263350, 978-1292263359

More Books

Students also viewed these Databases questions

Question

=+j Describe the various support services delivered by IHR.

Answered: 1 week ago

Question

What does Processing of an OLAP Cube accomplish?

Answered: 1 week ago