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

📄 tile.java

📁 地图显示实例
💻 JAVA
字号:
import java.awt.Point;
import java.awt.Image;
import java.util.StringTokenizer;


public class Tile {
  static Image redMap, compMap;

  String imageFileName, iconFileName,tileName;
  StringBuffer information;
  Image redImage;
  Point upperLeftCorner;
  final static int maxNum = 8;
  int compositeNum = 0, counter1 = 0, counter2 = 0;
  /* only maxNum composites can be handled */
  Image[] compositeImages = new Image[ maxNum ];
  Point[] compOffsets = new Point[ maxNum ];
  Point[] compCorners = new Point[ maxNum ];


  public Tile(String s1, String s2, String s3, Image img) {
    imageFileName = s1;
    iconFileName = s2;
    tileName = s3;
    information = new StringBuffer();
    redImage = img;
  }
  
  public void addComposite(Image img) {
    if (compositeNum < maxNum) {
      compositeImages[ compositeNum ] = img;
      compositeNum++;
    }
  }

  public Point[] getRedPoints() {
    int count = 0, index = 0;
    String lines = information.toString();
    StringTokenizer st;
    /* count how many "at"s there are in the lines */
    while (lines.indexOf("at", index) >= 0) {
      index = lines.indexOf("at", index) + 2;   /* advance index */
      count++;
    }
    Point[] points = new Point[ count ];
    index = 0;
    for (int i = 0; i < count; i++) {
      st = new StringTokenizer(lines.substring(lines.indexOf(" at ", index)));
      index = lines.indexOf("at", index) + 5;
      st.nextToken(); /* discard the "at" */
      try {
	int x = Integer.parseInt(st.nextToken(" ,;"));
	int y = Integer.parseInt(st.nextToken(" ,;"));
	points[ i ] = new Point(x, y);
      }
      catch (NumberFormatException e) {System.out.println(e);};
    }
    return points;
  }

  public void addInfo(String infoLine) {
    information.append(infoLine + "\n");
    if (infoLine.indexOf("symbol offset") > 0) {
      /* get the composite symbol offsets */
      StringTokenizer st = new StringTokenizer(infoLine);
      st.nextToken(); st.nextToken(); st.nextToken();
      try {
	int x = Integer.parseInt(st.nextToken("{} ,;"));
	int y = Integer.parseInt(st.nextToken("{} ,;"));
	System.out.println(x + " , " + y);
	if (counter1 < maxNum)  {
	  compOffsets[ counter1 ] = new Point(x, y);
	  counter1++;
	} 
      }
      catch (NumberFormatException e) {System.out.println(e);};
    } 
    
    if (infoLine.indexOf("upper left") > 0) {
      /* get the composite upper left corner */
      StringTokenizer st = new StringTokenizer(infoLine);
      st.nextToken(); st.nextToken(); st.nextToken();
      /* discard 1 extra token if it is red upper left */
      if (infoLine.indexOf("{red") == 0) st.nextToken();
      try {
	int x = Integer.parseInt(st.nextToken("{} ,;"));
	int y = Integer.parseInt(st.nextToken("{} ,;"));
	System.out.println(x + " , " + y);
	if (infoLine.indexOf("{composite") == 0) 
	  if (counter2 < maxNum)  {
	    compCorners[ counter1 ] = new Point(x, y);
	    counter2++;
	  } 
	if (infoLine.indexOf("{red") == 0) upperLeftCorner = new Point(x, y);
      }
      catch (NumberFormatException e) {System.out.println(e);};
    } 
    

  }
}

⌨️ 快捷键说明

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