示例#1
0
        private CSPoint getOutRangePoint(CSPointType type, short radius)
        {
            CSPoint pTemp          = null;
            int     dicMax         = mSpaceDict.mDic.Count;
            int     randomPointPos = -1;

            if (mSpaceDict.mDic.Count != 0)//when no space left, redo in the DrawScene()
            {
                if (type != CSPointType.AllQuad)
                {
                    while (pTemp == null ||
                           !mSpaceDict.mDic.ContainsKey(mSpaceDict.GetIndex(pTemp.x, pTemp.y)))
                    {
                        pTemp = getPoint(type);
                    }
                }
                else
                {
                    randomPointPos = mRDM.Next(0, dicMax);
                    pTemp          = mSpaceDict.mDic.ElementAt(randomPointPos).Value;
                }

                mSpaceDict.TakeRoundSpace(pTemp, radius);
            }

            if (pTemp == null)
            {
                Console.WriteLine("Rearrange");
            }

            return(pTemp);
        }
示例#2
0
        private CSPoint getPoint(CSPointType type)
        {
            CSPoint retval = new CSPoint();
            int     limitxMin = 0, limitxMax = 0, limityMin = 0, limityMax = 0;

            switch (type)
            {
            case CSPointType.FirstQuad:
                limitxMin = 320;
                limitxMax = 640;
                limityMin = 0;
                limityMax = 240;
                break;

            case CSPointType.SecondQuad:
                limitxMin = 0;
                limitxMax = 320;
                limityMin = 0;
                limityMax = 240;
                break;

            case CSPointType.ThirdQuad:
                limitxMin = 0;
                limitxMax = 320;
                limityMin = 240;
                limityMax = 480;
                break;

            case CSPointType.AllQuad:
                limitxMin = 0;
                limitxMax = 640;
                limityMin = 0;
                limityMax = 480;
                break;
            }

            retval.x = (short)mRDM.Next(limitxMin, limitxMax);
            retval.y = (short)mRDM.Next(limityMin, limityMax);

            return(retval);
        }