Ejemplo n.º 1
0
Archivo: Form1.cs Proyecto: koutcha/bo
    //分割数=判定回数、より当たり判定を正確にするための関数
    private MyPoint LinerInterlation(MyPoint p, RectFig blk, int divisionNum)
    {
        double iniX = p.X - ball.Dx;
        double iniY = p.Y - ball.Dy;


        double DxDivided = ball.Dx / (double)divisionNum;
        double DyDivided = ball.Dy / (double)divisionNum;



        MyPoint accuratePoint = new MyPoint(iniX, iniY);

        for (int i = 0; i < divisionNum; i++)
        {
            accuratePoint.X += DxDivided;
            accuratePoint.Y += DyDivided;

            if (CheckCircleInRect(accuratePoint, blk))
            {
                break;
            }
        }
        ball.setPoint((int)accuratePoint.X, (int)accuratePoint.Y);


        return(accuratePoint);
    }
Ejemplo n.º 2
0
Archivo: Form1.cs Proyecto: koutcha/bo
    private int CheckEightPoint(Ball ball, RectFig blk)
    {
        int x = 10;

        MyPoint[] p = this.ball.CaliculateEightPoint();

        for (int i = 0; i < p.Length; i++)
        {
            if (CheckCircleInRect(p[i], blk))
            {
                x = i;
                break;
            }
        }
        return(x);
    }
Ejemplo n.º 3
0
Archivo: Form1.cs Proyecto: koutcha/bo
    private bool CheckCircleInRect(MyPoint p, RectFig blk)
    {
        bool   bo = false;
        double x  = p.X;
        double y  = p.Y;

        //Console.Write("check");
        if ((double)blk.X <= x && (double)blk.X + (double)blk.Width >= x)
        {
            if ((double)blk.Y <= y && y <= (double)blk.Y + (double)blk.Height)
            {
                bo = true;
            }
        }

        return(bo);
    }