List of Figures
Chapter 1: Developing Your First Game
Figure 1-1: The Guess the Die Roll game in all its glory
Figure 1-2: The auto-generated code for the default form in a Windows Forms project
Figure 1-3: The Class View, showing all the functionality received for free because Form1 is a subclass of the class Form. I love free stuff, don’t you?
Figure 1-4: The Properties window
Figure 1-5: Changing a property value in the Properties window
Figure 1-6: Changing the name of your form
Figure 1-7: The Visual Studio Toolbox. Now where’s that screwdriver…?
Figure 1-8: The Solution Explorer, showing the View Code button and the View Designer button on the toolbar (the first and second buttons from the left, respectively)
Figure 1-9: The Guess the Die Roll program at design time
Figure 1-10: Viewing available event handlers for a control using the two drop-down boxes in the code editor
Figure 1-11: One of the three sets of 36 frames of die-rolling animations
Figure 1-12: Determining which diagonal the die is rolling in by using simple geometry. Special thanks to my 10th-grade geometry teacher, Mr. Cosimi!.
Figure 1-13: This shows why the range for placement of the die is the width of the panel less the width of the die frame. Ditto for the height.
Chapter 2: Writing Your First Game, Again
Figure 2-1: Creating a Class Library solution in Visual Studio
Figure 2-2: Making the black transparent
Figure 2-3: Deciding on which way to bounce dice that have just collided
Figure 2-4: The six die collision cases
Figure 2-5: Dice drawn with extra lines to denote bounding boxes and direction
Figure 2-6: Creating a multiproject solution by adding a project to an existing solution
Figure 2-7: The Customize Toolbox dialog box, one of the slowest-loading dialog boxes in Visual Studio
Figure 2-8: The Properties window for an instance of the DicePanel class, showing the new properties. Try that in VB 6!
Figure 2-9: The Properties window, showing how you now have complete mastery of creating properties, putting them in categories, and writing help, all by using attributes
Chapter 3: Understanding Object-Oriented Programming from the Start
Figure 3-1: NineTiles
Figure 3-2: A new project with a DicePanel control
Figure 3-3: NineTiles in action
Figure 3-4: The 90 animated frames used to render the nine tiles
Figure 3-5: Linking source files to your project instead of making copies of them
Figure 3-6: A new proposal combining the common functionality of the two Panel classes and the two “subordinate” classes into an inheritence hierarchy
Chapter 4: More OOPing Around
Figure 4-1: The four colored shapes used in this chapter’s games
Figure 4-2: First pass at the Tile class
Figure 4-3: DeducTile Reasoning, guessing the order of tiles by textual clues
Figure 4-4: You could write a program such as the Object Browser using reflection
Figure 4-5: A rousing game of Lose Your Mind in progress
Chapter 5: Understanding Polymorphism
Figure 5-1: The Cellular Automata program
Figure 5-2: Life cell state in turn x (left) and turn x+1 (right)
Figure 5-3: The center cell’s eight neighbors and their indexes
Figure 5-4: The Rainbow Life game
Figure 5-5: The Voting Game
Figure 5-6: Design-time view of the cellular automaton executor
Chapter 6: Using Polymorphism via Interfaces
Figure 6-1: Creating a console application
Figure 6-2. Tic-Tac-Toe
Figure 6-3. A rousing game of Reversi
Figure 6-4. The starting board in a Reversi game
Chapter 7: Creating Multiplayer Games
Figure 7-1. This form starts a new game
Figure 7-2. The server connect form displays when the server is waiting for another machine to contact it
Chapter 8: Using DirectX
Figure 8-1. Spinning dice aplenty
Figure 8-2. SpaceRocks, ahoy!
Figure 8-3. Two sprites partially off the left side of the screen. The gray area must be clipped, and only the white area should be drawn.
Figure 8-4: The first frame of the each of the three ship graphics
Chapter 9: Learning Other Object-Oriented Programming Topics
Figure 9-1: Threaded class example
Appendix B: Using POV-RAY and Moray
Figure B-1: The die in the Moray modeler
Appendix C: Using the BMPStitch Utility
Figure C-1. Turning these individual bitmaps …
Figure C-2. …into a single bitmap
Figure C-3. Interface of the BMPStitch utility