Hello for a school exercise i need to create a game and i decided to create Pacman. Everything goes well but one thing i can’t accomplish is to draw a pacman dude and his ghosts.. i made and oval but what now? i want the pacman mouth also to open and close as it moves. can someone help drawing this?
below what i have till now:
package h04PacMan;
import java.awt.*;
public class DrawPacMan {
public void drawPacMan(Graphics g, int x, int y, Color color) {
g.setColor(color); // set color
g.fillOval(x, y, 50, 50); // paint
g.setColor(Color.black);
g.drawOval(x, y, 50, 50); // outline
// mouth?
}
public void drawGhost(Graphics g, int x, int y, Color color) {
g.setColor(color); // color
// here goes shape
}
}
So there are a couple of things going on here that you will need to address.
1. Drawing Characters
I’ll only address drawing Pacman here.
Thinking about the Pacman game, Pacman’s character has two states — mouth closed, and mouth opened (in each cardinal direction!). This will be important for when we animate Pacman in a moment, so first, lets establish our pacman shape by using the
fillArcmethod from the Graphics library.Example of Mouth-Open Pacman:
This will create pacman in the top-left corner of your window, with pacman’s mouth facing to the right of the screen. The last two paramters of the fillArc method control this opening — the 5th parameter is the starting angle, and the sixth parameter is the angle of the full arc. You may infer from this that the start angle 0 is the horizontal line going from the center of the arc to the right of the screen. Also remember from mathematics that a full circle is 360 degrees.
Using this information, try drawing mouth-opened Pacman facing up, down and left. After you do that, fill the entire arc to draw Pacman with his mouth closed. Also consider other methods in the Graphics library you can use to draw your ghosts!
2. Animating Pacman
For this task you will probably want to implement some sort of Thread structure to animate Pacman, which gets quite a bit more complicated than what you’ve demonstrated here. Since we don’t know your program specifications, and you also haven’t demonstrated any code relating to the animation yet, I’m hesitant to lay this out any further. However, I will direct you to some links on the matter: