// Score.java
package net.sf.gogui.go;
/** Result of a game.
Includes information about the score under Chinese and Japanese rules,
the rules and komi used, territory, area (stones and territory) and
number of captured stones. */
public class Score
{
public enum ScoringMethod
{
/** Constant for area scoring method (Chinese). */
AREA,
/** Constant for territory scoring method (Japanese). */
TERRITORY;
}
public int m_areaBlack;
public int m_areaWhite;
public int m_capturedBlack;
public int m_capturedWhite;
public Komi m_komi;
public double m_result;
public double m_resultArea;
public double m_resultTerritory;
public ScoringMethod m_rules;
public int m_territoryBlack;
public int m_territoryWhite;
public String formatResult()
{
return formatResult(m_result);
}
public static String formatResult(double result)
{
long intResult = Math.round(result * 2);
String strResult;
if (intResult % 2 == 0)
strResult = Long.toString(intResult / 2);
else
strResult = Long.toString(intResult / 2) + ".5";
if (intResult > 0)
return "B+" + strResult;
else if (intResult < 0)
return "W+" + (-result);
else
return "0";
}
public void updateRules(ScoringMethod rules)
{
m_rules = rules;
if (rules == ScoringMethod.TERRITORY)
m_result = m_resultTerritory;
else
{
assert rules == ScoringMethod.AREA;
m_result = m_resultArea;
}
}
}