粉丝491获赞3372

今天呢雷老师来跟大家玩一个立体五子棋的游戏,这个游戏呢既结合了立体几何拼搭的结构,也结合了我们玩下棋类游戏的推理控制器和游戏策略在里面。下面呢老师给大家介绍一下游戏规则,我们呢分了两个颜色的棋子,就像五子棋一样,我们去摆放自己的棋子,那么我们五子棋 的游戏策略呢,就是要五个子连成一条线,但就是平面的,在我们这个游戏当中呢,我们的五子棋呢是要立体的去连成一条线, 我们就要去观察一下,一边在走自己的棋呢,一边要去补对方的棋子,那么你看一下,我们可以只能是在一个平面上,让他不停的往宽或者是往高,这样去下自己的棋子, 那你看这样呢,我这三个斜着就形成一条线,这样呢是横着的三个,这样呢是斜着的三个形成一条线。到什么时候我们五个棋子连成一条线的时候呢,我们的这管家呢就获得游戏的胜利,我们一起来跟他玩一下吧,刚刚的游戏都明白了吗?不明白的话可以参考视频结尾哦。

今天我们要打一个技能五子棋,看,这是技能五子棋的底座。 哎呀,妈妈,你怎么把我的棋转走了?怎么办?我也把你的棋转走, 可就不好意思啦,我就 不好,我又赢了, 我赢了。

你会玩五子棋吧,也会 scratch 吧,非常好。开始编写跟 tiffany 对 战的 ai 五子棋吧。话不多说,开始编程。首先从侯老师编程网站免费下载处获取需要的素材。 五子棋不需要复杂的素材,自己会制也是没问题的。虽然我们最终是要做一个跟 deepsea 对 战的 ai 版本,但是呢,我们要首先实现基本的五子棋的逻辑。所以呢,我们先来一个当绿棋被点击广播,一个开始双人游戏,先从最基本的规则开始开始。双人游戏 能看到我们是在一个会制棋盘的角色上,因为这一次呢,我们是通过划好线的,棋盘也是可以的。 这个角色呢,一开始就可以隐藏起来了,只需要画线就行了。那既然用到画线,我们就需要把画笔模块找出来,做一个出场。那双人游戏首先广播给谁呢?我们首先把背景切换一下,当接收到开始游戏的消息之后,把背景换成游戏背景, 也就是我们的背景一。这个地方你可以改下名字叫游戏背景,这里同步也就修改了。那现在我们返回到绘字棋盘里面来 绘制棋盘呢?我们首先要做一些准备工作,也就是关于我画笔的初识画,你可以设定一下你想要的颜色,你希望的画笔的粗细我们设定成二, 以及在你走到具体位置之前先抬笔。刚才我们有了全部擦除了,没问题。接下来希望我们的画笔呢,从左上角这个地方开始。那这个坐标呢,我们已经计算好了,挪到负一百六十一, y 也是一百六十一,这个位置是比较合适的, 接下来就要实现画线的操作了,先横后竖或者先竖后横都是可以的。那我们这一次呢,先让他从上往下画一个,再往右挪一点点,再从上往下画,依次画出来十五个竖线。先找到画线之前要落笔 落笔。接下来呢,因为我们要从上往下画,就让他的 y 坐标增加负三百二十二。我们先观察一下, 一点击绿棋,这条线是不是瞬间就画完了?当你的画笔到这里的时候呢,要画第二条线,我们首先要抬笔挪到这个位置,如果你不抬笔的话,他就会多画出来一个斜线,可以尝试一下这个地方,我们来一个 抬笔挪到这个地方,接下来返回到最上方,我们把 y 坐标刚才减少的抵消一下就可以了,这样的话呢,它就会从这个地方返回到原始的地方。接下来话,第二根线你往右边挪动你想要的距离,这个地方我们也计算好了,将 x 坐标增加二十三,是刚刚好的, 那增加了之后是不是又应该落笔将 y 坐标增加,这样的话你第二条线就画出来了,接着呢,又需要跟刚才一样,再回去,再往右偏移,所以这段代码是不断重复的,我们找到重复执行十五次,来我们看一下效果,点击绿旗。 哎,是不是一瞬间十五个竖线就画好了,接下来会一支横线,相信也难不倒你了,我们把这一段代码直接复制过来,还是先挪到左上角,只不过这一次你落笔之后是不是应该往右边走啊?我们这个地方改成 将 x 坐标增加,往右走的话,应该是增加对不对?当你画到最右边之后呢, x 坐标再减少,回到最左边来,我们来看一看, 不能点,因为还没改完,我们模拟一下吧,当他回到左上角之后, x 坐标增加这么多台里再返回来,是不是到这了呀?接下来就应该 y 坐标减少一点点,往下准备画第二条线,所以这里再加上将 y 坐标增加一个负数, 也就是减少二十三,来我们看一下效果,走你哎,先画竖线,再画横线,没问题, 接下来呢,保险起见,虽然我们已经画完了,给我们的画笔最后加上一个台笔的操作,是一个比较好的通用做法,避免误运动的时候呢,多画了一条线,有小伙伴会说,能不能让我的棋盘一点击绿棋就是画好的,没有这个过程呢, 当然是可以的,那在这里呢,我就不去描述这个方法了,有会的小伙伴欢迎在评论区或弹幕里面留言。我们接下来做一个细节操作,当我们会制好之后呢,往中心点,也就是天圆的位置,统一的说法,中心位置叫天圆的位置,点一个点。 好,那这里呢,我们首先把 ai 正在思考的这个隐藏起来,那中间的这个点呢,是八行八列的,这个位置首先要移动过去,正好呢,我们已经提前做好抬笔了,抬笔之后,我们移动到零零这个位置去正中心, 在点圆点之前,把他的画笔放粗一点,因为这样的话才能看的比较明显。设定成八,怎么画圆点呢?其实你只要落笔就可以了,你落笔就把那个地方点了一个点,即使你不移动,他也会点一个点,最后呢,按刚才的说法,最后来一个抬笔,以防万一。我们来看一下效果, 画竖线,画横线,哎,最后呢,中心点有一个点,如果你觉得太小,还可以自己再灵活调整。接下来就应该去移动我们的五子棋的棋子了,对不对?我们找到棋子这个角色,先来一个比较简单的代码, 当接收到方人五子棋开始的这个消息之后呢,我让五子棋跟随我的鼠标,这个比较简单,只要让他重复执行,移到哪个位置呢?鼠标指正所在的位置就可以了,我们来看一看,哎,哎,我们没有看见,是不是他被隐藏了呀?所以呢,接收到消息的时候,首先要显示出来, 哎,这时候能看到黑子默认的这个造型,就已经跟着我们进行移动了。那我怎么往下下呢?我点一下往这个地方克隆一个是不是就可以了?好,非常简单,我们在这个移动的过程中加上一个判断,如果按下鼠标 就克隆自己。看过我教程的小伙伴知道,我们为了防止克隆太多个,一般会加一个,等他松开鼠标的一瞬间再去执行下面的动作。那等待松开鼠标呢?也就是等待按下鼠标不成立,这时候再去克隆,就可以保证万无一失了。来,我们看一下效果, 好,移动没问题,点一下,哎,再点一下往棋盘上放纸的这个功能是没问题了,但现在是不是有一个新的问题啊?我们下五子棋是不是应该下在这个格子上,往这个里面下是不是就有点乱套了呀?那我们接下来优化一下放纸的这个功能, 具体应该怎么做呢?这里就要用到一些数学知识了,让我们的棋子跟随鼠标进行移动,那我们是不是可以知道鼠标的 x 坐标和鼠标的 y 坐标啊?好在哪个位置都能够精确的得到, 比如说,哎,我挪到这个地方就知道鼠标具体的 x 坐标, y 坐标,那也就是棋子的 x 坐标, y 坐标,那我们又知道每一个格子是二十三,把我的坐标除以二十三, 二十三 y 坐标也一样,也除以二十三,是不是就得到了它在我们棋盘上的一个数字了呀?我们尝试一下加一个缩话说出来,鼠标的 x 坐标 y 坐标,我们加上一个连接,中间加一个逗号, 放进去开始。哎,我们放到这里发现了什么问题?确实有逗号,但前面是不是零点零四哒哒哒一堆数字,二点九五哒哒一堆数字啊?说明我们除以二十三呢?除出来一个小数,不是整数,那怎么把小数变成整数呢?加上一个四舍五入, 四舍五入,把它放进去,等一下我们需要两个把它放进去,把它也放进去。来,我们再看一下 中心点零零,再往右,哎,是不是还没有挪过来的时候,他就变成一了呀?然后再往下发现他变成了负一。哎,这个怎么办呢? 如果我们希望左上角是一和一的话,就需要呢把这个偏移在这个地方做一下修正。我们这个地方算出来的最左边应该是负八或者负七,我们就给他加上一个 八,调整一下,他最左边是负七,加上八,那最左边是不是就变成一了呀? x 坐标把它放进来, y 坐标也这样来处理 好,我们再测试一下,看一看左上角是不是一,哎,上面居然变成了十五往下十四、十三,他从上 到下这个 y 呢是越来越小,那我们再改一下,怎么样把它反过来呢?可以用到一个小技巧了。我们在这个地方算出来之后呢,给他乘以一个负号,负一,哎,这时候他就跟我们的相匹配了,最左上角是一和一,这个呢是二一 三一,是不是就算出来了呀?好,接下来让我们的棋子挪到对应的位置上去就可以了。挪过去的时候呢,再算一遍就显得比较麻烦了。所以这个地方我们建立一个变量, 叫预览的落子列 x, 再来一个预览的落子行,第几行呢?对应的 y 请示 boss 一 字都不要这个小横线了。这里呢,我们就把它做到一个自制积木里面去,让它稍微独立一点,一副棋盘的哪个方格 计算的一瞬间完成。在这个过程中,我们把这个变量计算一下,将它位于哪一列计算出来,放进去。将它位于哪一行 计算出来,放进去。说话呢?放到最后面去。那这个应该在什么地方调用呢?肯定是在你重复执行的过程中调用。我们计算出来他在哪一行哪一列,是不是还得把我们的棋子 不用移到鼠标指向了,而是移到他对应的坐标上面去?我知道他在第几行,第几列,怎么算他的这个坐标呢?还需要一个公式,相当于把刚才反过来了,你在哪一列, 你首先要乘以二十三,得到了中间跨越到最左边的这一段距离,再加上你左边还有一定的偏移,再来一个加号, 这个地方负一百八十四,放进去 y 坐标正一百八十四, 再加上预览的行 y 乘以二十三,当然 y 是 越来越小的,所以这个地方应该减去行,越往下距离越大,上面的坐标呢,就应该减掉它。然后呢,我们可以验证一下,把它的具体的行和列说出来,像刚才一样把它放进去。来,我们测试一下。 好,最中间是八行,八列,最右边是十五列一行,十五列二行,这里是八列二行,没问题,左上角的变量呢,把它隐藏起来,看着更整齐一点。 本集的视频就到这里了,虽然代码不是很多,但是我们已经实现了基本的棋盘会子以及落子的功能,下一集我们来实现判断五子连线的功能。都看到这里了,别忘了点个赞哦,拜,下期见!

