Ejemplo n.º 1
0
    void CheckForVictory()
    {
        bool victory  = true;
        bool allMatch = true;

        bool[] checkedOff    = new bool[experiments.Count];
        int    numCheckedOff = 0;

        int[,] values = new int[experiments.Count, geneMap.Length];
        int counter = 0;

        for (int i = 0; i < experiments.Count; i++)
        {
            foreach (int j in experiments[i].dna.GetGeneValues())
            {
                values [i, counter++] = j;
            }
            counter = 0;
        }
        if (goalGeneMapping.Length == 0 && GetNumOfExps() > 0)
        {
            victory = false;
        }
        else
        {
            for (int i = 0; i < goalGeneMapping.Length; i++)
            {
                for (int j = 0; j < experiments.Count; j++)
                {
                    if (checkedOff [j])
                    {
                        continue;
                    }
                    allMatch = true;
                    for (int k = 0; k < geneMap.Length; k++)
                    {
                        if (values [j, k] != goalGeneMapping [i].mapList [k])
                        {
                            allMatch = false;
                            break;
                        }
                    }
                    if (allMatch)
                    {
                        checkedOff [j] = true;
                        numCheckedOff++;
                        break;
                    }
                }
                if (numCheckedOff == i)
                {
                    victory = false;
                    break;
                }
            }
        }

        if (victory)
        {
            state = SocState.Finished;
            UI.ReportFinished();
        }
        else
        {
            state = SocState.Sleeping;
        }
        //print ("Victorious: " + victory);
    }