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

📄 gamechar.java

📁 游戏基础
💻 JAVA
字号:
package net.java.gamebase.core;

import java.awt.AlphaComposite;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Point;
import java.awt.Toolkit;

import javax.swing.JComponent;
import javax.swing.JOptionPane;

/**
 *
 *
 * 26-mar-2007 HAL add setX setY methods
 */
public abstract class GameChar
    extends JComponent {

  private Image image;

  private boolean drawBorder = false;

  private float alpha = 1;

  /**
   * recebe nome da imagem a ser desenhada, largura e altura
   *
   * @param name
   * @param width
   * @param height
   */
  public GameChar(String name, int x, int y, int width, int height) {
    this.image = Toolkit.getDefaultToolkit().getImage(name);
    setBounds(x, y, width, height);
  }

  /**
   * enquanto imagem nao estiver sido ainda processada desenha retangulo no
   * lugar da mesma
   *
   * @see java.awt.Canvas#paint(java.awt.Graphics) v3 HAL - use the drawBorder
   *      in case of dont have image
   */
  public void paintComponent(Graphics g) {

    int type = AlphaComposite.SRC_OVER;
    AlphaComposite rule = AlphaComposite.getInstance(type, alpha);
    ( (Graphics2D) g).setComposite(rule);

    if (image.getWidth(this) < 0) {
      if (drawBorder) {
        g.drawRect(0, 0, getWidth() - 1, getHeight() - 1);
      }
    }
    else {
      g.drawImage(image, 0, 0, getWidth(), getHeight(), this);
      if (drawBorder) {
        g.drawRect(0, 0, getWidth() - 1, getHeight() - 1);
      }

    }
  }

  public void setAlpha(int alpha) {
    this.alpha = alpha / 100.0F;
  }

  public void tick() {
  }

  public Point getCenter() {
    return getCenter(getLocation().x, getLocation().y);
  }

  public Point getCenter(int x, int y) {
    Point result = new Point(x + (getWidth() / 2), y + (getHeight() / 2));
    return result;
  }

  /**
   *
   * @param gameChar
   * @return if should repaint or not, default is false
   */
  public boolean colideTo(GameChar gameChar) {
    return false;
  }

  public void message(String string) {
    JOptionPane.showMessageDialog(this, string);
  }

  public void setX(int x) {
    setBounds(x, getY(), getWidth(), getHeight());
  }

  public void setY(int y) {
    setBounds(getX(), y, getWidth(), getHeight());
  }

  /**
   * change the Image using the name
   *
   * @param name
   */
  public void setImage(String name) {
    this.image = Toolkit.getDefaultToolkit().getImage(name);
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -