Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

// INSTRUCTIONS // ------------ // Compile this code. You should see a happy-face character on a field of // periods. You can move the character

// INSTRUCTIONS // ------------ // Compile this code. You should see a happy-face character on a field of // periods. You can move the character with the 'w', 'a', 's', and 'd' keys. // // Read through this code! Try to understand it before starting the assignment. // Comment confusing lines with what you think code is doing, and experiment // with existing code to test your understanding. // Once you feel comfortable with this code, accomplish each of the following, // and make sure your code compiles and runs after each step is completed. // // 1) Object Oriented Refactoring // a) Write a class called Entity to store two public integers named x and y, // and a char named icon (the player data). // b) Remove x, y, and icon (the player data) from main(), create an instance // of the Entity class (named whatever you like) in main(), and use its // members as replacements for the x, y, and icon variables that were // removed. // c) Write a parameterized constructor for the Entity class that sets x, y, // and icon, and use it when creating the instance. // d) Make x, y, and icon private variables of Entity, and create Accessor // and Mutator (or Getter and Setter) functions to use them in main(). // (hint: "player.x++" could be "player.setX(player.getX()+1);" ) // e) Write a struct called Vector2, which has two int variables, x and y. // f) Write a default constructor for Vector2, which sets x and y to 0. // g) Write a parameterized constructor for Vector2, which sets x and y. // h) Remove x, and y from Entity, add an instance of the Vector2 structure // named "pos" to the Entity class, and use pos's members as replacements // for the x, and y variables that were removed. // i) Remove height and width (in the game data) from main(), create an // instance of the Vector2 structure named "size", and use size's x member // as a replacement for width, and size's y member as a replacement for // height. // j) Write a method in Vector2 with the signature // "bool is(int a_x, int a_y)". "is" should return true if a_x is equal to // that instance's x, and a_y is equal that instance's y. // k) Instantiate a new object of class Vector2 called "winPosition", and set // it's x, y value to size.x/2, size.y/2. // 2) Add Game Logic // a) Add code to the while-loop so that when the player reaches // "winPosition", which should be determined by using the "is" method, the // "state" variable should be set to WIN, ending the game. // b) Add code to the while-loop so that the state variable is set to to LOST // if the player leaves the play field (ending the game). // 3) Using enums // a) Create an enum called "GameState" with the possible values "RUNNING", // "WIN", "LOST", and "USER_QUIT". // b) Replace the state variable with an isntance of the GameState enum.

// lab1: simplegame_OOP

//

// read main.cpp, and follow the instructions at the bottom of main.cpp

#include // std::cout

using namespace std;

#include // SetConsoleCursorPosition(HANDLE,COORD)

#include // _getch()

/**

* moves the console cursor to the given x/y coordinate

* @param x

* @param y

*/

void moveCursor(int x, int y)

{

COORD c = {x,y};

SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), c);

}

int main()

{

// player data

int x = 3, y = 4;

char icon = 1;

// game state constants

const int RUNNING = 1, WIN = 2, LOST = 3, USER_QUIT = -1;

// game data

int width = 20, height = 15, input, state = RUNNING;

do

{

// draw the game world

moveCursor(0,0);

for(int row = 0; row < height; row++)

{

for(int col = 0; col < width; col++)

{

cout << '.';

}

cout << ' ';

}

// draw the player

moveCursor(x, y);

cout << icon;

// get input from the user (wait for one key press)

input = _getch();

// process input from the user

switch(input)

{

case 'w': y--; break; // move up

case 'a': x--; break; // move left

case 's': y++; break; // move down

case 'd': x++; break; // move right

case 27: state = USER_QUIT; break; // quit

}

// show the game state message

moveCursor(0, height+1);

switch(state)

{

case WIN: cout << "You WON! Congratulations! "; break;

case LOST: cout << "You lost... "; break;

}

}

while(state == RUNNING);

// user must press ESCAPE before closing the program

cout << "press ESCAPE to quit ";

while(_getch() != 27);

return 0;

}

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

Step: 3

blur-text-image

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

Excel As Your Database

Authors: Paul Cornell

1st Edition

1590597516, 978-1590597514

More Books

Students also viewed these Databases questions

Question

What is meant by organisational theory ?

Answered: 1 week ago

Question

What is meant by decentralisation of authority ?

Answered: 1 week ago

Question

Briefly explain the qualities of an able supervisor

Answered: 1 week ago

Question

Define policy making?

Answered: 1 week ago

Question

8. Satyam Computer Services Limited

Answered: 1 week ago

Question

2. Explain how the role of training is changing.

Answered: 1 week ago

Question

7. General Mills

Answered: 1 week ago