public override void Evaluate(SpinContext context)
 {
     // wildcard symbols should:
     // not change current letter
     // not terminate evaluation
     // add their coefficient although it's probably 0 or very low
     context.Coefficient += SymbolOptions.Coefficient;
 }
Ejemplo n.º 2
0
 private void OutputSymbolRow(string rowOutput, SpinContext context)
 {
     if (context.Coefficient > 0)
     {
         _output.Congratulate(rowOutput);
     }
     else
     {
         _output.Inform(rowOutput);
     }
 }
Ejemplo n.º 3
0
        private void EvaluateSymbolRow(SpinContext context, Symbol[] symbols)
        {
            context.Clear();

            foreach (Symbol symbol in symbols)
            {
                symbol.Evaluate(context);
                if (!context.Continue)
                {
                    break;
                }
            }

            _logger.LogDebug("Evaluated row {0}.", context);
        }
Ejemplo n.º 4
0
        public SpinResult Execute()
        {
            Symbol[]      symbols     = new Symbol[_options.Spin.SymbolCount];
            StringBuilder rowBuilder  = new StringBuilder();
            SpinContext   context     = new SpinContext();
            int           coefficient = 0;

            for (int rowIndex = 0; rowIndex < _options.Spin.RowCount; ++rowIndex)
            {
                GenerateSymbolRow(rowBuilder, symbols);
                EvaluateSymbolRow(context, symbols);
                coefficient += context.Coefficient;
                OutputSymbolRow(rowBuilder.ToString(), context);
            }

            return(new SpinResult {
                Coefficient = coefficient
            });
        }
Ejemplo n.º 5
0
 public override void Evaluate(SpinContext context)
 {
     if (context.SymbolLetter.Length > 0)
     {
         if (context.SymbolLetter == SymbolOptions.Letter)
         {
             context.Coefficient += SymbolOptions.Coefficient;
         }
         else
         {
             context.Coefficient = 0;
             context.Continue    = false;
         }
     }
     else
     {
         context.SymbolLetter = SymbolOptions.Letter;
         context.Coefficient += SymbolOptions.Coefficient;
     }
 }
Ejemplo n.º 6
0
 public abstract void Evaluate(SpinContext context);