 		}
 	}
 
-	func 減駒(駒: 駒種型) {
+	mutating func 駒を減らす(駒: 駒種型) {
 		switch (駒) {
 		case .歩: self.歩 -= 1; assert(self.歩 >= 0)
 		case .香: self.香 -= 1; assert(self.香 >= 0)


// MARK: - 持駒型

public class 持駒型: Equatable, CustomStringConvertible {
	// can be dictionary but this saves some memoery foot print
	var 歩, 香, 桂, 銀, 金, 角, 飛, 玉: Int8
	

			if 駒種.指定段に打つ事は可能か(先後: 先後, 段: 指定位置.段) {
				switch 駒種.駒面 {
				case .歩:
					if self[指定位置] == .空 {
						return 指定位置に歩を打つ事は可能か(手番: 先後, 位置: 指定位置) // 二歩・打ち歩詰めの確認
					}
