How to Build a Simple Pac-Man Game

Yüklə 81,41 Kb.
Pdf görüntüsü
ölçüsü81,41 Kb.

How to Build a Simple Pac-Man Game 


For today's program, we are going to build a simple Pac-Man game. Pac-Man was one of the very first arcade 

games developed around 1980. For our version of Pac-Man we are going to focus on the following programming 

and problem solving techniques: 

a. Using Scratch to develop computer objects (also known as Object 

Oriented Programming classes) that will interact with each other in the 

game. We will only develop five sprites with scripts for this program (7 

in total for the game) but will be using copies of the sprites to make a 

complete fully interactive video game (inheritance principle). Object 

Oriented Programming is a complex topic and this program will not use 

design patterns which are a hallmark of OOP. Your next project, the 

Marble Roll Game, will start to explore this area however. 


b. Developing simple animation of characters in the game. Animation 

code (blocks) will be kept separate from functionality code (blocks) so 

that sprites can be reused with simple changes to the costumes and 

minor changes to some variables. This is how computer languages and 

scripts that are fully object oriented (such as Action Script 3 for Flash 

or Java) work. 




This lesson is designed for intermediate to advanced users of Scratch who have had some experience in working 

with the software and developing Scratch applications. Basic concepts such as how to create new sprites, where to 

write scripts, etc. will not be reviewed. The software in this series of lessons only covers creating a single level for 

this version of Pac-Man, however, the software has been written so that multiple levels are easy to add with simple 

changes to variables. We will discuss how to do this briefly at the end of the lesson. 






Getting Started 

To get started creating our Pac-

Man program, we are going to 

build a total of seven sprites. Start 

by creating a sprite named Pac-

Man with only a single costume. 

Then create a sprite called Horizontal to be a horizontal bar and Vertical which will be a vertical bar. The sprites 

will be used to build the maze for Pac-Man and should both be the same color. Next we will create a sprite called 

Point Pill that Pac-Man will eat as he goes through the maze. We will then create a sprite called Ghost 1 with a 

single costume. This ghost will be Pac-Man's enemy and will be copied to make further ghosts later in the game. 

Lastly, we will create a sprite called PowerUp in any color that is different from the Point Pill sprite. When Pac-

Man eats a PowerUp, he will have the ability to eat the ghosts for about 10 seconds and score 100 points for every 

ghost he eats. Our last sprite will be called GameOver and will display a game over message on screen once three 

Pac-Man characters have been eaten by the ghosts and the game is finished. 




Next we will create a total of eight 


 for our game. Our first 

variable will be called 

Chase Pac-Man. 

This variable will be used to 

determine if Pac-Man can eat the ghost or if the ghost can eat Pac-Man.  

Our next variable will be called 


. The Direction variable will 

be used to randomly determine which directions the ghosts travel on the 

screen (up, down, left, or right). Each ghost needs to have its  own direc-

tion variable. In our example we will create a total of four ghosts. Thus 

Direction Ghost 2, Direction Ghost 3, and Direction Ghost 4 

are used 

so that all ghosts can travel separate directions from each other. The 

next variable we will create is called 

Ghost Speed

. Ghost speed will be 

used to determine how fast the ghost will travel and can be increased 

with each level of the game to make the game more challenging.  Our 

next variable will be called 


. Lives will be used by Pac-Man to 

determine when the game is over once he has been eaten three times by the ghosts. Our last variable is called 


and will be checked so that it appears on the screen. This is used to keep track of the score in the game. With our 

initial sprites and variables created let's turn to making our first character the Pac-Man. 





PacMan Set-up 

Let's start by setting our initial condition for Pac-Man. The first 

thing we need to decide is how our character will move on the 

screen. To simplify the animation of Pac-Man the first thing I'm 

going to do is select the can rotate button to control his direc-

tion on the screen. This gives us the ability to easily allow Pac-

Man to turn and move in four directions. The disadvantage to this selection is that 

Pac-Man's character will appear upside down when he is going left on the screen 

as selecting this flips the character in the opposite direction. To get around this we 

will use some creative programming of our costumes when Pac-Man is facing this 

direction. This will be explained later in the directions.  


Next we will create a total of seven different costumes. One of the costumes must 

have Pac-Man's mouth closed as this will be the default costume. The next three 

costumes will show his mouth in various states of being open. By flipping through 

these costumes we will add animation to Pac-Man and make him appear to eat. For 

costumes numbers 5 to 7 we will flip him upside down, again, with his mouth be-

ing open in various states. When our default costume is combined with these up-

side down costumes and Pac-Man is facing to the left, he will be rotated around 

(rather than being upside down) and appear to be eating while going in the left 

direction. This will be further explained when we look at the animation blocks. 

Feel free to add more or less costumes to your Pac-Man, however, you will need to 

adjust the number of blocks when we get to the animation scripts. 















PacMan Main Script 


The main Pac-Man script is used to set Pac-Man up 

in his initial location and allow him to move around 

the screen. It also determines what happens when 

Pac-Man hits the wall the maze or the edge of the 

screen. When the 

green arrow 

is clicked the varia-


Lives are set to zero 

(meaning he now has three 

lives) he is 

rotated to 90° 

(his) starting direction, 

moved to his 

initial spot on the screen 

and is 


. The Pac-Man script then enters a 



that will check to see if keys are being pressed 

that would allow him to move. 


First, it checks to see 


the right arrow key is be-

ing pressed.

 If it is, it 

rotates Pac-Man around fac-

ing the right direction (90°)  


moves him 3 steps 

to the right.

 If however, he bumps into a maze (or 

he is 

touching a maze 


) it pushes him away 

from the maze wall in the 

opposite direction 

so we 

cannot move through the maze. The rest of the 



 in this loop do similar things checking 

to see if Pac-Man should move to the left, up, or 

down and moving in that direction unless he hits 

the maze wall in which case he is stopped. At the 

bottom of the loop 

if he is touching the edge 


simply bounces back onto the screen. By control-

ling his movement through the use of a 



, the Pac-Man character is much more respon-

sive to key presses then he would be through the 

use of a control block to move him. 







Pacman Animation Script 

Animation for the Pac-Man game is kept separate from  the control 

loop. This serves two purposes. First, it makes our sprites more reus-

able. Sprites (objects) can be copied and reused and simple changes 

can now be made to costumes and animations with out changing the 

interactivity of the sprite. This allows us to create multiple characters 

quickly and easily. Second, the animation can be made smoother as it 

does not need to wait for its “turn” in the sprites control loop. When 


green flag 

is clicked a 

forever loop 

controlling and the animation 

is entered. The first part of the loop 

switches between our costumes 1 

to 4

 with a brief 


in between creating the illusion that the Pac-

Man's mouth is opening and closing. At the bottom of the loop it 

checks to see 


the direction 

of the Pac-Man is 

greater than -90

 if it 

isn't then it switches to the 

second set of costumes (the upside down 


and loops through these (

repeats) until 

it is greater than -


Let's look at how this works a bit further using a little bit of 

math. Scratch sees the direction of sprites as being between positive 

180° and -180°. The top of a sprite is 0° while the bottom of the 

sprite is 180°. A character rotated to the right is a positive rotation 

will character rotated left is in negative rotation.  Earlier in the pro-

gram we allowed Pac-Man to rotate as he's moved around the screen with the arrow keys. When the up arrow key 

is pressed Pac-Man's rotation is set to 0°. When the right arrow key is pressed his rotation is set to 90° and when 

the down arrow key is pressed its rotation is set to 180°. When the left arrow key is pressed its rotation is set to  

-90°. This results in the character being turned upside down. However in this loop when the character set to 90° the 

upside down costumes are animated then rotated around so they now face in the correct direction and the animation 

(for the most part) looks correct. There can be a slight delay between the control loop and the animation loop caus-

ing the animation to look upside down for a brief second. This is difficult to program around in the Scratch envi-


Pacman Eaten (by the Ghost) Script 

The Pac-Man sprite also contains a script that decides what hap-

pens when the Pac-Man is touched by a ghost when the power up 

is not active. The ghosts send a broadcast to the Pac-Man if they 

touch him when he is not powered up. The Pac-Man receives this 

message called a “

Scare PacMan” 

in this script. The Pac-Man is 



plays a sound 

to show that he has been eaten by the 





are greater or equal to three 

(meaning he has  

been killed three times already) it sends a 

broadcast called game 


which will end the game (will look at this later). If this is not 

the case and more lives are available it will 

wait 2 

seconds change 


Lives by one 

(meaning takes one of his lives away) switches 

him to the 

start costume 

for the program, places him back in the 

starting position, points him in the correct direc-


and then 


him on the screen and continues the game. 


Point Pill Script 

The point pill script is used to have pills the Pac-Man can eat and score 

points on as he goes around the screen. When the 

green flag is clicked 


pill is 


 on the screen. It then enters a 

forever loop 

which checks to 



the pill is 

touching the Pac-Man

. If it is, it 

plays a sound, 


the score by one

 (adding point to the Pac-Man score) 


 the pill and then 

stops all scripts

. The stopping of the scripts speeds up other animations in 

the software. If you're creating multilevel game you may just wish to hide 

the point pill and re-show it at a new level. This will be discussed further at 

the end of this tutorial. 



Power Up Script 

The power up script allows the Pac-Man to eat the ghosts for a limited 

amount of time once he has eaten the power up pill. When the 

green flag is 


the power up pill is 


  on the screen and enters a 

forever loop

It checks to see 

if the pill 

is touching the Pac-Man

. If it is, it 

broadcasts a 

power up message 

(that is received by the ghosts ) 


 the pill that has 

been eaten by the Pac-Man and 

stops the pills script

 speeding up the soft-

ware. Again if you're creating a multilevel game you may just wish to hide 

the PowerUp pill and re-show it at a new level. This will be discussed fur-

ther at the end of this tutorial. 



Game Over  Script 

The game over script is simply a way to indicate to the user that they have 

lost the game. Create a sprite that simply says “Game Over”. When the 

green flag is clicked


hide this sprite

. In the Pac-Man sprite we had it 

broadcast a message called “Game Over” when it lost more than three 

lives. That message is 

received by the Game Over sprite

. When it receives 

a game over it brings the game over sprite 

to the front, shows it

, and then 

stops all scripts 

in the program. This ends the game and the user must re-

click the green flag in order to start the game again. 


Main Ghost  Script 

The main group ghost script controls the movement and interactivity of 

the ghosts in the program.  


When the 

green flag is clicked 

variable called Chase Pac-Man is set to 

(meaning the ghosts are able to eat Pac-Man) and the 

ghost speed varia-

ble is set to 2

. The ghost speed variable determines how quickly the ghosts 

move and can be increased (such as in different levels) to make the game 

more difficult. The ghost is then set to its initial position point in the cor-

rect direction and shown on the screen. A 

random number between one 

and four

 is then selected and 

given to the direction variable

. This random 

number will determine the direction the ghost travels until it hits a wall 

and as such, each ghost will need it own direction variable (which we set 

up earlier) so they can operate in different directions from each other.  


The program then enters a 

forever loop 

and checks to see which direction 

the ghost was set in. 



direction variable 

is 1 

the ghost goes right

, 2 

the ghost goes left, 3 the ghost goes  up, or 4 the ghost goes down. This is 

controlled by a 

bunch of if statements 

that checks to see what the direc-

tion variable is set to 

points the ghost in that direction 

and then changes 


X or Y direction 

by the 

ghost speed variable 

which determines the 

speed of the ghost. If the ghost hits either the 

edge of the stage 


part of 

the wall

 it is told to 

bounce away from the object 

and then 

pick a new 

random number.

 When it goes back up to the loop it will 

have a new direction which it will follow until it again 

hits the maze or the edge. At the bottom of the main loop 

there is an 

if statement that checks to see if it's 


the Pac-Man


and it's 

Chase Pac-Man 

variable is not = 0 

(meaning the Pac-Man is not powered up to eat the 

ghosts). If this is the case the ghost 

broadcasts a “Scare 


 message which is received by the Pac-Man 

character costing the Pac-Man a life in the game. 






Ghost Costumes & Rotation 

We will use the same rotation and costume tricks for the ghosts as we did for 

the Pac-Man to aid in animation and travel direction. Start by creating two ghost 

costumes, one that is upright and one that is upside down. Then selected the can 

rotate button up at the top of the screen. Now we'll create a costume script for 

the ghost. When the 

green flag is 



forever loop 



switch to costume number 


 until the 

direction of the 



is greater than -90°

. When this happens the upside 


costume (2)

 will be selected, rotated around to be the correct direc-

tion, and repeat like this until the direction of the ghost is greater 

than 90°. 


Ghost Power Up Script 

The ghosts power up script allows the Pac-Man to eat the 

ghost when this script is running. When the Pac-Man eats 

a Power Up Pill it sends a message called 

PowerUP that is 

received by the ghost

. The ghost sets the 

Chase Pac-Man 

to zero

 (meaning that the ghost can't eat Pac-Man), sets the 

Ghost Speed to 4 

(meaning the ghost runs a little faster) 


set the timer in the game to zero

. The ghost then en-


a repeat loop that continues until 

the timer 

is greater 

than 10

, meaning 10 seconds have gone by. The ghost 

then has a 

color change 

meaning it flashes while the Pac-

Man is able to eat it and checks to see 

if the Pac-Man is 

touching the ghost

. If it is, it 

hides the ghost 

plays a 

sound to show it's been eaten

adds 100 points the Pac-

Man score


points it in the starting direction 



the ghost back to its starting base in again

At the end of 

10 seconds the repeat loop ends, 

sets the Chase Pac-Man 

back to one

 (mean the ghost can now eat the Pac-Man) 

sets the ghost speed back to normal

stops the flashing of the ghost 

and make sure 

it shows it on the screen 


. If the Pac-Man had eaten the ghost it will reappear at this point, if it had not, it will simply stop flashing 

and return to its regular color. 



Finishing the Games First Level 

To finish the first level on the game start by using the horizontal and vertical line sprites to create a maze. Simply 

make as many copies of these pieces as you need in order to create a maze. Have your Pac-Man run through the 

completed maze before you add ghosts point pills and power ups. Make sure the Pac-Man fits in all the tunnels and 

corners that you create. You can also draw out a maze on the main stage making sure that the colors that your 

ghosts and Pac-Man are looking for are correct so they can bounce off the maze.  


Once you have your maze set up, you can duplicate as many point pills and power ups as you wish to fill up your 

maze. If you plan on building a multilevel game you may wish to place a variable that will allow you to show and 

hide the point pills and power ups for each level. These can then be turned on and off as your Pac-Man progresses 

through levels. 


Lastly, you want to copy your ghost three more times and give it a unique name. For each of these ghosts you'll 

then need to replace the “direction” variable in the main script with a unique one for each ghost. We created these 

at the start and call them direction ghost 2, etc. This will allow all the ghosts to move independently in different 

directions. You should then change the costumes of each ghost giving it a unique appearance. The nice thing about 

building your sprites so they are reusable, is you  are now able to create four unique enemies with very little extra 

work. Now try your game out !! 


Hints on Adding Multiple Levels 

You should be able to add multiple levels to this game with minimal extra work. There are several things you will 

need to do with the current program to make this happen. First, you'll need to determine a way to tell when all the 

pills have been eaten and then reset them on the screen to their original positions. This can be done by creating a 

variable to keep track of this for each level in the game and then resetting it for each new level. Second, the ghost 

speed at each level can be increased making the game more difficult as the levels progress. Third, bonuses like 

fruit and other items could be added to make gameplay more interesting. I look forward to seeing which items you 

can add to make this game more interesting and more challenging through multiple levels !! 

PacMan Game Complete Sprite & Scripts List  

Set-up Sprites & Vaiables 

PacMan Costumes & SetUp 

PacMan Main Script 

PacMan Eaten Script 

PacMan Animation Script 

Pont Pill Script 

PowerUp Script 

Game Over Script 


Ghost PowerUp Script 

Ghost Main Script 

Ghost Costume Script 

Yüklə 81,41 Kb.

Dostları ilə paylaş:

Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur © 2023
rəhbərliyinə müraciət

    Ana səhifə