CPE 471: 3D PacMan

 

Figure 1: Starting PacMan Screen

 

By: Rafael Kaliski

6/10/2004

 

3D PacMan is a simple 3D game with two characters, PacMan and the ghost.  The goal of the game is to eat all of the pellets before the ghost gets you.  Only a single map is loaded per game, i.e. this game is single level only.  Currently this program only loads the original PacMan map.  This game does not support transportation of PacMan.

Program Description:

This Game achieves its 3D look by loading a map file and changing the properties of each block based on the contents of the map file, at the given row and column.  Obstructed blocks are raised (z-coordinates) and subsequently a 3D look is achieved.  Each character is a Quadric like a Sphere (PacMan) or a cylinder (Ghost).  Normals are computed per face (square), for the map.  The pellets, power or normal, are created using glutSolidSphere.  Both glutSolidSphere and the Quadrics automatically compute the normals, for lighting.  Alpha blending is used for transparency.  Both the ghost and PacMan have 2D texture mapped faces (visible below). 

The ghost utilized a greedy search algorithm; consequently, it bounces around the screen.  The greedy algorithm is an informed search, i.e. it knows where the target (goal) is.  Bitmap characters are used to display the text (Statistics and data); most of the important statistics are echoed to the console.  When the program ends (normally), the console waits for user input before the program terminates.

Object collisions are detected at the data structure, versus graphical, level.  For example, when the ghost and PacMan are on the same square, a collision is detected.  A map of any size can be loaded.

User Guide:

Controls:

Keyboard Controls:

Movement: PacMan can be moved by using the direction keys, i.e.

® Right

­        Up

¯        Down

¬ Left

 

Mouse Controls:

       Object and Camera Transformations:

(Warning: Text may disappear)

             Mouse Button: Left -- Translate   Middle-Scale   Right-Rotate

             

Key Commands:

      H -- Help

      S –- Pauses/Continues Game (game starts paused)

      U -- Restore Camera back to its un transformed view (text may not appear)

      R -- Remove All Transformations (Camera and Object).

      Q -- Quit

      V -- Toggle between Perspective and Orthographic Viewing.

      G -- Toggle Grid (useful for seeing camera transformations) on/off

      O –- Enters/Exits into Object transformation mode, exits camera transformation                        

           mode, camera restored to default.

      C –- Enters/Exits Camera Transformation mode, exits object transformation mode.

           Previous Camera transformations are restored.

 

Status, Scoring:

Game Status:

All relevant statistics regarding the game are displayed in the window, i.e. the text. 

 

The data displayed is

1)        Score

2)        Lifes Remaining

3)        Game Play Status (Paused, In-Play, Win, Lose).

a.    Winning the game, all pellets must be eaten and PacMan must be alive.

b.    Losing the game, all of PacMan’s lifes are gone.

4)        Object Camera or no transformation mode.

 

Scoring:

1)        Pellets – 100 points

2)        Power Pellets – 1000 points

3)        Vulnerable Ghost – 3000 points, only score-able once per power pellet.

 

Links:

 

            SourceForge OpenGL documentation

            OpenGL @ Lighthouse 3D - GLUT Tutorial

OpenGLUT 0.6.1 development - OpenGLUT 1.0 Text Rendering API Proposal

How to Tex Using Bitmaps for OpenGL Texture Mapping in Microsoft Visual Studio

Neave Games › Pac-Man

Ascii Table - ASCII character codes and html, octal, hex and decimal charts

Namco

Screenshots (Transformed for viewing):

Figure 2:  Starting PacMan screen.

Figure 3:  The chase is on.

Figure 4:  The tables have turned.

Figure 5:  PacMan’s face.

Figure 6:  The Ghost’s face.

 

This game is based off of the original PacMan by Namco.