簡體   English   中英

用Java繪制pacman

[英]drawing pacman in Java

您好,我需要做一個學校練習,所以我決定創建一個吃豆人。 一切進展順利,但我無法完成的一件事就是畫一個吃豆人和他的鬼魂。 我希望吃豆人的嘴也隨着運動而張開和閉合。 有人可以幫忙畫這個嗎?

以下是我到目前為止所擁有的:

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

}

}

代替使用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的嘴在迷宮中移動自己大小的距離時,將自動執行一個開合循環。 (您可能需要稍微調整數字以適合您的設置。)

當然,您仍然需要一個線程來整體上運行游戲,但是吃豆子嘴巴的動畫也可以通過這種方式完成,而無需額外的線程。

因此,您需要解決一些事情。

1.繪畫人物

我只在這里畫吃豆人。

考慮到吃豆子游戲,吃豆子的角色有兩種狀態-嘴巴閉合和嘴巴張開(在每個基本方向上!)。 這一點對我們稍后制作Pacman動畫非常重要,因此,首先,使用Graphics庫中fillArc方法建立pacman形狀。

開口吃豆人的例子:

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

這將在窗口的左上角創建pacman,並且pacman的嘴朝向屏幕的右側。 fillArc方法的最后兩個參數控制此打開-第5個參數是起始角度,第六個參數是全圓弧的角度。 您可以由此推斷出起始角度0是從弧的中心到屏幕右側的水平線。 還請記住,從數學上來說,整個圓是360度。

使用此信息,嘗試朝上,朝下和朝左繪制張開嘴的吃豆子。 完成此操作后,填滿整個弧線,以張開嘴巴畫Pacman。 還要考慮可用於繪制鬼影的圖形庫中的其他方法!

2.動畫吃豆人

對於此任務,您可能需要實現某種Thread結構以使Pacman動畫化,這比您在此處演示的要復雜得多。 由於我們不了解您的程序規范,並且您也尚未演示任何與動畫有關的代碼,因此,我不願意再作進一步介紹。 但是,我將引導您轉到此問題的一些鏈接:

我建議利用Area / Path2D API。

看看Graphics 2D

您可以查看此答案中的示例代碼作為示例

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM