//Calls Private functions to create traits. public VisualTraits GetVisualAlibi(VisualCount v) { VisualTraits traits = new VisualTraits(); traits._eyeColor = getEyeColor(v); traits._hairColor = getHairColor(v); traits._skinColor = getSkinColor(v); return(traits); }
//-------------------------------------------------------------------------------------------- private EyeColor getEyeColor(VisualCount v) { int currentHzl = v.HazelEyes; int currentBlu = v.BlueEyes; int curretnGrn = v.GreenEyes; //Same as above function int difHz = _maxTraits.HazelEyes - currentHzl; int difBl = _maxTraits.BlueEyes - currentBlu; int difGrn = _maxTraits.GreenEyes - curretnGrn; int perHz; int perBl; int perGr; if (difHz > 0) { perHz = (int)Probability.CumlativeNormalDis(_maxTraits.HazelEyes, _maxTraits.HazelEyes, StandDevTypes) - (int)Probability.CumlativeNormalDis(currentHzl, _maxTraits.HazelEyes, StandDevTypes); } else { perHz = (int)Probability.CumlativeNormalDis(currentHzl, _maxTraits.HazelEyes, StandDevTypes) - (int)Probability.CumlativeNormalDis(_maxTraits.HazelEyes, _maxTraits.HazelEyes, StandDevTypes); } if (difBl > 0) { perBl = (int)Probability.CumlativeNormalDis(_maxTraits.BlueEyes, _maxTraits.BlueEyes, StandDevTypes) - (int)Probability.CumlativeNormalDis(currentBlu, _maxTraits.BlueEyes, StandDevTypes); } else { perBl = (int)Probability.CumlativeNormalDis(currentBlu, _maxTraits.BlueEyes, StandDevTypes) - (int)Probability.CumlativeNormalDis(_maxTraits.BlueEyes, _maxTraits.BlueEyes, StandDevTypes); } if (difGrn > 0) { perGr = (int)Probability.CumlativeNormalDis(_maxTraits.GreenEyes, _maxTraits.GreenEyes, StandDevTypes) - (int)Probability.CumlativeNormalDis(curretnGrn, _maxTraits.GreenEyes, StandDevTypes); } else { perGr = (int)Probability.CumlativeNormalDis(curretnGrn, _maxTraits.GreenEyes, StandDevTypes) - (int)Probability.CumlativeNormalDis(_maxTraits.GreenEyes, _maxTraits.GreenEyes, StandDevTypes); } int r = _Random.Next(perBl + perGr + perHz); EyeColor e; if (r < perBl) { e = EyeColor.Blue; } else if (r < (perBl + perHz)) { e = EyeColor.Hazel; } else { e = EyeColor.Green; } return(e); }
//-------------------------------------------------------------------------------------------- private HairColor getHairColor(VisualCount v) { int currentBld = v.BlondHair; int currentRed = v.RedHair; int currentBlk = v.BlackHair; int currentBrn = v.BrownHair; //Same as above int difBld = _maxTraits.BlondHair - currentBld; int difRed = _maxTraits.RedHair - currentRed; int difBlk = _maxTraits.BlackHair - currentBlk; int difBrn = _maxTraits.BrownHair - currentBrn; int perBld; int perRed; int perBlk; int perBrn; if (difBld > 0) { perBld = (int)Probability.CumlativeNormalDis(_maxTraits.BlondHair, _maxTraits.BlondHair, StandDevTypes) - (int)Probability.CumlativeNormalDis(currentBld, _maxTraits.BlondHair, StandDevTypes); } else { perBld = (int)Probability.CumlativeNormalDis(currentBld, _maxTraits.BlondHair, StandDevTypes) - (int)Probability.CumlativeNormalDis(_maxTraits.BlondHair, _maxTraits.BlondHair, StandDevTypes); } if (difRed > 0) { perRed = (int)Probability.CumlativeNormalDis(_maxTraits.RedHair, _maxTraits.RedHair, StandDevTypes) - (int)Probability.CumlativeNormalDis(currentRed, _maxTraits.RedHair, StandDevTypes); } else { perRed = (int)Probability.CumlativeNormalDis(currentRed, _maxTraits.RedHair, StandDevTypes) - (int)Probability.CumlativeNormalDis(_maxTraits.RedHair, _maxTraits.RedHair, StandDevTypes); } if (difBlk > 0) { perBlk = (int)Probability.CumlativeNormalDis(_maxTraits.BlackHair, _maxTraits.BlackHair, StandDevTypes) - (int)Probability.CumlativeNormalDis(currentBlk, _maxTraits.BlackHair, StandDevTypes); } else { perBlk = (int)Probability.CumlativeNormalDis(currentBlk, _maxTraits.BlackHair, StandDevTypes) - (int)Probability.CumlativeNormalDis(_maxTraits.BlackHair, _maxTraits.BlackHair, StandDevTypes); } if (difBrn > 0) { perBrn = (int)Probability.CumlativeNormalDis(_maxTraits.BrownHair, _maxTraits.BrownHair, StandDevTypes) - (int)Probability.CumlativeNormalDis(currentBrn, _maxTraits.BrownHair, StandDevTypes); } else { perBrn = (int)Probability.CumlativeNormalDis(currentBrn, _maxTraits.BrownHair, StandDevTypes) - (int)Probability.CumlativeNormalDis(_maxTraits.BrownHair, _maxTraits.BrownHair, StandDevTypes); } HairColor h; int r = _Random.Next(perBlk + perBrn + perRed + perBld); if (r < perBlk) { h = HairColor.Black; } else if (r < (perBlk + perBrn)) { h = HairColor.Brown; } else if (r < (perBlk + perBrn + perRed)) { h = HairColor.Red; } else { h = HairColor.Blond; } return(h); }
//Each Based off Percent Will Check Current //Compared to Avg using Normal Distribution //than the percentage will be added and will //return the type based off of semi random // 1% = 1 so 10% holds 0-9 next 10% holds 10-19 //etc private SkinColor getSkinColor(VisualCount v) { int currentBrn = v.BrownSkin; int currentBlk = v.BlackSkin; int currentWht = v.WhiteSkin; int difBrn; int difBlk; int difWht; //Might need to modifiy to check how far above max //In order to do proper Math difBrn = _maxTraits.BrownSkin - currentBrn; difWht = _maxTraits.WhiteSkin - currentWht; difBlk = _maxTraits.BlackSkin - currentBlk; int perBrn; int perBlk; int perWht; if (difBrn > 0) { perBrn = (int)Probability.CumlativeNormalDis(_maxTraits.BrownSkin, _maxTraits.BrownSkin, StandDevTypes) - (int)Probability.CumlativeNormalDis(currentBrn, _maxTraits.BrownSkin, StandDevTypes); } else { perBrn = (int)Probability.CumlativeNormalDis(currentBrn, _maxTraits.BrownSkin, StandDevTypes) - (int)Probability.CumlativeNormalDis(_maxTraits.BrownSkin, _maxTraits.BrownSkin, StandDevTypes); //don't know exactly what to do in this case } if (difBlk > 0) { perBlk = (int)Probability.CumlativeNormalDis(_maxTraits.BlackSkin, _maxTraits.BlackSkin, StandDevTypes) - (int)Probability.CumlativeNormalDis(currentBlk, _maxTraits.BlackSkin, StandDevTypes); } else { perBlk = (int)Probability.CumlativeNormalDis(currentBlk, _maxTraits.BlackSkin, StandDevTypes) - (int)Probability.CumlativeNormalDis(_maxTraits.BlackSkin, _maxTraits.BlackSkin, StandDevTypes); } if (difWht > 0) { perWht = (int)Probability.CumlativeNormalDis(_maxTraits.WhiteSkin, _maxTraits.WhiteSkin, StandDevTypes) - (int)Probability.CumlativeNormalDis(currentWht, _maxTraits.WhiteSkin, StandDevTypes); } else { perWht = (int)Probability.CumlativeNormalDis(currentWht, _maxTraits.WhiteSkin, StandDevTypes) - (int)Probability.CumlativeNormalDis(_maxTraits.WhiteSkin, _maxTraits.WhiteSkin, StandDevTypes); } SkinColor s; int r = _Random.Next(0, perBlk + perBrn + perWht); if (r < perWht) { s = SkinColor.White; } else if (r < (perWht + perBlk)) { s = SkinColor.Black; } else { s = SkinColor.Brown; } return(s); }