| | Copyright |
| | Pearson Education |
| | Foreword |
| | Abbreviations |
| | Acknowledgements |
| | Introduction |
| | Part I: Software Engineering and Computer Games |
| | | Chapter 1. Projects and games |
| | | Section 1.1. Features of a successful program |
| | | Section 1.2. Game design |
| | | Section 1.3. The Pop Framework |
| | | Section 1.4. Your project |
| | | Review questions |
| | | Exercises |
|
| | | Chapter 2. Basics of software engineering |
| | | Section 2.1. The Constraint Triangle |
| | | Section 2.2. Requirements and specifications |
| | | Section 2.3. The software engineering process |
| | | Section 2.4. The software lifecycle |
| | | Section 2.5. Managing your project |
| | | Section 2.6. Working in teams |
| | | Section 2.7. Giving a presentation |
| | | Review questions |
| | | Exercises |
|
| | | Chapter 3. The Pop Framework |
| | | Section 3.1. Object-oriented simulations |
| | | Section 3.2. Running and testing the Pop program |
| | | Section 3.3. The Pop source code |
| | | Section 3.4. The essential Pop classes |
| | | Section 3.5. UML class diagrams |
| | | Section 3.6. Using the Pop Framework |
| | | Review questions |
| | | Exercises |
|
| | | Chapter 4. Object-oriented software engineering |
| | | Section 4.1. OO is the way |
| | | Section 4.2. Object-oriented analysis |
| | | Section 4.3. Encapsulation, inheritance, and polymorphism |
| | | Section 4.4. Composition and delegation |
| | | Section 4.5. Principles for OO design |
| | | Section 4.6. The code interface |
| | | Review questions |
| | | Exercises |
|
| | | Chapter 5. Software design patterns |
| | | Section 5.1. Strategy |
| | | Section 5.2. Template Method |
| | | Section 5.3. Command |
| | | Section 5.4. Composite |
| | | Section 5.5. Singleton |
| | | Section 5.6. Bridge |
| | | Section 5.7. Document-View |
| | | Review questions |
| | | Exercises |
|
| | | Chapter 6. Animation |
| | | Section 6.1. The endless animation loop |
| | | Section 6.2. Processor-independent simulation speed |
| | | Section 6.3. The animation cascade |
| | | Section 6.4. Updating the views |
| | | Review questions |
| | | Exercises |
|
| | | Chapter 7. Simulating physics |
| | | Section 7.1. Parallelism |
| | | Section 7.2. The laws of motion |
| | | Section 7.3. Force and acceleration |
| | | Section 7.4. Implementing forces |
| | | Section 7.5. Preserving your physics |
| | | Review questions |
| | | Exercises |
|
| | | Chapter 8. Critters |
| | | Section 8.1. Kinds of critters |
| | | Section 8.2. Overview of the critter class fields |
| | | Section 8.3. Critter methods |
| | | Section 8.4. Critter method overrides |
| | | Section 8.5. The full cCritter prototype |
| | | Review questions |
| | | Exercises |
|
| | | Chapter 9. Sprites |
| | | Section 9.1. Kinds of sprite |
| | | Section 9.2. The cSprite class |
| | | Section 9.3. Polygons |
| | | Section 9.4. Composite sprites |
| | | Section 9.5. The cSpriteIcon class |
| | | Section 9.6. cSpriteLoop and cSpriteDirectional |
| | | Review questions |
| | | Exercises |
|
| | | Chapter 10. Games |
| | | Section 10.1. The cGame class |
| | | Section 10.2. The game's timestep cycle |
| | | Section 10.3. The virtual methods of cGame |
| | | Section 10.4. Arrays of critters: the cBiota class |
| | | Review questions |
| | | Exercises |
|
| | | Chapter 11. Collisions |
| | | Section 11.1. The critter Collide method |
| | | Section 11.2. Collision-handling |
| | | Section 11.3. Colliding spheres |
| | | Section 11.4. Colliding walls |
| | | Review questions |
| | | Exercises |
|
| | | Chapter 12. Listeners |
| | | Section 12.1. How the critters listen to the user input |
| | | Section 12.2. The listeners |
| | | Section 12.3. Shooting with the listeners |
| | | Section 12.4. Viewer listeners |
| | | Section 12.5. How a listener initializes its owner critter |
| | | Review questions |
| | | Exercises |
|
| | | Chapter 13. Shooters and bullets |
| | | Section 13.1. High-level design for cCritterArmed and cCritterBullet |
| | | Section 13.2. The cCritterArmed |
| | | Section 13.3. The cCritterBullet |
| | | Section 13.4. damage and draw |
| | | Section 13.5. Armed players and armed robots |
| | | Section 13.6. The two-way cCritterArmed/cCritterBullet association |
| | | Review questions |
| | | Exercises |
|
| | | Chapter 14. 2D shooting games |
| | | Section 14.1. The Spacewar game |
| | | Section 14.2. The 2D Game Stub |
| | | Section 14.3. The Worms game |
| | | Exercises |
|
| | | Chapter 15. 3D shooting games |
| | | Section 15.1. The Defender3D specification and design |
| | | Section 15.2. The Defender3D code |
| | | Exercises |
|
| | | Chapter 16. Sports games |
| | | Section 16.1. The Airhockey game |
| | | Exercises |
|
| | | Chapter 17. Selection games |
| | | Section 17.1. PickNPop specification and design |
| | | Section 17.2. The PickNPop implementation |
| | | Section 17.3. Other selection games |
| | | Exercises |
|
| | | Chapter 18. Interesting worlds |
| | | The Ballworld side- scroller game |
| | | Section 18.2. Games with walls |
| | | Section 18.3. Sniffing a trail |
| | | Exercises |
|
| | | Chapter 19. More ideas for games |
| | | Section 19.1. Commercial games |
| | | Section 19.2. The Pop Framework games hall of fame |
|
|
| | Part II: Software Engineering and Computer Games Reference |
| | | Chapter 20. Using Microsoft Visual Studio |
| | | Section 20.1. Navigating with Windows Explorer |
| | | Section 20.2. Which version? |
| | | Section 20.3. The Visual Studio user interface |
| | | Section 20.4. The Visual Studio help files |
| | | Section 20.5. Correcting compiler and linker errors |
| | | Section 20.6. Release and Debug builds |
| | | Section 20.7. Use MFC in static library or use MFC in shared DLL? |
| | | Section 20.8. Cleanup |
| | | Section 20.9. Building blocks of a complete program |
| | | Section 20.10. Profiling with Visual Studio, Version 6.0 |
| | | Exercises |
|
| | | Chapter 21. Tools for software engineering |
| | | Section 21.1. File names and directory structure |
| | | Section 21.2. Using the Visual Studio debugger |
| | | Section 21.3. Windiff and merging code |
| | | Section 21.4. Counting lines of code |
| | | Section 21.5. Help files without tears |
| | | Exercise |
|
| | | Chapter 22. Topics in C++ |
| | | Section 22.1. Classes, objects and constructors |
| | | Section 22.2. Implicit arguments |
| | | Section 22.3. Defining a new class |
| | | Section 22.4. Destructors |
| | | Section 22.5. The const function declaration |
| | | Section 22.6. Pass by reference |
| | | Section 22.7. Instance members and reference members |
| | | Section 22.8. Parent and child class data |
| | | Section 22.9. Parent and child constructors and destructors |
| | | Section 22.10. Virtual methods |
| | | Section 22.11. Polymorphism |
| | | Section 22.12. Runtime class information |
| | | Section 22.13. The scope resolution operator and global functions |
| | | Section 22.14. Name -mangling |
| | | Section 22.15. Preprocessor directives |
| | | Section 22.16. Resizable arrays |
| | | Section 22.17. Real numbers |
| | | Section 22.18. A randomizer module |
| | | Exercises |
|
| | | Chapter 23. Programming Windows with MFC |
| | | Section 23.1. Some Windows data structures |
| | | Section 23.2. MFC utility classes |
| | | Section 23.3. The MFC application framework |
| | | Section 23.4. Naming conventions |
| | | Section 23.5. MFC classes are shallow wrappers |
| | | Section 23.6. Navigating app, doc, and view |
| | | Section 23.7. Levels of Windows |
| | | Section 23.8. The MFC program flow |
| | | Section 23.9. Adjusting the program appearance |
| | | Section 23.10. The multiple document interface layouts |
| | | Section 23.11. Splitter views |
| | | Section 23.12. Portable classes |
| | | Exercises |
|
| | | Chapter 24. 2D and 3D graphics |
| | | Section 24.1. Vectors and matrices |
| | | Section 24.2. The graphics pipeline |
| | | Section 24.3. Matrices in graphics |
| | | Section 24.4. Graphics in the Pop Framework |
|
| | | Chapter 25. Windows graphics |
| | | Section 25.1. The Windows sandwich |
| | | Section 25.2. A CDC is like a cranky six-legged ant |
| | | Section 25.3. Persistent display |
| | | Section 25.4. Converting real coordinates to pixel positions |
| | | Section 25.5. A memory-based device context |
| | | Exercises |
|
| | | Chapter 26. OpenGL graphics |
| | | Section 26.1. Linking to OpenGL |
| | | Section 26.2. The OpenGL state machine |
| | | Section 26.3. Generic OpenGL code |
| | | Section 26.4. OpenGL code in Windows |
| | | Section 26.5. OpenGL in the Pop Framework |
|
| | | Chapter 27. Menus and toolbars |
| | | Section 27.1. Adding menu selections |
| | | Section 27.2. Toolbar buttons |
| | | Section 27.3. Accelerator keys |
| | | Section 27.4. Writing to the status bar |
| | | Exercises |
|
| | | Chapter 28. Mouse, cursors , and keyboard |
| | | Section 28.1. Mouse messages |
| | | Section 28.2. Cursor tools |
| | | Section 28.3. The mouse wheel |
| | | Section 28.4. Focus and autofocus |
| | | Section 28.5. The keyboard |
| | | Exercises |
|
| | | Chapter 29. Serialization |
| | | Section 29.1. Serialization summary |
| | | Section 29.2. Serialization in the Pop Framework |
| | | Section 29.3. Serialize , operator<< , and operator>> |
| | | Section 29.4. Serializing an array of pointers |
| | | Section 29.5. Serializing pointers |
| | | Section 29.6. The cCritter serialize |
| | | Section 29.7. Serializing child classes |
| | | Section 29.8. Serializing a CRuntimeClass |
| | | Section 29.9. Serializing the view and version |
| | | Exercise |
|
| | | Chapter 30. Sound |
| | | Section 30.1. Adding sound to your program |
| | | Section 30.2. Adding libraries to your project file |
| | | Section 30.3. An application-wide mute variable |
| | | Exercises |
|
| | | Chapter 31. Bitmaps |
| | | Section 31.1. Bitmaps |
| | | Section 31.2. Using a background bitmap |
| | | Section 31.3. Transparent bitmaps |
|
|
| | Appendix A. The Windows keycodes |
| | Appendix B. The Pop help file |
| | | About the Pop program |
| | | Updates per second |
| | | Overview |
| | | Keyboard and mouse controls |
| | | Spacewar |
| | | PickNPop |
| | | Airhockey |
| | | Defender3D |
| | | Ballworld |
| | | Dambuilder |
| | | Worms |
| | | 2DStub |
| | | 3DStub |
| | | The cursor tools |
| | | The menu controls |
| | | The toolbar controls |
| | | The status bar |
| | | Using the menu and toolbar controls |
| | | The motion smoothness dialog |
| | | Accelerator keys |
| | | Contact information |
|
| | Appendix C. Summary of the controls for Visual Studio |