All Downloads are FREE. Search and download functionalities are using the official Maven repository.

dererXII.scalashogi_2.13.5.0.2.source-code.Piece.scala Maven / Gradle / Ivy

There is a newer version: 12.1.1
Show newest version
package shogi

final case class Piece(color: Color, role: Role) {

  def is(c: Color)   = c == color
  def is(r: Role)    = r == role
  def isNot(r: Role) = r != role

  def directDirs     = if (color.sente) role.senteDirectDirs else role.goteDirectDirs
  def projectionDirs = if (color.sente) role.senteProjectionDirs else role.goteProjectionDirs

  def eyes(from: Pos, to: Pos) =
    if (color.sente) role.senteEyes(from, to) else role.goteEyes(from, to)

  def updateRole(f: Role => Option[Role]): Option[Piece] =
    f(role).map(r => copy(role = r))

  def switch = copy(color = !color)

  override def toString = s"$color-$role".toLowerCase
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy