Пример #1
0
 };                                                                                     //无左括号
 public override string Equal(string strOperator = "+", bool isEqualSign = false)
 {
     if (!isEqualSign)
     {
         if (canAddOperator(strOperator))
         {
             while (RightInput.Length > 0 && (RightInput.IndexOf('.') != -1 &&
                                              sOperatorNum[sOperatorNum.Length - 1] == '0' ||
                                              RightInput[RightInput.Length - 1] == '.'))//删除多余的"."和"0"
             {
                 sOperatorNum = sOperatorNum.Substring(0, sOperatorNum.Length - 1);
                 RightInput   = RightInput.Substring(0, RightInput.Length - 1);
             }
             sOperatorNum += strOperator;
             RightInput    = "";
         }
     }
     else
     {
         if (!isExpressionHolds())
         {
             return(sOperatorNum);
         }
         var pts = new Parenthesis();//之后版本中用factory模式代替
         pts.Expression = sOperatorNum;
         sOperatorNum   = pts.CalculatePostfixExp();
     }
     return(sOperatorNum);
 }
Пример #2
0
        public async Task <Right> Add(RightInput right)
        {
            var entity = mapper.MapRight(right, new RightEntity());

            this.dbContext.Add(entity);
            await SaveChanges();

            return(mapper.MapRight(entity, new Right()));
        }
Пример #3
0
 public override string SetPoint()
 {
     if (RightInput.IndexOf(".") == -1)
     {
         if (RightInput.Length != 0)
         {
             RightInput   += ".";
             sOperatorNum += ".";
         }
     }
     return(sOperatorNum);
 }
Пример #4
0
        public async Task <Right> Update(Guid rightId, RightInput right)
        {
            var entity = await this.Entity(rightId);

            if (entity != null)
            {
                mapper.MapRight(right, entity);
                await SaveChanges();

                return(mapper.MapRight(entity, new Right()));
            }
            throw new KeyNotFoundException($"Cannot find right {rightId.ToString()}");
        }
Пример #5
0
 internal override void CompleteBufferOnPredecessorCompletion()
 {
     LeftInput.CompleteBufferOnPredecessorCompletion();
     RightInput.CompleteBufferOnPredecessorCompletion();
     Task.WaitAll(LeftInput.Completion, RightInput.Completion);
     try
     {
         EmptyQueues();
         Buffer.Complete();
     }
     catch (Exception e)
     {
         ((IDataflowBlock)Buffer).Fault(e);
     }
 }
Пример #6
0
        /// <summary>
        /// 运算符是否能够继续添加
        /// </summary>
        /// <param name="strOperator"></param>
        /// <returns></returns>
        private bool canAddOperator(string strOperator)
        {
            int len = 0;

            if (null != sOperatorNum)
            {
                len = sOperatorNum.Length;
            }
            if (len == 0)//第一个运算符只能添加左括号
            {
                if (strOperator == "(" || strOperator == "√")
                {
                    return(true);
                }
                return(false);
            }
            var c = sOperatorNum[len - 1];

            if (c == '.')
            {
                sOperatorNum = sOperatorNum.Substring(0, sOperatorNum.Length - 1);
                RightInput   = RightInput.Substring(0, RightInput.Length - 1);
            }
            if (strOperator == ")" && !norightphs.Contains(c.ToString())) //右括号只能添加在数字或右括号右边且个数不能大于左括号
            {
                var leftParenthesis  = StrstrCount(sOperatorNum, "(");
                var rightParenthesis = StrstrCount(sOperatorNum, ")");
                if (leftParenthesis <= rightParenthesis)//左括号个数小于右括号个数不再添加右括号
                {
                    return(false);
                }
                return(true);
            }
            else if (strOperator == "(" && norightphs.Contains(c.ToString()))//左括号可以添加在非数字和非右括号的右边
            {
                return(true);
            }
            else if ((!norightphs.Contains(c.ToString())) && nphs.Contains(strOperator)) //加减乘除符号可以添加在数字及右括号右边
            {
                return(true);
            }
            else
            {
                return(true);
            }
            //return false;
        }
Пример #7
0
    void Start()
    {
        stopped = true;

        MenuController.LoseEvent.AddListener(() =>
        {
            ResetplayerObject();
        });
        StartGameEvent.AddListener(() => stopped = false);

        var input = this.gameObject.AddComponent <InputScript>();

        input.InputScriptInit(UpInput, DownInput, RightInput, LeftInput);

        UpInput.AsObservable().Where(_ => moveDir != MovementDir.down).Subscribe(_ =>
        {
            transform.LookAt(transform.position + Vector3.forward);
            moveDir = MovementDir.up;
        });
        DownInput.AsObservable().Where(_ => moveDir != MovementDir.up).Subscribe(_ =>
        {
            transform.LookAt(transform.position + -Vector3.forward);
            moveDir = MovementDir.down;
        });
        RightInput.AsObservable().Where(_ => moveDir != MovementDir.left).Subscribe(_ =>
        {
            transform.LookAt(transform.position + Vector3.right);
            moveDir = MovementDir.right;
        });
        LeftInput.AsObservable().Where(_ => moveDir != MovementDir.right).Subscribe(_ =>
        {
            transform.LookAt(transform.position + -Vector3.right);
            moveDir = MovementDir.left;
        });

        transform.UpdateAsObservable().Where(_ => stopped == false)
        .Subscribe(x => transform.position += transform.forward * Time.deltaTime * baseMovementSpeed * movementSpeedMultiplier);
        MenuController.LoseEvent.AddListener(() => movementSpeedMultiplier = 1);
    }
Пример #8
0
 public async Task <Right> Update(Guid rightId, [FromBody] RightInput right)
 {
     return(await repo.Update(rightId, right));
 }
Пример #9
0
 public async Task <Right> Add([FromBody] RightInput right)
 {
     return(await repo.Add(right));
 }
Пример #10
0
 internal override void FaultBufferOnPredecessorCompletion(Exception e)
 {
     LeftInput.FaultBufferOnPredecessorCompletion(e);
     RightInput.FaultBufferOnPredecessorCompletion(e);
     ((IDataflowBlock)Buffer).Fault(e);
 }
Пример #11
0
 public static void AssertEqual(RightInput expected, RightEntity actual)
 {
     Assert.Equal(expected.Info, actual.Info);
 }
Пример #12
0
 public RightEntity MapRight(RightInput src, RightEntity dest)
 {
     return(mapper.Map(src, dest));
 }