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

📄 healthcrocodile.java

📁 SSD1 Java Certification Practical
💻 JAVA
字号:
import java.util.Vector;

/* 
Christopher Chappel
Java Certification Exam Practical
March 11, 2009
SSD1
*/

public class HealthCrocodile extends Crocodile {
	
	private static final String SPECIES = "HealthCrocodile";
		
	private static final int LIFE_SPAN_OF_DISEASE = 5;
	
	private static final int ENERGY_LOST_TO_DISEASE = 35;
	
	private boolean isHealthy = true;
	
	private boolean isImmune = false;
	
	private int sickTimeBlocks = 0;
	
	private static boolean shouldNextBeDiseased = true;
	
	private static int nHealthCrocodilesCreated = 0;
	
	
	public HealthCrocodile(int initialRow, int initialColumn, Simulation initialSimulation)
	{
		super(initialRow,
				initialColumn,
				initialSimulation);
		isHealthy = true;
		isImmune = false;
		sickTimeBlocks = 0;
		if(shouldNextBeDiseased)
		{
			infect();
			shouldNextBeDiseased = false;
		}
		nHealthCrocodilesCreated++;				
	}
	
	public String getSpecies()
	{
		return SPECIES;
	}
	
	private boolean isHealthy()
	{
		return isHealthy;
	}
	
	public String getImage()
	{
        String s = "/Crocodile-";
        if(!isHealthy())
            s = "/SickCrocodile-";
        if(getDirection().equals(RIGHT))
            return s + "right.gif";
        if(getDirection().equals(LEFT))
            return s + "left.gif";
        if(getDirection().equals(UP))
            return s + "up.gif";
        if(getDirection().equals(DOWN))
            return s + "down.gif";
        else
            return s + "right.gif";
	}
	
	private void infect() 
	{
		isHealthy = isImmune;
	}
	
	private void immunize()
	{
		isImmune = true;
	}
	
	private void cure()
	{
		isHealthy = true;
	}
	
	private void infectIfPossible()
	{
        Vector vector = simulation.getNeighbors(getRow(), getColumn(), 0);
        for(int i = 0; i < vector.size(); i++)
            if(vector.get(i) instanceof HealthCrocodile)
            {
                HealthCrocodile healthcrocodile = (HealthCrocodile)vector.get(i);
                healthcrocodile.infect();
            }

	}

	private boolean recoverIfPossible()
	{
		if(sickTimeBlocks > LIFE_SPAN_OF_DISEASE)
		{
			cure();
			immunize();
			return true;
		}
		else
		{
			return false;
		}
	}
	
	private void progressDisease()
	{
		sickTimeBlocks++;
		infectIfPossible();
		setEnergy(getEnergy() - ENERGY_LOST_TO_DISEASE);
		recoverIfPossible();		
	}
	
	public void liveALittle()
	{
        super.liveALittle();
        if(!isHealthy())
            progressDisease();
	}
	
	
}

⌨️ 快捷键说明

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