📄 resourcemanager.java
字号:
package org.orchesta.mathena.aquamatic;import java.awt.Canvas;import java.awt.Color;import java.awt.Graphics2D;import java.awt.image.BufferedImage;import java.io.BufferedReader;import java.io.File;import java.io.FileReader;import java.io.IOException;import java.util.Locale;import javax.imageio.ImageIO;public class ResourceManager { public String getLocalizedMsg(Locale l) { if (l.equals(Locale.CHINESE)) return ("已移动步骤:"); else return ("Moved: "); } int atomIndex = 100, rowNumber =0 , moleNumber, moleLength; public GameMap getGameMap(String level) { GameMap gm = GameMap.getInstance(); gm.setFail(); try { File f = new File("resources/abilder.png"); BufferedImage bi = ImageIO.read(f); File f2 = new File("levels/level_"+level); BufferedReader br = new BufferedReader(new FileReader(f2)); String line; int rowNumber =0 , moleNumber=0; String[] mole = new String[15]; gm.putAtom(GameMap.BLANK, bi.getSubimage(186,93,30,30)); gm.putAtom(GameMap.WALL, bi.getSubimage(9*31, 31,30, 30)); gm.putAtom(GameMap.UP, bi.getSubimage(8*31, 62, 30, 30)); //UP gm.putAtom(GameMap.DOWN, bi.getSubimage(8*31, 93, 30,30)); //DOWN gm.putAtom(GameMap.LEFT, bi.getSubimage(7*31, 93, 30,30)); //LEFT gm.putAtom(GameMap.RIGHT, bi.getSubimage(9*31, 93, 30, 30)); //RIGHT while ((line = br.readLine())!=null) { //System.out.println(tag); char inital = line.charAt(0); switch (inital) { case '[': break; //[Level] case '#': break; //注释 case 'N': {gm.setName(line.substring(5)); continue; } //Name case 'a': {//原子 // Create an empty image; BufferedImage empty = new BufferedImage(30,30,BufferedImage.TYPE_4BYTE_ABGR); Graphics2D g = empty.createGraphics(); Canvas c = new Canvas(); // Find the right atom; BufferedImage atom; int id = (int)line.charAt(5); if (line.charAt(7)<='D'&&line.charAt(7)>='A') { int ai = (int)(line.charAt(7)-'A'); atom = bi.getSubimage(62+31*ai, 93, 30,30); } else if (line.charAt(7)=='o') { //System.out.println("THIS IS AI:"+ai); atom = bi.getSubimage(31,31*3, 30, 30); } else { int ai = (int)(line.charAt(7)-'1'); //System.out.println("THIS IS AI IN number:"+ai); atom = bi.getSubimage(ai*31,0,30,30); } g.drawImage(atom, 0, 0, new Color(255,255,255, 0) , c); int i = line.length()-9; while (i>0) { char k = line.charAt(8+i); if (k>='a') { int ki = (int) (k-'a'); BufferedImage affix = bi.getSubimage(31*ki, 31, 30, 30); g.drawImage(affix, 0, 0, new Color(255,255,255, 0), c); i--; } else { int ki = (int) (k-'A'); BufferedImage affix = bi.getSubimage(31*ki, 62, 30, 30); g.drawImage(affix, 0, 0, new Color(255,255,255, 0), c); i--; } } //System.out.println(id + "::::ID"); gm.putAtom(id, empty.getSubimage(0,0,30,30)); // PUT empty to a hashtable; continue; } case 'f': {//布局 for (int i =0; i<15; i++) gm.setCell(rowNumber,i, line.charAt(i+8)); rowNumber++; continue; } case 'm': {//答案 mole[moleNumber] = line.substring(7); moleNumber++; } } } moleLength = mole[0].length(); int[][] map = new int[moleNumber][moleLength]; for (int k =0; k< moleNumber; k++) { for (int y = 0; y<mole[k].length(); y++) { map[k][y] = (int)mole[k].charAt(y); //System.out.print((char)map[k][y]); } //System.out.println(""); } gm.setMolecular(map); // The goal; }catch(IOException e) {e.printStackTrace();} return gm; }}/*[Level]# 这个布局的名称Name=Methane#原子类型的构成,atom_1=1-c表示下图中1号原子为abilder.png第一行的第一列的原子,#c表示其化学键,按顺序就是第二行的第三个小图atom_1=1-catom_2=1-eatom_3=2-acegatom_4=1-aatom_5=1-g#布局,.空白,#墙,数字球feld_00=...............feld_01=...............feld_02=.#############.feld_03=.#...#..#....#.feld_04=.#.#..#5#....#.feld_05=.#..#...#3.#.#.feld_06=.#......####.#.feld_07=.#.......#1#.#.feld_08=.#.2..#..#...#.feld_09=.#.#####....##.feld_10=.#.4.#..#...#..feld_11=.#####..#...#..feld_12=........#####..feld_13=...............feld_14=...............#答案mole_0=.2.mole_1=135mole_2=.4. */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -