Defining a Game CBP March 2006. Development Methodology We all discuss/analyze some games We...
-
Upload
roderick-casey -
Category
Documents
-
view
218 -
download
0
Transcript of Defining a Game CBP March 2006. Development Methodology We all discuss/analyze some games We...
![Page 1: Defining a Game CBP March 2006. Development Methodology We all discuss/analyze some games We identify OOP classes required We negotiate some “base classes”](https://reader036.fdocuments.us/reader036/viewer/2022062423/56649f585503460f94c7d381/html5/thumbnails/1.jpg)
Defining a Game
CBP March 2006
![Page 2: Defining a Game CBP March 2006. Development Methodology We all discuss/analyze some games We identify OOP classes required We negotiate some “base classes”](https://reader036.fdocuments.us/reader036/viewer/2022062423/56649f585503460f94c7d381/html5/thumbnails/2.jpg)
Development Methodology
We all discuss/analyze some games
We identify OOP classes required
We negotiate some “base classes”
You extend these classes or introduce new classes to implement
your game. You sweat, and work hard to implement your game.
Your Tutor writes these classes
![Page 3: Defining a Game CBP March 2006. Development Methodology We all discuss/analyze some games We identify OOP classes required We negotiate some “base classes”](https://reader036.fdocuments.us/reader036/viewer/2022062423/56649f585503460f94c7d381/html5/thumbnails/3.jpg)
Two Options
Isometric
Platform
![Page 4: Defining a Game CBP March 2006. Development Methodology We all discuss/analyze some games We identify OOP classes required We negotiate some “base classes”](https://reader036.fdocuments.us/reader036/viewer/2022062423/56649f585503460f94c7d381/html5/thumbnails/4.jpg)
Isometric Tile Games
CBP March 2006tiles
![Page 5: Defining a Game CBP March 2006. Development Methodology We all discuss/analyze some games We identify OOP classes required We negotiate some “base classes”](https://reader036.fdocuments.us/reader036/viewer/2022062423/56649f585503460f94c7d381/html5/thumbnails/5.jpg)
Isometring
CBP March 2006
?
?
? ?
?
?
?
![Page 6: Defining a Game CBP March 2006. Development Methodology We all discuss/analyze some games We identify OOP classes required We negotiate some “base classes”](https://reader036.fdocuments.us/reader036/viewer/2022062423/56649f585503460f94c7d381/html5/thumbnails/6.jpg)
![Page 7: Defining a Game CBP March 2006. Development Methodology We all discuss/analyze some games We identify OOP classes required We negotiate some “base classes”](https://reader036.fdocuments.us/reader036/viewer/2022062423/56649f585503460f94c7d381/html5/thumbnails/7.jpg)
j
i
(0,0)
Screen axesx
y
Tile axes
Screen and Tile Coordinates
CBP March 2006
![Page 8: Defining a Game CBP March 2006. Development Methodology We all discuss/analyze some games We identify OOP classes required We negotiate some “base classes”](https://reader036.fdocuments.us/reader036/viewer/2022062423/56649f585503460f94c7d381/html5/thumbnails/8.jpg)
CBP March 2006
Buildings
![Page 9: Defining a Game CBP March 2006. Development Methodology We all discuss/analyze some games We identify OOP classes required We negotiate some “base classes”](https://reader036.fdocuments.us/reader036/viewer/2022062423/56649f585503460f94c7d381/html5/thumbnails/9.jpg)
Roads and Animations
![Page 10: Defining a Game CBP March 2006. Development Methodology We all discuss/analyze some games We identify OOP classes required We negotiate some “base classes”](https://reader036.fdocuments.us/reader036/viewer/2022062423/56649f585503460f94c7d381/html5/thumbnails/10.jpg)
Platform Games
i
j
0 1 2 3 4
0
1
2
3
4
CBP March 2006
?
![Page 11: Defining a Game CBP March 2006. Development Methodology We all discuss/analyze some games We identify OOP classes required We negotiate some “base classes”](https://reader036.fdocuments.us/reader036/viewer/2022062423/56649f585503460f94c7d381/html5/thumbnails/11.jpg)
CBP March 2006
![Page 12: Defining a Game CBP March 2006. Development Methodology We all discuss/analyze some games We identify OOP classes required We negotiate some “base classes”](https://reader036.fdocuments.us/reader036/viewer/2022062423/56649f585503460f94c7d381/html5/thumbnails/12.jpg)
Platform Games
CBP March 2006
![Page 13: Defining a Game CBP March 2006. Development Methodology We all discuss/analyze some games We identify OOP classes required We negotiate some “base classes”](https://reader036.fdocuments.us/reader036/viewer/2022062423/56649f585503460f94c7d381/html5/thumbnails/13.jpg)
i
j
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Screen and Tile Coordinates
CBP March 2006
![Page 14: Defining a Game CBP March 2006. Development Methodology We all discuss/analyze some games We identify OOP classes required We negotiate some “base classes”](https://reader036.fdocuments.us/reader036/viewer/2022062423/56649f585503460f94c7d381/html5/thumbnails/14.jpg)
![Page 15: Defining a Game CBP March 2006. Development Methodology We all discuss/analyze some games We identify OOP classes required We negotiate some “base classes”](https://reader036.fdocuments.us/reader036/viewer/2022062423/56649f585503460f94c7d381/html5/thumbnails/15.jpg)
1. Tank at (i, j)
2. Remove from tile (i,j)
3. Calc vI, vJ
4. Update i += vI; j += vJ
5. Add to tile (i,j)
1
2
5
Moving gObjects over tiles
CBP March 2006
![Page 16: Defining a Game CBP March 2006. Development Methodology We all discuss/analyze some games We identify OOP classes required We negotiate some “base classes”](https://reader036.fdocuments.us/reader036/viewer/2022062423/56649f585503460f94c7d381/html5/thumbnails/16.jpg)
ActiveTile class methods -1-
public void addTileToContents(BasicTile tile) {
contents.add(tile);
}
public void addGameObjectToContents(GameObject gObj) {
contents.add(gObj);
}
private ArrayList contents = new ArrayList();
![Page 17: Defining a Game CBP March 2006. Development Methodology We all discuss/analyze some games We identify OOP classes required We negotiate some “base classes”](https://reader036.fdocuments.us/reader036/viewer/2022062423/56649f585503460f94c7d381/html5/thumbnails/17.jpg)
ActiveTile class methods -2-
RoadTile rTile = (RoadTile)acTile.getIfBasicTile(“CornerA");
GameObject occupied = acTile.isOccupiedByOtherGameObject(this);
bTile = (BuildingTile)acTile.getIfBasicTile(“Palace");
MagicCrystal crystal = (MagicCrystal)acTile.getIfPickup("MagicCrystal");
![Page 18: Defining a Game CBP March 2006. Development Methodology We all discuss/analyze some games We identify OOP classes required We negotiate some “base classes”](https://reader036.fdocuments.us/reader036/viewer/2022062423/56649f585503460f94c7d381/html5/thumbnails/18.jpg)
Behaviour FSM
Event CORNER_A
State RGT
vI = 0; vJ = -1
vI = 0 vJ = 1 State UPP
i
j
![Page 19: Defining a Game CBP March 2006. Development Methodology We all discuss/analyze some games We identify OOP classes required We negotiate some “base classes”](https://reader036.fdocuments.us/reader036/viewer/2022062423/56649f585503460f94c7d381/html5/thumbnails/19.jpg)
step() {
ActiveTile acTile = canvas.findActiveTile(i,j);
acTile.removeGameObjectFromContents(this);
int urgentEvent = boundaryDetect(vI,vJ);
if(urgentEvent == BOUNDARY) FSMPlayer(state,BOUNDARY);
if(urgentEvent == NO_EVENT){
FSMPlayer(state,event);
}
// get the active tile at this new position and add this object to it
acTile = canvas.findActiveTile(i,j);
acTile.addGameObjectToContents(this);
}
Building a Player step() method -1-
Event here from Keyboard
![Page 20: Defining a Game CBP March 2006. Development Methodology We all discuss/analyze some games We identify OOP classes required We negotiate some “base classes”](https://reader036.fdocuments.us/reader036/viewer/2022062423/56649f585503460f94c7d381/html5/thumbnails/20.jpg)
step() {
... // check to see if we have hit a blue ball and take some action
BlueBall ball = (BlueBall)acTile.getIfGameObject("BlueBall");
if(ball != null) {
System.out.println("Red Ball talking to Blue Ball");
// set some event here to react to interacting with a blue ball
// FSMPlayer(state,TOUCH_WITH_BLUE); if it urgent or
// event = TOUCH_WITH_BLUE; if it can wait.
}
if(urgentEvent == NO_EVENT){
FSMPlayer(state,event);
}
}
Building a Player step() method -2-
![Page 21: Defining a Game CBP March 2006. Development Methodology We all discuss/analyze some games We identify OOP classes required We negotiate some “base classes”](https://reader036.fdocuments.us/reader036/viewer/2022062423/56649f585503460f94c7d381/html5/thumbnails/21.jpg)
idle doneexploding
triggered
doExplode() doDone()
finished
triggered
doExplode()
Generates finished or triggered
Bomb class
![Page 22: Defining a Game CBP March 2006. Development Methodology We all discuss/analyze some games We identify OOP classes required We negotiate some “base classes”](https://reader036.fdocuments.us/reader036/viewer/2022062423/56649f585503460f94c7d381/html5/thumbnails/22.jpg)
idle chasing
Near_plr
Far_from_plrNear_plrFar_from_plr
Gremlin class
doIdle()
doChase()