📄 gamemaprenderer.java
字号:
package com.hbwhzdg.goldminer.gamecore;
import java.util.*;
import java.awt.*;
import java.awt.geom.*;
import java.awt.font.*;
import com.hbwhzdg.goldminer.graphics.Sprite;
import com.hbwhzdg.goldminer.gamecore.sprites.*;
/**
* <p>Title: </p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2006</p>
*
* <p>Company: </p>
*
* @author rocken.zeng@gmail.com
* @version 1.0
*/
public class GameMapRenderer {
Sprite sprite = null;
Claw claw = null;
Diggings digg = null;
Miner miner = null;
public GameMapRenderer() {
super();
}
/**
* 输出游戏所有需显示元素。
* @param map GameMap
* @param g Graphics2D
*/
public void render(GameMap map, Graphics2D g) {
digg = (Diggings) map.getDiggings();
g.drawImage(digg.getImage(), 0, 0, null);
drawBoutAndTime(map, g);
drawHelpInfo(map, g);
//画矿工
miner = (Miner) map.getMiner();
g.drawImage(miner.getImage(), Math.round(miner.getX()),
Math.round(miner.getY()), null);
//画出所有角色,除矿工和爪子外。
Iterator i = map.getSprites();
while (i.hasNext()) {
sprite = (Sprite) i.next();
g.drawImage(sprite.getImage(), Math.round(sprite.getX()),
Math.round(sprite.getY()), null);
}
drawPrize(map, g);
drawClaw(map, g);
}
/**
* 输出爪子。
* @param map GameMap
* @param g Graphics2D
*/
private void drawClaw(GameMap map, Graphics2D g) {
Claw claw = (Claw) map.getClaw();
g.translate(claw.getStartOrgX(), claw.getStartOrgY());
//g.translate(512,90);
AffineTransform t = new AffineTransform();
t.setToRotation(Math.toRadians(claw.getOrgAngle() - 90));
g.transform(t);
g.setStroke(new BasicStroke(2));
g.setColor(Color.darkGray);
g.draw(claw.getRope());
if (claw.getClawState() == 2 && claw.getClawedSprite() != null) {
g.drawImage(claw.getClawedSprite().getImage(),
(int) ( -claw.getClawedSprite().getWidth() / 2),
(int) claw.getLength(), null);
} else {
g.drawImage(claw.getImage(), (int) ( -claw.getWidth() / 2),
(int) claw.getLength(), null);
}
}
/**
* 输出奖品。
* @param map GameMap
* @param g Graphics2D
*/
private void drawPrize(GameMap map, Graphics2D g) {
Claw claw = (Claw) map.getClaw();
if (claw.getClawState() == 2 && claw.getLength() == claw.getOrgLength() &&
claw.getClawedSprite() != null) {
g.drawImage(claw.getPrize().getImage(),
map.getPrizeX(), map.getPrizeY(), null);
}
}
/**
* 输入本关卡名以及所剩时间。
* @param map GameMap
* @param g Graphics2D
*/
private void drawBoutAndTime(GameMap map, Graphics2D g) {
drawString(g,"时间:",26,Color.darkGray,890,39);
drawString(g,String.valueOf(map.getPassTime()),26,Color.darkGray,970,39);
drawString(g,"回合:",26,Color.darkGray,890,88);
drawString(g,String.valueOf(map.getBout()),26,Color.red,970,88);
}
/**
* 输出帮助信息。
* @param map GameMap
* @param g Graphics2D
*/
private void drawHelpInfo(GameMap map, Graphics2D g) {
LinkedList helps = map.getHelps();
if (helps != null) {
int lines = 30;
for (Iterator it = helps.iterator(); it.hasNext(); ) {
drawString(g,(String) it.next(),15,Color.red,15,lines);
lines += 20;
}
}
}
/**
* 输出字符串。
* @param g Graphics2D
* @param str String
* @param fontSize int
* @param color Color
* @param x int
* @param y int
*/
private void drawString(Graphics2D g, String str, int fontSize, Color color,
int x, int y) {
FontRenderContext frc = g.getFontRenderContext();
Font f = new Font("serif", Font.BOLD, fontSize);
TextLayout tl = new TextLayout(str, f, frc);
Shape sha = tl.getOutline(AffineTransform.getTranslateInstance(x, y));
g.setColor(color);
g.fill(sha);
frc = null;
f = null;
tl = null;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -