在Java中绘制pacman

时间:2012-10-08 18:44:41

标签: java graphics

你好学校运动我需要创建一个游戏,我决定创建Pacman。一切顺利,但我无法完成的一件事就是画出一个外星人和他的鬼魂......我制作了椭圆形而现在又是什么?我希望pacman嘴也随着它的移动而打开和关闭。有人可以帮我画这个吗?

低于我现在所拥有的:

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

}

}

3 个答案:

答案 0 :(得分:2)

您应该查看drawOvalfillOval,而不是使用drawArcfillArc

请参阅java.awt.Graphics

关于嘴巴的动画:鉴于pacman不断移动,你可以将pacman的位置与正弦函数结合起来,以获得一个漂亮而平滑的嘴巴运动,如下所示:

angle = 20 * (Math.sin((x + y)*2*Math.PI/50) + 1); # alt. betw. 0 and 40
g.fillArc(x, y, 50, 50, angle/2, 360-angle);

这样一来,Pacman的嘴会自动做一个开 - 关循环,因为他在迷宫中移动了自己的大小。 (您可能需要调整一些数字以适合您的设置。)

当然,你仍然需要一个线程来整体运行游戏,但Pacman口的动画也可以这样做,没有额外的线程。

答案 1 :(得分:1)

所以这里有一些事情你需要解决。

<强> 1。绘图字符

我只会在这里描绘Pacman。

考虑到Pacman游戏,Pacman的角色有两种状态 - 嘴巴闭合,嘴巴张开(在每个主要方向!)。这对于我们稍后动画Pacman很重要,所以首先,让我们使用Graphics library中的fillArc方法建立我们的pacman形状。

开口吃豆子的例子:

  g.setColor(Color.yellow);
  g.fillArc(0,0,150,150,30,300);

这将在窗口的左上角创建pacman,pacman的嘴朝向屏幕右侧。 fillArc方法的最后两个参数控制此开口 - 第五个参数是起始角度,第六个参数是整个弧的角度。由此可以推断,起始角度θ是从弧形中心到屏幕右侧的水平线。还记得从数学上看,一个完整的圆是360度。

使用此信息,尝试向上,向下和向左绘制张开嘴的Pacman。在你这样做之后,填满整个弧线以画出Pacman,嘴巴闭合。还可以考虑使用图形库中的其他方法来绘制鬼魂!

<强> 2。动画吃豆人

对于这个任务,你可能想要实现某种Thread结构来动画Pacman,这比你在这里演示的要复杂得多。由于我们不知道您的程序规格,并且您还没有展示任何与动画有关的代码,我对此进行更深入的讨论犹豫不决。但是,我将引导您了解有关此事的一些链接:

答案 2 :(得分:0)

我建议您使用Area / Path2D API。

查看Graphics 2D

您可以查看此answer中的示例代码以获取示例