/** * 両面待ちだったかを判定するため * 一つ一つの順子と最後の牌について判定する * * @param shuntsu 判定したい順子 * @param last 最後の牌 * @return 両面待ちだったか */ private bool isRyanmen(Shuntsu shuntsu, Tile last) { //ラスト牌と判定したい順子のtypeが違う場合はfalse if (shuntsu.getTile().getType() != last.getType()) { return(false); } int shuntsuNum = shuntsu.getTile().getNumber(); int lastNum = last.getNumber(); if (shuntsuNum == 2 && lastNum == 1) { return(true); } if (shuntsuNum == 8 && lastNum == 9) { return(true); } int i = shuntsuNum - lastNum; if (i == 1 || i == -1) { return(true); } return(false); }
public override bool isMatch() { if (shuntsuCount < 3) { return(false); } Shuntsu candidate = null; foreach (Shuntsu shuntsu in shuntsuList) { TileType shuntsuType = shuntsu.getTile().getType(); int shuntsuNum = shuntsu.getTile().getNumber(); if (candidate == null) { candidate = shuntsu; continue; } if (candidate.getTile().getNumber() == shuntsuNum) { detectType(shuntsuType); detectType(candidate.getTile().getType()); } else { candidate = shuntsu; } } return(manzu && pinzu && sohzu); }
protected int peiko(List <Shuntsu> shuntsuList) { if (shuntsuList.Count() < 2) { return(0); } Shuntsu stockOne = null; Shuntsu stockTwo = null; int peiko = 0; foreach (Shuntsu shuntsu in shuntsuList) { //鳴いている場合はfalse if (shuntsu.isOpen()) { return(0); } if (stockOne == null) { stockOne = shuntsu; continue; } //1つ目の盃口が見つかった if (stockOne.equals(shuntsu) && peiko == 0) { peiko = 1; continue; } if (stockTwo == null) { stockTwo = shuntsu; continue; } if (stockTwo.equals(shuntsu)) { return(2); } } return(peiko); }