关于五子棋的落子处理问题(含鼠标)

JustHere 2002-09-17 04:35:25
我在作五子棋,player用鼠标落子,鼠标的x,y值我可以知道,请问如何处理落子,我定义了一个二维数组来保存棋盘盘面,如何把落下子位置告诉系统,因为我只知道鼠标的像素值,但如何把它告诉我定义的数组,鼠标的位置是是一个象素,但我们都知道,我们下棋的时候,不可能很准确的点在棋盘的交叉点上,也就说,我们要有一个热区,不知道我的想法对不对,但这样一来,就很难处理了。
不知道,最佳的方法是什么
...全文
302 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
ahao 2002-09-20
  • 打赏
  • 举报
回复
111是笔误:)
ahao 2002-09-20
  • 打赏
  • 举报
回复
唉。你的数学真差,真的
用户 昵称 2002-09-20
  • 打赏
  • 举报
回复
就是正方形了
JustHere 2002-09-20
  • 打赏
  • 举报
回复
不对吧。应该是
if( 219%20 > 20/2 )
x = 219-219%20+ 20;
else
x = 219-219%20;

if( 111%20 > 20/2 )
y = 111-111%20+ 20;
else
y = 111-111%20;
ahao 2002-09-20
  • 打赏
  • 举报
回复
:)这还不容易?

假设鼠标点在(219,111),棋盘一格20点,所求交叉点是(x,y)
那么:
if( 219%20 > 20/2 )
x = 219/20*20 + 20;
else
x = 219/20*20;

if( 109%20 > 20/2 )
y = 109/20*20 + 20;
else
y = 109/20*20;

wwlxmai 2002-09-20
  • 打赏
  • 举报
回复
交叉点为中心
的一个正方形中
hxy_sss 2002-09-20
  • 打赏
  • 举报
回复
把有效范围缩小,10变成5,在交叉点的5点半径内为有效。
JustHere 2002-09-20
  • 打赏
  • 举报
回复
交叉点很多,难道要我一个一个试啊 那效率很低啊
比如说(210,230)(230,230) 是交叉点 我设半径为10内是有效的值
如果我得到的x y 坐标是(219,230)(221,230)那你说怎么判断
(219,230)是(210,230)这个点
(221,230)是(230,230)这个点的
是不是用(x-210)*(x-210)+(y-210)*(y-210)<=10*10 xy为鼠标的坐标值
但是 你怎么知道xy是接近210 而不是接近230
ahao 2002-09-18
  • 打赏
  • 举报
回复
晕倒,这也难处理吗??
鼠标点的坐标和交叉点坐标一减取个绝对值
小于一个数不就可以了?
Alain_Delone 2002-09-18
  • 打赏
  • 举报
回复
可否以正方形区域代替,这样就可以以坐标定位了,每格的大小一定,好象和扫雷差不多吧
azuretttc 2002-09-18
  • 打赏
  • 举报
回复
由棋盘落子点的坐标可以求得以其为圆心的一个圆(半径自定),可得到其方程,经过简化,然后将鼠标位置坐标代入方程,看是否大于零,这样就可得到是否在落子区了!
complexity 2002-09-17
  • 打赏
  • 举报
回复
sandrowjw(Sandro)说得够明白了

就是判断鼠标是否在交叉点的一个二位临域里面
JustHere 2002-09-17
  • 打赏
  • 举报
回复
还有其他办法?
JustHere 2002-09-17
  • 打赏
  • 举报
回复
能否具体点
sandrowjw 2002-09-17
  • 打赏
  • 举报
回复
橡皮筋法,以准确位置为圆心的一个圆内都有效就可以了。

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧