[Solved] Lab2

$25

File Name: Lab2.zip
File Size: 37.68 KB

SKU: [Solved] Lab2 Category: Tag:
5/5 - (1 vote)

INSTRUCTIONS

Compile this code. You should see 3 rectangles, one of which you can move

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) Get and set functions

  1. a) In Rect, create a get and set methods for min and max. Use the

signature void setMin(Vec2 const & min) and

void setMax(Vec2 const & max). Use the this pointer to disambiguate

min and max.

1) Refactor userRect to be dynamic

  1. a) Make userRect a dynamic object. That means it should be declared as

Rect * userRect instead of Rect userRect. Use new to dynamically

allocate.

  1. b) the member operator . will need to be replaced with the

pointer-to-member operator ->

  1. c) Dont forget to delete userRect at the end of the program!

2) Operator Overloading

  1. a) Overload the += operator for Vec2, and have it do exactly what

Vec2::add does.

  1. b) Replace uses of Vec2::add with the += operator. For example, instead of

min.add(delta);, use min += delta;.

3) Random rectangles, by reference and by pointer

  1. a) create a method with the method signature void setRandom(Rect & r).

This function will give the passed-in Rect object a random location.

The random x should be between 0 and 50 x. The random y should be

between 0 and 20. Limit the possible width and height to a minimum of 2

and a maximum of 10.

  1. b) test void setRandom(Rect & r) on the local Rect object rect0.
  2. c) create a method with the method signature

void setRandomByPointer(Rect * r), which functions the same as

void setRandom(Rect & r), except that the argument is

passed-by-pointer.

  1. d) test void setRandomByPointer(Rect * r) on the local Rect object

rect1.

4) Test and show overlap

  1. a) Using the existing function isOverlapping(Rect const &), test to see

if userRect collides with any other Rect objects. If userRect is

overlapping, draw it with + instead #.

  1. b) Create a Rect * pointer that points to the address if the Rect object

that userRect collides with. It should point at NULL if userRect is

colliding with no other Rect objects.

  1. c) Print to the screen the width and height of a Rect object that userRect

collides with. If no collision is happening, print no collision

instead.

5) Array of objects

  1. a) Replace the Rect objects rect0 and rect1 with an array of 2 Rect

objects, rect[2].

  1. b) Make sure you replace every remaining rect0 with rect[0], and every

rect1 with rect[1].

  1. c) Increase the size of the rect array to 5. Make sure all 5 Rect

objects are randomized, drawn to the screen, and tested for collision.

  1. d) If you have not already done so, replace

duplicate-code-using-array-elements with a for-loop. For example:

If you have:

rect[0].draw(0);

rect[1].draw(1);

rect[2].draw(2);

rect[3].draw(3);

rect[4].draw(4);

Replace it with:

for(int i = 0; i < NUMBER_OF_RECTS; i++)

{

rect[i].draw(0+i);

}

Do this where objects are randomized, drawn, and tested for collision

Achievements: (if you finished, and would like a challenge, try these)

[Union Job] When the userRect collides with another rectangle, instead of

drawing the entire userRect with + signs, draw only over the

intersecting area.

[Dat Rectangle] Implement an interface that allows the user to select the

moving rectangle, cycling through all possible rectangles with the tab

key, indicating the selected rectangle by drawing it with #.

[One Size Fits All] Implement an interface that allows the user to increase

or decrease the size of the selected rectangle. For example, if w,

a, s, and d is used to move the rectangle, W, A, S, and D

could move the Rects max location up, left, down, and right.

[Add Another] When the user presses space, dynamically resize the rect array

to hold an additional random rectangle.

[One Too Many] When the user presses backspace, dynamically resize the rect

array to hold one less rectangle, removing the last one in the list.

When finished:

1) Make sure your name is at the top of this source file

2) Submit this project online

  1. a) Right-click on the .cpp files name within visual studio, and select

Open Containing Folder

  1. b) Close Visual Studio (you may re-open this .cpp file by right-clicking

on it in the file system, and slecting edit)

  1. c) Make sure the following files are DELETED from the projects file

structure:

* Any file with the extension: .ncb, .sdf

* Any folder named: Debug or ipch

* If Visual Studio is open, you will not be able to delete some files

* If you do not see file extensions, press Alt in the file explorer,

select Tools->Folder options->View, and uncheck

Hide extensions for known file types.

  1. d) zip the file structure (the project), which is now missing the

temporary files

* Select all of the files in the project folder

* If the resulting zip file is more than 1mb, you have included

temporary files mentioned above. Delete temporary files (that dont

have a .cpp or .h extension) and try again.

Reviews

There are no reviews yet.

Only logged in customers who have purchased this product may leave a review.

Shopping Cart
[Solved] Lab2
$25