⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gamemaprenderer.java

📁 goldminer游戏
💻 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 + -