2017-06-30 40 views
1

我正在开发一个wordsearch游戏。表格布局包含文字浏览。 Textviews显示字符。当用户在8个方向中的任何一个上找到一个单词时:我想在相应方向上的单词上显示画布线。在Android中只绘制横向,纵向和对角线

我可以绘制水平,垂直和对角线从起点到终点。起点是用户开始刷卡的地方。终点是他停止滑动的地方。

Check the first three screenshots here

但我的问题是,我也能得出错误的坐标不属于水平,垂直或对角线之间的其他线路。请参阅接下来的三个屏幕截图。

我只想绘制水平,垂直和对角线。当终点坐标错误时,我需要移动终点以与附近的任何一个方向(水平,垂直或对角线)重合。

+0

你看起来要对无效的单词画线,你不应该忽视这些吗? –

+0

是的。我们应该考虑错误的坐标。然后,我们需要将坐标移至可能是水平,垂直或对角线的任何一个附近方向。所以,即使用户在错误的坐标上滑动,我们也可以在正确的坐标中绘制直线。 –

回答

0

您可以在绘制之前找到该线的斜率。假设相等大小的,间隔均匀的字母,并且触摸点是在每个字母中的相同位置...

东西超过0 - 垂直线
±1 - 对角线
0 - 水平

式= (p2.y - p1.y)/(p2.x - p1.x)

+0

你的回答对我的问题是一个很好的提示。当用户触摸栅格而不是垂直,对角线和水平方向时,斜率总是小于或大于±1。 –