栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > 学术 > 人文期刊 > 电脑报

Scratch小游戏

电脑报 更新时间: 发布时间: 学术归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Scratch小游戏

陈新龙

五子棋相信大家都玩过,当黑子或者白子横、竖、斜连成五子,游戏结束,获得胜利,但是如何在编程中根据五子棋的规则实现胜负判定还是很难的,更别说实现与人机对战功能了。作为初学者我们可以先实现一个小目标,等掌握更多编程知识后再向更高难度进发。五子棋可以分为人机对战和人人对战两种形式,人机对战需要用到复杂的算法,我们就先尝试制作人人对战,先完成棋盘的绘制,两个玩家用黑子、白子交替落子。至于判断哪一方的五子先连成一条直线也可以放在以后再来想办法完成。

目标明确后,再来分析目标明确需求。需要先完成五子棋盘的绘制,接下来完成黑(白)子跟随鼠标运动,棋子的圆心要落在棋盘的交叉点上,双方交替落子,一个交叉点只能落一颗棋子,不能在棋盘外落子(图1)。

1. 绘制棋盘

棋盘由黑色的竖线和横线交叉组成。在舞台上找到一个合适的起始点,画一条竖线,通过循环次数控制线的数量,用继续平移X坐标的方法画出剩下的线,画横线只需交换X和Y轴的变量即可完成。

新建变量“画笔坐标”来控制绘制线条X轴或Y轴的起点,画笔颜色设为黑色。根据舞台大小设置两条线相隔距离为20像素比较合适,这样画16条线就可以铺满舞台。找一个合适的起始点(-198,-160),向上画一条300长的竖线(20×15=300),将“画笔坐标”增加20,下一条线的起点就是在X轴方向平移20。循环16次,画出全部竖线。横线和竖线是一样的画法,只需要调换XY坐标的变量。完成棋盘后广播“黑子”,等待执黑先行落子(图2)。

2. 棋子编程

接下来解决黑子和白子的落子问题。在造型中绘制一黑一白兩个圆形棋子作为角色。我们使用画笔的图章功能实现落子,图章功能与克隆不同点在于只在当前位置画下一个角色的图形,而没有继承角色的代码,且不像克隆体有数量上限。

这部分的难点是落子的位置,落子需要在棋盘交叉点的中心,因为鼠标不可能精准地落在交叉点中心,所以需要把这个交叉点范围内的落子经过数学计算处理。在绘制棋盘时已经知道每个交叉点的坐标都是20的整数倍,把两个交叉点间距离平分则一个交叉点对应半径为10的圆形区域。这样我们就将需求转化成一个数学取整的问题了。

假设交叉点坐标为(X,Y),鼠标的坐标可能是(X+a,Y+b),且-10

比如,假设交叉点为(40,80),鼠标指针为(43,82)按照上述公式计算可以得出最后的落点位置是交叉点(40,80)。

解决了落子问题,接下来有几个问题需要大家去思考一下,如何保证落下的棋子不会落在棋盘外面呢?可以根据棋盘的坐标范围做一个判断,超出不能启动图章功能(图4)。

最后不要忘记了还有最为关键的胜负判定,大家可以思考一下,通过什么方式可以实现,这个知识以后我们再讲。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/xueshu/238515.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号