Пример #1
0
 private static int loadParams(Instruction instruction, string parms, IOrganismo o, int pos)
 {
     string[] pars = parms.Split(',');
     for (int i = 0; i < pars.Length; i++)
     {
         string par = pars[i].Trim();
         if (par.Length > 0)
         {
             char p = par.ToCharArray()[0];
             if (p >= 'A' && p <= 'Z')
             {
                 o.setMemory(o.sp() + pos + i, ALifeConsts.getLetterNumber(p));
             }
             else
             {
                 o.setMemory(o.sp() + pos + i, int.Parse(par));
             }
         }
         else
         {
             pos--;
         }
     }
     return(pos + pars.Length);
 }
        public override void executa(IOrganismo o)
        {
            int inst = o.getMemory(o.ip + 1);

            inst = mundo.getMutation().mutateInstruction(inst, o);
            int regVal = o.getReg(getByteOrganismo(o, 2));

            o.setMemory(regVal, inst);
        }
Пример #3
0
        private void randomizeInstruction(IOrganismo o)
        {
            int memPos = CRJavaUtils.randomInt(-10, 10);

            int index = o.ip() + memPos;
            int inst  = o.getMemory(index);

            inst = changeInstruction(inst);
            o.setMemory(index, inst);
        }
Пример #4
0
        private static int loadInstruction(string line, IWorld mundo, IOrganismo o, int pos)
        {
            if (line.StartsWith("#"))
            {
                return(pos);
            }
            if (line.Contains("="))
            {
                line = line.Substring(line.IndexOf("=") + 1).Trim();
            }
            if (line.Contains("//"))
            {
                line = line.Substring(0, line.IndexOf("//")).Trim();
            }
            line += " ";
            int    indexOf   = line.IndexOf(" ");
            string param     = line.Substring(indexOf).Trim();
            string instrCode = line.Substring(0, indexOf).Trim();

            Instruction instruction = mundo.getInstruction(instrCode);
            int         step        = 1;

            if (instruction == null)
            {
                o.setMemory(o.sp() + pos, int.Parse(instrCode));
            }
            else
            {
                o.setMemory(o.sp() + pos, instruction.getId());
                step = instruction.getStep();
            }
            pos++;
            if (step > 1)
            {
                pos = loadParams(instruction, param, o, pos);
            }
            return(pos);
        }
Пример #5
0
        private void randomizeInstruction(IOrganismo o)
        {
            int memPos = Utils.RandomInt(-10, 10);

            int index = o.ip + memPos;

            if (index < o.sp())
            {
                index = o.sp();
            }
            int inst = o.getMemory(index);

            inst = changeInstruction(inst);
            o.setMemory(index, inst);
        }