|
Matrix |
|
/* * JVirus is a PacMan clone, written in Java. * * Please read "http://jvirus.sourceforge.net/jvirus_licence.txt" for copyrights. * * The sourcecode is designed and created with * Sun J2SDK 1.3 and Microsoft Visual J++ 6.0 * * JVirus homepage: http://jvirus.sourceforge.net * * autor: Slawa Weis * email: slawaweis@animatronik.net * */ package org.game.JVirus; import java.awt.*; import java.io.*; import java.util.*; /** * this class containt the level array. Most variables are public for faster access */ public class Matrix implements IFields { /** * name of level */ public String name = "level ???"; /** * start point in the Display * * @see org.game.JVirus.Display */ public Point displayPoint = new Point(); /** * level tiles array */ public char matrix [][] = null; /** * buffer array for object fall function * * @see org.game.JVirus.ActionControl */ public int bufferMatrix1 [][] = null; /** * level number in the level list */ public int levelNumber = -1; /** * copy constructor */ public Matrix(Matrix copy) { this.name = copy.name; this.displayPoint.setLocation(copy.displayPoint); this.levelNumber = copy.levelNumber; this.matrix = new char[copy.matrix.length][copy.matrix[0].length]; this.bufferMatrix1 = new int [copy.matrix.length][copy.matrix[0].length]; int i, j; for(i = 0; i < copy.matrix.length; i++) for(j = 0; j < copy.matrix[i].length; j++) { this.matrix[i][j] = copy.matrix[i][j]; this.bufferMatrix1[i][j] = copy.bufferMatrix1[i][j]; } } /** * Constructor. load the level from file */ public Matrix(File file) throws FileNotFoundException, IOException { loadMatrix(file); } /** * Constructor. load the level from InputStream */ public Matrix(InputStream is) throws IOException { loadMatrix(is); } /** * load the level from file */ protected void loadMatrix(File file) throws FileNotFoundException, IOException { FileInputStream fis = new FileInputStream(file); loadMatrix(fis); fis.close(); } /** * load the level from InputStream */ protected void loadMatrix(InputStream is) throws IOException { LineNumberReader lnr = new LineNumberReader(new InputStreamReader(is)); String line = null; boolean parse = false; int i, j; int matrix_w = 0, matrix_h = 0; Vector vecLines = new Vector(); i = 0; while((line = lnr.readLine()) != null) { // first line: level name if(i == 0) name = line; // second line: display start coordination x if(i == 1) displayPoint.x = Integer.parseInt(line); // third line: display start coordination y if(i == 2) displayPoint.y = Integer.parseInt(line); // level itself if(line.equals("LEVEL_BEGIN")) { parse = true; continue; } if(line.equals("LEVEL_END")) { parse = false; continue; } if(parse) { vecLines.add(line); } i++; } lnr.close(); matrix_w = ((String)vecLines.elementAt(0)).length(); matrix_h = vecLines.size(); matrix = new char[matrix_h][matrix_w]; bufferMatrix1 = new int[matrix_h][matrix_w]; for(i = 0; i < matrix.length; i++) for(j = 0; j < matrix[i].length; j++) { matrix[i][j] = IFields.EMPTY; bufferMatrix1[i][j] = 0; } for(i = 0; i < matrix_h; i++) { line = (String)vecLines.elementAt(i); j = 0; while(j < line.length()) { matrix[i][j] = line.charAt(j); j++; } } } /** * convert the matrix to string to print it in the console */ public String matrixToString() { StringBuffer ret = new StringBuffer((matrix.length * matrix[0].length) + matrix.length); int i, j; for(i = 0; i < matrix.length; i++) { for(j = 0; j < matrix[i].length; j++) { ret.append(matrix[i][j]); } ret.append('\n'); } return ret.toString(); } /** * return the name of this level */ public String toString() { return name; } /////////////////////////////////////////////////////////////////// // action types /** * array with action types. See the AT_* constants int the IFields interface. Used in ActionControl * * @see org.game.JVirus.IFields * @see org.game.JVirus.ActionControl */ public static final int actionTyp [] = new int[256]; { for(int i = 0; i < actionTyp.length; i++) actionTyp[i] = AT_WALL; actionTyp[WALL1] = AT_WALL | AT_HOLD; actionTyp[AMD] = AT_WALL | AT_HOLD; actionTyp[INTEL] = AT_WALL | AT_HOLD; actionTyp[STONE] = AT_PUSH | AT_FAll; actionTyp[START] = AT_MOVE; actionTyp[END] = AT_MOVE | AT_END; actionTyp[EMPTY] = AT_MOVE; actionTyp[LIFE] = AT_MOVE | AT_EAT | AT_EAT_SOUND2 | AT_FAll; actionTyp[NOTHING] = AT_MOVE | AT_EAT | AT_HOLD; actionTyp[DATA1] = AT_MOVE | AT_EAT | AT_EAT_SOUND1 | AT_FAll; actionTyp[DATA2] = AT_MOVE | AT_EAT | AT_EAT_SOUND1 | AT_FAll; actionTyp[DATA3] = AT_MOVE | AT_EAT | AT_EAT_SOUND1 | AT_FAll; actionTyp[REDKEY] = AT_MOVE | AT_EAT | AT_ACTION | AT_FAll; actionTyp[GREENKEY] = AT_MOVE | AT_EAT | AT_ACTION | AT_FAll; actionTyp[BLUEKEY] = AT_MOVE | AT_EAT | AT_ACTION | AT_FAll; actionTyp[BEOS] = AT_MOVE | AT_EAT | AT_EAT_SOUND2 | AT_FAll; actionTyp[LINUX] = AT_MOVE | AT_EAT | AT_EAT_SOUND2 | AT_FAll; actionTyp[MAC] = AT_MOVE | AT_EAT | AT_EAT_SOUND2 | AT_FAll; actionTyp[UNIX] = AT_MOVE | AT_EAT | AT_EAT_SOUND2 | AT_FAll; actionTyp[WINDOWS] = AT_MOVE | AT_EAT | AT_EAT_SOUND2 | AT_FAll; actionTyp[BEAM0] = AT_MOVE | AT_ACTION | AT_ANIM | AT_BEAM; actionTyp[BEAM1] = AT_MOVE | AT_ACTION | AT_ANIM | AT_BEAM; actionTyp[BEAM2] = AT_MOVE | AT_ACTION | AT_ANIM | AT_BEAM; actionTyp[BEAM3] = AT_MOVE | AT_ACTION | AT_ANIM | AT_BEAM; actionTyp[BEAM4] = AT_MOVE | AT_ACTION | AT_ANIM | AT_BEAM; actionTyp[BEAM5] = AT_MOVE | AT_ACTION | AT_ANIM | AT_BEAM; actionTyp[BEAM6] = AT_MOVE | AT_ACTION | AT_ANIM | AT_BEAM; actionTyp[BEAM7] = AT_MOVE | AT_ACTION | AT_ANIM | AT_BEAM; actionTyp[BEAM8] = AT_MOVE | AT_ACTION | AT_ANIM | AT_BEAM; actionTyp[BEAM9] = AT_MOVE | AT_ACTION | AT_ANIM | AT_BEAM; } /** * score for every field. Used in ActionControl * * @see org.game.JVirus.ActionControl */ public static final int scoreTab [] = new int[256]; { for(int i = 0; i < scoreTab.length; i++) scoreTab[i] = 0; scoreTab[LIFE] = 1000; scoreTab[NOTHING] = 1; scoreTab[DATA1] = 10; scoreTab[DATA2] = 100; scoreTab[DATA3] = 1000; scoreTab[REDKEY] = 100; scoreTab[GREENKEY] = 100; scoreTab[BLUEKEY] = 100; scoreTab[BEOS] = 1000; scoreTab[LINUX] = 1000; scoreTab[MAC] = 1000; scoreTab[UNIX] = 1000; scoreTab[WINDOWS] = 1000; } // action types /////////////////////////////////////////////////////////////////// }
|
Matrix |
|