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

📄 worldmap.java

📁 贪吃蛇网络版 运行平台 LINUX/UNIX Macintosh Windows Server 2003 Windows 2000 Windows XP Windows CE Windows 9*/
💻 JAVA
字号:
package logic;
import java.util.*;
import java.io.*;

public class WorldMap {
	
	private Hashtable ht = new Hashtable(); // 记录地图的Hash表
	private Enumeration worldMap; // 地图中障碍物的枚举
	private int mapWidth = 0; // 地图宽
	private int mapHeight = 0; // 地图高
	private int xFood = 0; // 食物的x初始位置
	private int yFood = 0; // 食物的y初始位置
	private Vector playerStartPosition = new Vector();
	private String mapName;
	
	public WorldMap (String mapName) {
		
		int lineCounter = 0; // 当前有效的地图行数
		int xBar1, yBar1, xBar2, yBar2, tempInt;
		String mapInfo, tempStr, barType;
		File f;
		FileReader fr;
		BufferedReader br;
		
		try {
			// 打开地图
			this.mapName = mapName;
			f = new File(mapName);
			fr = new FileReader(f);
			br = new BufferedReader(fr);
			// 逐行读取数据
			while ((mapInfo=br.readLine())!=null) {
				// 如果是空行,则跳过此行
				if (mapInfo.equals("") || mapInfo.equals("\n")) continue;
				// 如果是注释行,则跳过此行
				if (mapInfo.startsWith("#")) continue;
				lineCounter++;
				// 当前行数为一,则表示地图大小
				// 当前行数为二,则表示食物初始化位置
				// 其他行数表示障碍物
				if (lineCounter == 1) {
					mapWidth = Integer.parseInt(mapInfo.substring(0,mapInfo.indexOf(" ")));
					mapHeight = Integer.parseInt(mapInfo.substring(mapInfo.indexOf(" ")+1));
				} else if (lineCounter == 2) {
					xFood = Integer.parseInt(mapInfo.substring(0,mapInfo.indexOf(" ")));
					yFood = Integer.parseInt(mapInfo.substring(mapInfo.indexOf(" ")+1));
				} else if (lineCounter == 3) {
					while (mapInfo.length()>1) {
						if (mapInfo.indexOf(" ")!=-1) {
							playerStartPosition.add(mapInfo.substring(0,mapInfo.indexOf(" ")));
							mapInfo = mapInfo.substring(mapInfo.indexOf(" ")+1);
						} else {
							playerStartPosition.add(mapInfo);
							mapInfo = "";
						}
					}
				} else {
					xBar1 = Integer.parseInt(mapInfo.substring(0,mapInfo.indexOf(" ")));
					tempStr = mapInfo.substring(mapInfo.indexOf(" ")+1);
					yBar1 = Integer.parseInt(tempStr.substring(0,tempStr.indexOf(" ")));
					tempStr = tempStr.substring(tempStr.indexOf(" ")+1);
					if (tempStr.indexOf(" ")!=-1) {
						xBar2 = Integer.parseInt(tempStr.substring(0,tempStr.indexOf(" ")));
						tempStr = tempStr.substring(tempStr.indexOf(" ")+1);
						yBar2 = Integer.parseInt(tempStr.substring(0,tempStr.indexOf(" ")));
						barType = tempStr.substring(tempStr.indexOf(" ")+1);
						if (xBar2<xBar1) {
							tempInt = xBar2;
							xBar2 = xBar1;
							xBar1 = tempInt;
						}
						if (yBar2<yBar1) {
							tempInt = yBar2;
							yBar2 = yBar1;
							yBar1 = tempInt;
						}
						for (int i=xBar1;i<=xBar2;i+=20)
							for (int j=yBar1;j<=yBar2;j+=20)
								ht.put(String.valueOf(i)+" "+String.valueOf(j),String.valueOf(i)+" "+String.valueOf(j)+" "+barType);
					} else {
						ht.put(String.valueOf(xBar1)+" "+String.valueOf(yBar1),mapInfo);
					}
				}
			}
			// 返回障碍物的枚举
			worldMap = ht.elements();
			
			
			br.close();
			fr.close();
		}catch(FileNotFoundException fe){
			System.out.println("找不到地图文件");
		}catch(IOException ie){
			System.out.println("I/O错误");
		}
	}
	
	// 将坐标加入到Hash表
	public void add(String pos) {
		ht.put(pos,"Snake");
	}
	
	// 将坐标从Hash表中移除
	public void remove(String pos) {
		ht.remove(pos);
	}
	
	// 判断坐标处是否障碍物(障碍或是其他蛇的身体)
	public boolean isBarrier(String k) {
		return ht.containsKey(k);
	}
	
	public Enumeration getWorldMap() {
		return worldMap;
	}
	
	public String getPlayerStartPosition(int idx) {
		return (String)playerStartPosition.elementAt(idx);
	}
	
	public int getMapWidth() {
		return mapWidth;
	}
	
	public int getMapHeight() {
		return mapHeight;
	}
	
	public int getXFood() {
		return xFood;
	}
	
	public int getYFood() {
		return yFood;
	}



	public Hashtable getHt() {
		return ht;
	}

	public String getMapName() {
		return mapName;
	}
}

⌨️ 快捷键说明

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