diff --git a/src/main/java/org/opennars/lab/microworld/Pong.java b/src/main/java/org/opennars/lab/microworld/Pong.java index c068dd8aa954c4ea4df5d1a937c3c12fbde041dd..95dee1adcb028e9a36a952060893e9a669248aac 100755 --- a/src/main/java/org/opennars/lab/microworld/Pong.java +++ b/src/main/java/org/opennars/lab/microworld/Pong.java @@ -30,11 +30,14 @@ import java.util.ArrayList; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; +import org.opennars.entity.Concept; import org.opennars.entity.Sentence; import org.opennars.entity.Task; import org.opennars.gui.NARSwing; import org.opennars.interfaces.Timable; +import org.opennars.io.Narsese; +import org.opennars.io.Parser; import org.opennars.util.test.ConceptMonitor; import org.opennars.language.Term; import org.opennars.operator.Operation; @@ -249,16 +252,27 @@ public class Pong extends Frame { if(obj.x == width) { lastAction = 2; } + Concept left = null; + Concept right = null; + try { + left = nar.memory.concept(new Narsese(nar).parseTerm("Left({SELF})")); //refine API in the future + right = nar.memory.concept(new Narsese(nar).parseTerm("Right({SELF})")); //innate motivation plugin + } catch (Parser.InvalidInputException ex) { //with for instance battery level etc. and their state? + Logger.getLogger(Pong.class.getName()).log(Level.SEVERE, null, ex); + } if(lastAction == 1) { - //System.out.println("random left"); - //nar.addInput("Left({SELF}). :|:"); - + if(right != null && !right.allowBabbling) { + lastAction = 0; + return 0; + } nar.addInput("Right({SELF}). :|:"); } if(lastAction == 2) { + if(left != null && !left.allowBabbling) { + lastAction = 0; + return 0; + } nar.addInput("Left({SELF}). :|:"); - //System.out.println("random right"); - //nar.addInput("Right({SELF}). :|:"); } } diff --git a/src/main/java/org/opennars/lab/microworld/SimNAR.java b/src/main/java/org/opennars/lab/microworld/SimNAR.java index 75e194cd8d845c95bf3bf4131f66376985ba1196..813b4a74368b610343ecbd42845b899582823c01 100755 --- a/src/main/java/org/opennars/lab/microworld/SimNAR.java +++ b/src/main/java/org/opennars/lab/microworld/SimNAR.java @@ -29,9 +29,12 @@ import java.util.ArrayList; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; +import org.opennars.entity.Concept; import org.opennars.entity.Task; import org.opennars.gui.NARSwing; import org.opennars.interfaces.Timable; +import org.opennars.io.Narsese; +import org.opennars.io.Parser; import org.opennars.language.Term; import org.opennars.operator.Operation; import org.opennars.operator.Operator; @@ -343,15 +346,27 @@ public class SimNAR extends Frame { if(lastAction==0 && random(1.0f)<Alpha) { //if Nar hasn't decided chose a random action lastAction = (int)random((float)nActions); + Concept left = null; + Concept right = null; + try { + left = nar.memory.concept(new Narsese(nar).parseTerm("Left({SELF})")); //refine API in the future + right = nar.memory.concept(new Narsese(nar).parseTerm("Right({SELF})")); //innate motivation plugin + } catch (Parser.InvalidInputException ex) { //with for instance battery level etc. and their state? + Logger.getLogger(Pong.class.getName()).log(Level.SEVERE, null, ex); + } if(lastAction == 1) { - //System.out.println("random left"); + if(right != null && !right.allowBabbling) { + lastAction = 0; + return 0; + } nar.addInput("Right({SELF}). :|:"); - // nar.addInput("Left({SELF}). :|:"); } if(lastAction == 2) { - //System.out.println("random right"); + if(left != null && !left.allowBabbling) { + lastAction = 0; + return 0; + } nar.addInput("Left({SELF}). :|:"); - /// nar.addInput("Right({SELF}). :|:"); } }