示例#1
0
        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);
        }
示例#2
0
        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());
        }
示例#3
0
        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);
        }
    }
示例#7
0
    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;
            }
        }
    }