Changeset 9630 for branches/Robocode/HeuristicLab.Problems.Robocode/Symbols/Void Methods/TurnLeft.cs
- Timestamp:
- 06/14/13 11:03:13 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/Robocode/HeuristicLab.Problems.Robocode/Symbols/Void Methods/TurnLeft.cs
r9565 r9630 3 3 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 4 4 5 namespace HeuristicLab.Problems.Robocode 6 { 7 [StorableClass] 8 public class TurnLeft : CodeNode 9 { 10 public override int MinimumArity { get { return 1; } } 11 public override int MaximumArity { get { return 1; } } 5 namespace HeuristicLab.Problems.Robocode { 6 [StorableClass] 7 public class TurnLeft : CodeNode { 8 public override int MinimumArity { get { return 1; } } 9 public override int MaximumArity { get { return 1; } } 12 10 13 14 11 [Storable] 12 public override string Prefix { get; set; } 15 13 16 17 14 [Storable] 15 public override string Suffix { get; set; } 18 16 19 [StorableConstructor] 20 private TurnLeft(bool deserializing) : base(deserializing) { } 21 private TurnLeft(TurnLeft original, Cloner cloner) 22 : base(original, cloner) 23 { 24 this.Prefix = "setTurnLeft("; 25 this.Suffix = ");"; 26 } 17 [StorableConstructor] 18 private TurnLeft(bool deserializing) : base(deserializing) { } 19 private TurnLeft(TurnLeft original, Cloner cloner) 20 : base(original, cloner) { 21 } 27 22 28 public TurnLeft() 29 : base("TurnLeft", "Immediately turns the robot's body to the left by degrees.") 30 { 31 this.Prefix = "setTurnLeft("; 32 this.Suffix = ");"; 33 } 23 public TurnLeft() 24 : base("TurnLeft", "Immediately turns the robot's body to the left by degrees.") { 25 this.Prefix = "setTurnLeft("; 26 this.Suffix = ");"; 27 } 34 28 35 public override IDeepCloneable Clone(Cloner cloner) 36 { 37 return new TurnLeft(this, cloner); 38 } 29 public override IDeepCloneable Clone(Cloner cloner) { 30 return new TurnLeft(this, cloner); 31 } 39 32 40 public override string Interpret(ISymbolicExpressionTreeNode node, System.Collections.Generic.IEnumerable<ISymbolicExpressionTreeNode> children) 41 { 42 var enumerator = children.GetEnumerator(); 33 public override string Interpret(ISymbolicExpressionTreeNode node, System.Collections.Generic.IEnumerable<ISymbolicExpressionTreeNode> children) { 34 var enumerator = children.GetEnumerator(); 43 35 44 45 36 if (!enumerator.MoveNext()) throw new System.Exception("TurnLeft was not given a child."); 37 var symbol = enumerator.Current.Symbol; 46 38 47 48 49 50 51 39 if (!(symbol is Number || symbol is NumericalOperation || symbol is NumericalExpression)) 40 throw new System.Exception("TurnLeft was given a child of type " + symbol.GetType().ToString() + 41 ". The expected child must be of type " + typeof(Number).ToString() + " or " + 42 typeof(NumericalOperation).ToString() + " or " + 43 typeof(NumericalExpression).ToString() + "."); 52 44 53 54 45 string result = ((CodeNode)symbol).Interpret(enumerator.Current, enumerator.Current.Subtrees); 46 if (enumerator.MoveNext()) throw new System.Exception("TurnLeft was given more than one child."); 55 47 56 return this.Prefix + result + this.Suffix; 57 } 48 return this.Prefix + result + this.Suffix; 58 49 } 50 } 59 51 }
Note: See TracChangeset
for help on using the changeset viewer.