1 / 14

VG101 RECITATION 8

VG101 RECITATION 8. By TAs. CONTENTS. Brief review of class Strategy for assignment 9 Questions about assignment 7, 8. BRIEF REVIEW OF CLASS. In header file: Base class Constructors Private/protected/public member Data/ function member Accessors/ Mutators In cpp file:

nico
Download Presentation

VG101 RECITATION 8

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. VG101RECITATION 8 By TAs

  2. CONTENTS • Brief review of class • Strategy for assignment 9 • Questions about assignment 7, 8

  3. BRIEF REVIEW OF CLASS • In header file: • Base class • Constructors • Private/protected/public member • Data/ function member • Accessors/ Mutators • In cpp file: • Implementation of class functions

  4. Base class Data members Private member constructor class RectangleT : public GObjectT { PointT llp, urp; void drawRect (); public: RectangleT (const double x0 = 0, const double y0 = 0, const double x1 = 0, const double y1 = 0, const string clr = "Blue", const double fill = 0); RectangleT (const PointT &p0, const PointT &p1, const string clr = "Blue", const double fill = 0); const PointT &getLocation () {return llp;} double getWidth () const; double getHeight () const; double getArea () const; void setLocation (const double x, const double y); void setLocation (const PointT p); void setWidth (const double w); void setHeight (const double h); void draw (); void draw (const string clr, const double density = 0); }; Public member Get & Set Function members

  5. BRIEF REVIEW OF CLASS • Base class • Base class will be constructed first • // BallT is a derived class from ArcT • // A ball is an arc of 360 degree • BallT (double r = 0) : ArcT (r, 0, 360, "Blue", 1) {}; • Constructors • Always define a default constructor (suggested) • One and only one of the constructors must be called

  6. Strategy for assignment 9 • Divide the project into several stages: • 1. class design • 2. initialization • 3. get ball/paddle moving • 4. handle collisions • 5. end of game • One function for one simple purpose only • Test your functions one by one • Test your program after finishing each stage • Have fun after finishing the whole project

  7. STAGE ONE: CLASS DESIGN • Game window: GwindowT • Represent the application window • Brick wall • Represent all the bricks • Row, column, vector of bricks… • Brick: RectangleT • Represent one brick • Color, position(row, column), location( x, y)… • Paddle: RectangleT • Location(x, y) …

  8. STAGE ONE: CLASS DESIGN • What need you to design: • 1. constructors • 2. data members and their accessors and mutators • 3. special functions: • Samples: • // let the paddle move when being selected bool paddle::selected(…) void paddle::move(…) • // draw the brick wall, the main function in initialization void brickWall::draw(…)

  9. STAGE TWO: INITIALIZATION • Initialize the game: • 1. init brick wall, give color, location to each brick • 2. init paddle, give color, location to it • 3. draw the window ,the wall and paddle • No movement in this stage • Refer to the lecture note on drawing the brick wall

  10. STAGE THREE: GET BALL/PADDLE MOVING • To move the ball • Just as what you do in assignment 5-2 • Consider the brick wall as a static border of the window, don’t drop out the brick been clicked • To move the paddle • Just as the movingBall program discussed in lecture (page 46) • Don’t let the paddle move out of the window • These are not difficult, but they are basis for the following stage

  11. STAGE FOUR: HANDLE COLLISIONS • Three kinds of collision • 1. ball and brick • 2. ball and paddle • 3. ball and window • For kind 2 and 3, it’s similar to assignment5-2 • Refer to the boundary check discussed in lecture (page 27) • Remember to check the position of the paddle to see whether the ball falls onto the paddle or falls out.

  12. STAGE FOUR: HANDLE COLLISIONS • For kind 1, divide it into two steps • 1. how to determine whether a known brick collides with the ball? • 2. search among all the existing brick in the wall to find the brick to be clicked • Maybe you need a function bool BrickT::isClicked(…) • 3. do changes to the ball (direction), and do changes to the brick (disappear) • You just need a for/while loop to do the searching and a if statement to handle the collision

  13. STAGE FIVE: END OF GAME • Taking care of some small details in the game: • You’ve got to take care of the case when the ball hits the bottom wall • You need to check for the other terminating condition, which is hitting the last brick • You should experiment with the settings that control the speed of your program • Most importantly, you’ve got to test your program to see that it works

  14. QUESTIONS ABOUT ASSIGNMENT 7, 8 • Send your code to TA’s email box if you didn’t submit your assignment before deadline • Any questions?

More Related