界涌北门户网
当前位置:主页>国际新闻>
scratch五子棋人机对战
来源:szfuquan.com.cn  阅读量:1029

扫描微信公众号码了解更多内容

?今天,我想和大家分享一下抓五子棋的过程。我们都玩过五子棋。当太阳黑子或白色方块水平、垂直和倾斜地连接成五块时,游戏就结束了。要完全了解五子棋的规则并不容易。

在我们这么做之前,让我们整理一下以下想法:

1。棋盘的背景水平线和垂直线保持相同的单位间隔

2。太阳黑子(人)-跟随鼠标,撞击的中心点是黑线

3的交点。白子(计算机)自动判断撞击点,撞击的中心点在黑线的交点上

看起来相对简单,但仍有许多隐藏的问题(至关重要)

例如:

1。一个交叉点只能落一个子

2。它不能从棋盘上掉下来

3。AI

4。判断结果的条件?

?棋盘的背景可以用刷子画出来。我们可以把棋盘想象成由垂直线和水平线组成,每条线之间的距离是相同的,假设这个距离是20个像素点。

然后你可以先找到一个合适的位置(-200,-160),向上移动并画一条黑线,然后移动到(-200,-160),将坐标X增加20,然后画一条黑线,并重复这个过程。通过控制循环次数,水平线是相同的。你只需要在右边画一条线,每次Y改变20,你就可以得到

垂直线

水平线

我们要解决的下一个问题是:

2。每一滴都必须正好在交点的中间

我们创建了一个新的黑子角色,并将其调整到一个合适的大小(半径小于10个像素点),黑子的位置如下图所示:

这是有保证的吗?当运行时,鼠标指针正对着太阳黑子的中心。当鼠标被点击时,鼠标被放下并密封。这样,跟随鼠标移动并点击下落的孩子的功能就可以实现了。

最后,解决下落的孩子必须在十字路口中间这个问题的关键是,当鼠标指针靠近十字路口(红色圆圈中的任何地方)时,点击鼠标不会直接戳到黑子,但是黑子的中心会移动到十字路口并戳到它。

假设交点的坐标是(X,Y),鼠标的坐标可能是(X a,y b),和-10

例如,假设交点(40,80)和鼠标指针是(43,82),最后的撞击点可以根据上述公式计算为交点。

我想说的是:

如何确保交叉点不会重复掉落

如何确保交叉点不会从棋盘上掉落

如何决定结果

首先解决第一个问题“不要重复掉落”。每个人都知道每个交叉点都有一个唯一的(x,y)。为了确保交叉点不会反复脱落,也就是说,交叉点(x,y)只能使用一次。在脱落之前,有必要确定列表中是否有交叉点(x,y)。如果有,就不会盖章。如果没有,在列表中标记(放下)并存储交叉点(x,y)。

每个人都有一个问题需要思考。为什么需要用逗号而不是逗号来连接坐标?你能直接连接吗?

黑色标志的下降程序是:

黑色标志的下降视频:

接下来,最重要的是如何决定结果。有很多方法可以决定结果,比如列表。这是一种新方法

他会用手指指着太阳黑子,然后抬头看看是否有太阳黑子,如果有,继续往上走,重复直到上面没有太阳黑子。立即回到最初的黑子,然后看手指看是否有黑子,如果有,继续往下走,重复直到下面没有黑子。在这个过程中,每个太阳黑子数增加1。用这种方法,可以计算出一条垂直线上太阳黑子的数量。

?该程序将创建一个新的字符(大小不应超过太阳黑子),并控制它像孩子的手指一样计算连接的太阳黑子数,以检查它是否获胜。问题:为什么大小不能超过太阳黑子?

在太阳黑子落下并密封后,它发出一个信息,即

可变的黑色总和表示黑子联系的数量。探测胜利的程序如下:

这样就可以确定垂直方向上太阳黑子的最大数量。类似地,水平和倾斜的太阳黑子的最大数量可以通过这种方式被检测到(在改变方向检测之后,黑色总和需要被重置为0)。我们只需要写下程序来检测下面的水平和倾斜方向(改变x和y的坐标)。一旦黑色总和等于6,太阳黑子将获胜。

问题:1。为什么测试从最后一滴开始?

?2.为什么应将“黑色总和”重置为0?

?3.为什么判断结果的条件等于6而不是5?

这一推是五子棋的最后一块,主要解释白子的人工智能。

?在这里,让我们分享一个简单的策略,那就是让白子优先考虑防御。所谓的防御是在太阳黑子数量最多的位置,也就是在太阳黑子的左边或右边,进入下白子。

但是假设太阳黑子已经连接成四个,并且在左边或右边已经有一个白子,那么白子需要在另一边。因此,白子的防御思想是找到太阳黑子数量最多的那条线,判断它的左边或右边是否有白子,并根据情况到达相应的位置。

也就是说,现在要解决的问题是:

1。如何找到太阳黑子数量最多的位置

2。需要存储位置

3左右两侧的坐标。确定左右两边是否被白子占领?

如上图所示,在列表的黑色和最大值中,索引项与其他项不断进行比较。如果其他项目较大,索引项目会变成较大的项目,然后继续与其他项目进行比较,直到结束。这样,最终的索引项是最大值

所以下一个想法是:

1。判断白子的两个坐标是否在棋盘

2之外。判断白子的两个坐标是否被占据

3。白子失去儿子后,判断白子是否赢了

4。与此同时,发出一个信息,将形状转换为主动的黑子。

前面两篇文章中已经提到了上面的类比,所以这里就不再重复了。你可以发送消息“五子棋”来获取程序。当然,为了鼓励你自己思考,这里的程序比上面少了一到四步。我相信你读完这些推后一定可以自己做。如果你有任何问题,请留言问我。

友情链接:
界涌北门户网 版权所有© www.szfuquan.com.cn 技术支持:界涌北门户网 | 网站地图