cop 3503 fall 2012 shayan javed lecture 10

30
1 / 30 COP 3503 FALL 2012 SHAYAN JAVED LECTURE 10 Programming Fundamentals using Java 1

Upload: lael

Post on 22-Feb-2016

35 views

Category:

Documents


1 download

DESCRIPTION

COP 3503 FALL 2012 Shayan Javed Lecture 10. Programming Fundamentals using Java. In-Class Exercise. Extra Credit. 2% extra credit. Angry Birds. How many of you have played it?. Angry Birds. Well-designed, simple game. Angry Birds. Well-designed, simple game Throw birds at pigs . - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: COP 3503  FALL 2012 Shayan Javed Lecture 10

1 / 301

COP 3503 FALL 2012SHAYAN JAVED

LECTURE 10

Programming Fundamentals using Java

Page 2: COP 3503  FALL 2012 Shayan Javed Lecture 10

2 / 30

In-Class Exercise

Page 3: COP 3503  FALL 2012 Shayan Javed Lecture 10

3 / 30

Extra Credit

2% extra credit

Page 4: COP 3503  FALL 2012 Shayan Javed Lecture 10

4 / 30

Angry Birds

How many of you have played it?

Page 5: COP 3503  FALL 2012 Shayan Javed Lecture 10

5 / 30

Angry Birds

Well-designed, simple game

Page 6: COP 3503  FALL 2012 Shayan Javed Lecture 10

6 / 30

Angry Birds

Well-designed, simple game

Throw birds at pigs

Page 7: COP 3503  FALL 2012 Shayan Javed Lecture 10

7 / 30

Angry Birds

Well-designed, simple game

Throw birds at pigs Physics!

Page 8: COP 3503  FALL 2012 Shayan Javed Lecture 10

8 / 30

Angry Birds

Well-designed, simple game

Throw birds at pigs Physics!

Made millions

Page 9: COP 3503  FALL 2012 Shayan Javed Lecture 10

9 / 30

Angry Birds

Well-designed, simple game

Throw birds at pigs Physics!

Made millions

Available on pretty much every platform

Page 10: COP 3503  FALL 2012 Shayan Javed Lecture 10

10 / 30

Angry Birds

Well-designed, simple game

Throw birds at pigs Physics!

Made millions

Available on pretty much every platform Even Google Chrome!

Page 11: COP 3503  FALL 2012 Shayan Javed Lecture 10

11 / 30

Angry Birds

Exercise:

Design the class structure for the game (UML diagram)

Page 12: COP 3503  FALL 2012 Shayan Javed Lecture 10

12 / 30

Angry Birds

Exercise:

Design the class structure for the game (UML diagram)

Try to use everything we have learned so far: Classes/Inheritance/Abstract Classes Interfaces Interaction between classes

Page 13: COP 3503  FALL 2012 Shayan Javed Lecture 10

13 / 30

Angry Birds

Quick look at some of the “objects” in the game: Different types of birds:

Red (Regular) Blue (explodes into 3 smaller ones) Yellow (accelerates mid-air) Black (explodes)

3 more but we can skip those...

Page 14: COP 3503  FALL 2012 Shayan Javed Lecture 10

14 / 30

Angry Birds

Different types of pigs:

Page 15: COP 3503  FALL 2012 Shayan Javed Lecture 10

15 / 30

Angry Birds

Different barriers

Page 16: COP 3503  FALL 2012 Shayan Javed Lecture 10

16 / 30

Angry Birds

Possible solution:

Start off with a class which forms the basis of every object in the world

Page 17: COP 3503  FALL 2012 Shayan Javed Lecture 10

17 / 30

Angry Birds

abstract class Sprite implements Cloneable {Point position;Image bitmapFile; // JPEG, PNG, etc...

double sizeX;double sizeY;

public Object clone() {} // clone method}

Page 18: COP 3503  FALL 2012 Shayan Javed Lecture 10

18 / 30

Angry Birds

abstract class Bird extends Sprite implements Cloneable {double strength;public Object clone() {} // clone method

}

Page 19: COP 3503  FALL 2012 Shayan Javed Lecture 10

19 / 30

Angry Birds

abstract class Bird extends Sprite implements Cloneable {double strength;public Object clone() {} // clone method

}

class RedBird extends Bird implements Cloneable { // inherits properties from superclasspublic Object clone() {} // clone method

}

Page 20: COP 3503  FALL 2012 Shayan Javed Lecture 10

20 / 30

Angry Birds

abstract class Bird extends Sprite implements Cloneable {double strength;public Object clone() {} // clone method

}

class RedBird extends Bird implements Cloneable { // inherits properties from superclasspublic Object clone() {} // clone method

}

abstract class SpecialBird extends Bird implements Cloneable {abstract specialMove(); // {abstract method} executed on tap

}

Page 21: COP 3503  FALL 2012 Shayan Javed Lecture 10

21 / 30

Angry Birds

class BlueBird extends SpecialBird implements Cloneable {specialMove() { }

}

class YellowBird extends SpecialBird implements Cloneable {specialMove() { }

}

class BlackBird extends SpecialBird implements Cloneable {specialMove() { }

}

Page 22: COP 3503  FALL 2012 Shayan Javed Lecture 10

22 / 30

Angry Birds

abstract class Pig extends Sprite implements Cloneable {double health;public Object clone() {} // clone method

}

Page 23: COP 3503  FALL 2012 Shayan Javed Lecture 10

23 / 30

Angry Birds

abstract class Pig extends Sprite implements Cloneable {double health;public Object clone() {} // clone method

}

class SmallPig extends Pig implements Cloneable { // inherits properties from superclass

}

Page 24: COP 3503  FALL 2012 Shayan Javed Lecture 10

24 / 30

Angry Birds

abstract class Pig extends Sprite implements Cloneable {double health;public Object clone() {} // clone method

}

class SmallPig extends Pig implements Cloneable { // inherits properties from superclass

}

class MediumPig, BigPig, HelmetPig, KingPig, etc.

Page 25: COP 3503  FALL 2012 Shayan Javed Lecture 10

25 / 30

Angry Birds

abstract class Pig extends Sprite implements Cloneable {double health;public Object clone() {} // clone method

}

class SmallPig extends Pig implements Cloneable { // inherits properties from superclass

}

class MediumPig, BigPig, HelmetPig, KingPig, etc.

// each have their own images, sizes, etc.

Page 26: COP 3503  FALL 2012 Shayan Javed Lecture 10

26 / 30

Angry Birds

abstract class Barrier extends Sprite implements Cloneable {double strength, density, etc..;public Object clone() {} // clone method

}

class IceBarrier, WoodBarrier, StoneBarrier, etc.

// each have their own images, sizes, etc.

Page 27: COP 3503  FALL 2012 Shayan Javed Lecture 10

27 / 30

AngryBirds

One last class...

Page 28: COP 3503  FALL 2012 Shayan Javed Lecture 10

28 / 30

AngryBirds

One last class...

class Level implements ? {// what properties?

}

Page 29: COP 3503  FALL 2012 Shayan Javed Lecture 10

29 / 30

AngryBirds

One last class...

class Level implements Cloneable {// what properties?

public Object clone() {…} }

Page 30: COP 3503  FALL 2012 Shayan Javed Lecture 10

30 / 30

AngryBirds

One last class...

class Level implements Cloneable {ArrayList<Bird> birds;ArrayList<Pig> pigs;ArrayList<Barrier> barriers;

public Object clone() {…} }