private static string ChequeAx3(int[,] OuterMult, RingBase <long> aRing) { var _rowCount = OuterMult.GetLength(0); var _colCount = OuterMult.GetLength(1); var _GF2 = new ZnRing(_colCount); //var _z3 = new ZnRing(_rowCount); for (var i = 0; i < _rowCount; ++i) { for (var j = 0; j < _rowCount; ++j) { for (var k = 0; k < _colCount; ++k) { //var _left = OuterMult[_z3.Sum(i, j), k]; var _left = OuterMult[aRing.Sum(i, j), k]; //var _right = _z3.Sum(OuterMult[i, k], OuterMult[j, k]); var _right = aRing.Sum(OuterMult[i, k], OuterMult[j, k]); if (_left != _right) { return(String.Format("({0}+{1})o{2}={3} != ({0}o{2}+{1}o{2})={4}", i, j, k, _left, _right)); } } } } return(null); }
private static string ChequeAx(int[,] OuterMult, RingBase <long> aRing) { var _sb = new StringBuilder(OuterMultToString(OuterMult)); _sb.AppendLine(); var _res = ChequeAx1(OuterMult); if (_res != null) { _sb.AppendFormat("Axiom 1 is not correct: {0}\n", _res); _res = null; return(null); } _res = ChequeAx2(OuterMult, aRing); if (_res != null) { _sb.AppendFormat("Axiom 2 is not correct: {0}\n", _res); _res = null; return(null); } _res = ChequeAx3(OuterMult, aRing); if (_res != null) { _sb.AppendFormat("Axiom 3 is not correct: {0}\n", _res); } return(_sb.ToString()); }
private static string ChequeVectorSpace(RingBase <long> aRing) { var _sb = new StringBuilder(); string _res = null; var _colCount = 2; var _rowCount = 4; var _size = _rowCount * _colCount; var _max = Math.Pow(_rowCount, _size); var _temp = 0; var _outerMult = new int[_rowCount, _colCount]; for (var i = 0; i < _max; ++i) { _temp = i; for (var j = 0; j < _size; ++j) { var _row = j / _colCount; var _col = j % _colCount; var _val = _temp % _rowCount; if (_col == 1 && _row != _val) { _outerMult = null; break; } _outerMult[_row, _col] = _val; _temp /= _rowCount; } if (_outerMult != null) { _res = ChequeAx(_outerMult, aRing); if (_res != null) { _sb.AppendLine(_res); _res = null; } } else { _outerMult = new int[_rowCount, _colCount]; } } return(_sb.ToString()); }
public bool IsTrapVisible() { //オカルト指輪を持っているか RingBase r = EquipRing; if (r.RType == RingType.Occult) { return(true); } else { return(false); } }
public bool IsItemVisible() { //目星指輪を持っているか RingBase r = EquipRing; if (r.RType == RingType.OneEyes) { return(true); } else { return(false); } }
public bool IsEnemyVisible() { //聞き耳指輪を持っているか RingBase r = EquipRing; if (r.RType == RingType.Listen) { return(true); } else { return(false); } }
public static RingBase GetItem(long objNo) { TableRingData data = Array.Find(Table, i => i.ObjNo == objNo); RingBase item = new RingBase(); item.Initialize(); item.ObjNo = data.ObjNo; if (GameStateInformation.IsEnglish == false) { item.DisplayName = data.DisplayName; item.Description = data.Description; } else { item.DisplayName = data.DisplayNameEn; item.Description = data.DescriptionEn; } item.RType = data.RType; item.PreventAbnormal = data.State; item.ThrowDexterity = data.ThrowDexterity; return(item); }
/// <summary> /// ターン終了の初期化 /// </summary> public override void FinishTurn(ManageDungeon dun) { base.FinishTurn(dun); //指輪の壊れ判定 RingBase ring = EquipRing; if (ring.CheckBreak() == true) { ring.ForceRemoveEquip(this); RemoveItem(ring); DisplayInformation.Info.AddMessage( string.Format(CommonConst.Message.BreakItem, ring.DisplayNameInMessage)); SoundInformation.Sound.Play(SoundInformation.SoundType.Break); } ring.TurnFInish(this, dun); //スコア値の更新 if (typeof(RingFreeHand) != ring.GetType()) { ring.TotalRing++; if (ring.TotalRing > ScoreInformation.Info.MostUseRingDamage) { ScoreInformation.Info.MostUseRingDamage = ring.TotalRing; ScoreInformation.Info.MostUseRingName = ring.DisplayNameNormal; } } //満腹度処理 if (SatietyValue <= 0) { //0を下回ったらHpが減少 CurrentHp--; if (CurrentHp <= 0) { DisplayInformation.Info.AddMessage(GetMessageDeath()); ScoreInformation.Info.CauseDeath = string.Format(CommonConst.DeathMessage.Hunger, DisplayNameNormal); ScoreInformation.Info.CauseDeathType = DeathCouseType.Hunger; Death(this, this.AttackInfo); DeathAction(dun); } //未危険告知の状態で下回ったらメッセージを表示 if (IsSatietyDanger == false) { SoundInformation.Sound.Play(SoundInformation.SoundType.Smoke); DisplayInformation.Info.AddMessage(CommonConst.Message.HungryDanger); IsSatietyDanger = true; } } else { //Hpの回復 if (CurrentHp < MaxHp) { CurrentHp += TrunRecoverHp; if (CurrentHp > MaxHp) { CurrentHp = MaxHp; } } //満腹度の減少 SatietyValue -= SatietyReduce; //未警告の状態で警告値を下回ったらメッセージを表示 if (IsSatietyCaution == false && SatietyValue < CommonConst.Status.SatietyCautionTiming) { SoundInformation.Sound.Play(SoundInformation.SoundType.Smoke); DisplayInformation.Info.AddMessage(CommonConst.Message.HungryCaution); IsSatietyCaution = true; } } }