1 10 package examples.gp.tictactoe; 11 12 import org.jgap.gp.impl.*; 13 import org.jgap.gp.*; 14 import org.jgap.gp.function.*; 15 import org.jgap.gp.terminal.*; 16 17 23 public class GameNodeValidator 24 implements INodeValidator { 25 52 public boolean validate(ProgramChromosome a_chrom, CommandGene a_node, 53 CommandGene a_rootNode, 54 int a_tries, int a_num, int a_recurseLevel, 55 Class a_type, CommandGene[] a_functionSet, 56 int a_depth, boolean a_grow, int a_childIndex) { 57 if (a_tries > 10) { 60 return true; 61 } 62 if (a_num == 1) { 65 if (a_recurseLevel == 0 && a_node.getClass() != Loop.class) { 68 return false; 69 } 70 if (a_recurseLevel == 1 && a_node.getClass() != EvaluateBoard.class) { 71 return false; 72 } 73 } 74 if (a_num == 2) { 77 if (a_recurseLevel == 0 && a_node.getClass() != SubProgram.class) { 79 return false; 80 } 81 if (a_recurseLevel > 1 && a_node.getClass() == EvaluateBoard.class 88 && a_childIndex > 0) { 89 return false; 90 } 91 if (a_recurseLevel == 1 && a_childIndex == 0 && 92 a_node.getClass() != EvaluateBoard.class) { 93 return false; 94 } 95 if (a_rootNode != null && a_rootNode.getClass() != SubProgram.class 96 && a_rootNode.getClass() != IfElse.class 97 && a_node.getClass() == IfElse.class 98 && a_childIndex <= 1) { 99 return false; 100 } 101 if (a_rootNode != null && a_rootNode.getClass() != IfElse.class && 102 a_node.getClass() != Equals.class) { 103 return false; 104 } 105 } 115 if (a_num == 3) { 118 if (a_recurseLevel == 0 && a_node.getClass() != PutStone1.class) { 119 return false; 120 } 121 if (a_recurseLevel == 1 && a_node.getClass() != ReadTerminalIndexed.class) { 122 return false; 123 } 124 } 125 return true; 126 } 127 } 128 | Popular Tags |