基于Java坦克大战小游戏设计(3)

剩下的东西也就那样了,具体关卡的设置什么的也交给配置文件.pro来完成。

主要有一个读取配置文件的方法要注意,这个方法具体还没有去研究,估计也就是普通读文件那样来实现的吧。

public static Properties getProperties(String url) {
		InputStream in = GameStartUtil.class.getResourceAsStream(url);
		Properties ps = new Properties();
		try {
			ps.load(in);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return ps;
	}

把这个方法写成静态方法放在GameStartUtil类中,可以方便的调用。

得到的返回值ps中,实际上是一个类似于集合的东西,同时顺序会被打乱,即与你写在.pro文件里的顺序可能会有所不同。

public void readBombPro(String fileName) {
		Properties ps = GameStartUtil.getProperties(fileName);
		
		Set<Object> set = ps.keySet();
		
		int i = 0;
		int j = 0;
		for(Object o : set) {
			if(o.equals("img")) {
				String[] str = ps.getProperty("img").split(";");
				while(j<10)
				{
					System.out.println(str[j]);
					bombImgs[i++] = new ImageIcon(str[j++]).getImage();
				}
			}
		}
	}
	
	public void UpdateHashMap(Map<String, Image> map, String s) {
		// TODO Auto-generated method stub
		map.clear();
		String[] arr = s.split(";");
		
		for(String str : arr) {
			String tempStr[] = str.split(":");
			map.put(tempStr[0], new ImageIcon(tempStr[1]).getImage());
		}
	}

在.pro文件里,按照规定的格式来写。

比方说像这样在bomb.pro中写:

img:img/0.gif;img/1.gif;img/2.gif;img/3.gif;img/4.gif;img/5.gif;img/6.gif;img/7.gif;img/8.gif;img/9.gif

这表示坦克被打中后的爆炸效果图,它是由10张图片组成。

这里冒号前面就是返回值ps的键key,后面的则是它的值。同时我们自己规定分号“;”来分出不同的图片

假如是敌人的话,我们甚至还可以加上他们出现的时间,来控制整个游戏的进度。

我们用一个set集合来存储返回值ps的所有的键key,再用判断语句来对不同的key做不同的逻辑处理。如上代码所示。

其它的也就那样,都比较简单。

代码:https://github.com/1998y12/TankFightGame

图片素材来源于网上。

接下来,想尝试实现局域网内联机,应该是要用到socket这方面的知识,都忘光了......

猜你喜欢

转载自blog.csdn.net/qq_41508508/article/details/81393394