[英]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
}
}
代替使用drawOval
和fillOval
,您應該看看drawArc
和fillArc
。
關於嘴巴的動畫:鑒於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動畫化,這比您在此處演示的要復雜得多。 由於我們不了解您的程序規范,並且您也尚未演示任何與動畫有關的代碼,因此,我不願意再作進一步介紹。 但是,我將引導您轉到此問題的一些鏈接:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.