有一个不规则棋盘,我用图存放   点集,边集(起点,终点)。棋子的移动规则是每次走一步,但两点间必须有连线。
选中点A上的一个棋子,然后点另一个点B,如何判断能否从A移动到B?我的想法是先判断A,B的X坐标和Y坐标的距离是不是大于1,大于1则不能移动
再判断A,B是否同在一条边上。
但没想到有什么简单的办法能到判断A,B是否在同一条边上。

解决方案 »

  1.   

    先试一个不完善的方案:
    A肯定是在连线上,B是鼠标点击点,C是附近的点。
    计算这个三角形的面积,少的优先,做备选点。检查,如果AC不存在则删除。
      

  2.   

    我说下我的思路 你既然知道边的点集  那边就把所有直线创建出来直线形式也就是 Ax+By+C = 0;  三个参数AiBiCi能代表一个直线任意一点(X1,Y1),带入所有直线判断有没有等于0的,有就在直线上,否则不在当然你还要考虑直线的边界,因为你这个是线段不知道你清楚吗
      

  3.   


    是数据结果里的图。
    数据结构里的图,不就是点集合,和由两点构成的边的集合么?
    这是个棋盘。点集合就是棋盘上各个可以落子的点,边就是两个点组成的线段。比如 

    {
    点(A(0,0),B(1,1),C(1,0),D(0,1))
    边((A,B),(A,C))
    }每次只能在一条边上移动一格。
    现在需要判断A是否能移动到D。