TankWar游戏(图片版)----阶段三

游戏素材链接:https://pan.baidu.com/s/1i4Z2Cip

阶段三中根据炮管方向实现8个方向图片的切换。

1、在Tank类中添加新的变量:

private static Image[] imgs=new Image[16];//存放图片的数组,一种坦克8张图片,我方和敌方共16张
private Direction ptDir = Direction.U;//初始状态炮管方向向上
private boolean good;//坦克是我方还是敌方的,我方设置为true
private static Map imgsMap = new HashMap();//根据Tank移动方向切换图片

2、使用静态代码块初始化这两个变量

static{
	imgs[0]=GameImage.getImage("images/mytankU.gif");
	imgs[1]= GameImage.getImage("images/mytankD.gif");
	imgs[2]= GameImage.getImage("images/mytankL.gif");
	imgs[3]= GameImage.getImage("images/mytankR.gif");
	imgs[4]= GameImage.getImage("images/mytankLD.gif");
	imgs[5]= GameImage.getImage("images/mytankLU.gif");
	imgs[6]= GameImage.getImage("images/mytankRD.gif");
	imgs[7]= GameImage.getImage("images/mytankRU.gif");
		
	imgs[8]= GameImage.getImage("images/tankU.gif");
	imgs[9]= GameImage.getImage("images/tankD.gif");
	imgs[10]= GameImage.getImage("images/tankL.gif");
	imgs[11]= GameImage.getImage("images/tankR.gif");
	imgs[12]= GameImage.getImage("images/tankLD.gif");
	imgs[13]= GameImage.getImage("images/tankLU.gif");
	imgs[14]= GameImage.getImage("images/tankRD.gif");
	imgs[15]= GameImage.getImage("images/tankRU.gif");
	//我方坦克图片:	
	imgsMap.put("U", imgs[0]);
	imgsMap.put("D", imgs[1]);
	imgsMap.put("L", imgs[2]);
	imgsMap.put("R", imgs[3]);
	imgsMap.put("LD", imgs[4]);
	imgsMap.put("LU", imgs[5]);
	imgsMap.put("RD", imgs[6]);
	imgsMap.put("RU", imgs[7]);
	//敌方坦克图片:	
	imgsMap.put("EU", imgs[8]);
	imgsMap.put("ED", imgs[9]);
	imgsMap.put("EL", imgs[10]);
	imgsMap.put("ER", imgs[11]);
	imgsMap.put("ELD", imgs[12]);
	imgsMap.put("ELU", imgs[13]);
	imgsMap.put("ERD", imgs[14]);
	imgsMap.put("ERU", imgs[15]);
		
};

3、在move()方法中添加代码:

//使炮管方向与坦克移动方向一致
if(this.dir != Direction.STOP) {
	this.ptDir = this.dir;
}

4、修改draw()方法,根据炮管方向绘制不同方向的图片:

public void draw(Graphics g){
	if(!good){
		
		switch(ptDir) {
		case L:
			g.drawImage(imgsMap.get("EL"), (int)xPos,(int)yPos, null);//根据炮管方向取出不同方向的图片
			break;
		case LU:
			g.drawImage(imgsMap.get("ELU"), (int)xPos,(int)yPos, null);
			break;
		case U:
			g.drawImage(imgsMap.get("EU"), (int)xPos,(int)yPos, null);
			break;
		case RU:
			g.drawImage(imgsMap.get("ERU"), (int)xPos,(int)yPos, null);
			break;
		case R:
			g.drawImage(imgsMap.get("ER"), (int)xPos,(int)yPos, null);
			break;
		case RD:
			g.drawImage(imgsMap.get("ERD"), (int)xPos,(int)yPos, null);
			break;
		case D:
			g.drawImage(imgsMap.get("ED"), (int)xPos,(int)yPos, null);
			break;
		case LD:
			g.drawImage(imgsMap.get("ELD"), (int)xPos,(int)yPos, null);
			break;
		}
	}else{
		switch(ptDir) {
		case L:
			g.drawImage(imgsMap.get("L"), (int)xPos,(int)yPos, null);
			break;
		case LU:
			g.drawImage(imgsMap.get("LU"), (int)xPos,(int)yPos, null);
			break;
		case U:
			g.drawImage(imgsMap.get("U"), (int)xPos,(int)yPos, null);
			break;
		case RU:
			g.drawImage(imgsMap.get("RU"), (int)xPos,(int)yPos, null);
			break;
		case R:
			g.drawImage(imgsMap.get("R"), (int)xPos,(int)yPos, null);
			break;
		case RD:
			g.drawImage(imgsMap.get("RD"), (int)xPos,(int)yPos, null);
			break;
		case D:
			g.drawImage(imgsMap.get("D"), (int)xPos,(int)yPos, null);
			break;
		case LD:
			g.drawImage(imgsMap.get("LD"), (int)xPos,(int)yPos, null);
			break;
		}
	}
	move();
}
最终效果:




你可能感兴趣的:(TankWar游戏(图片版)----阶段三)