资源描述
智能足球攻防战
— AI-RCJ使用浅例(2)
四川广安华蓥禄市初中(638602) 卢林飞
课题:我的小小守门员
教学目标:
1.知识目标:理解球和球员的半径的运用,思考守门员的基本守门策略,感受数学中在某条线上的“射影”的概念,运用探测函数和设置函数将我们的守门策略实现,写出一个智能比较高的守门员机器人。
2.技能目标:熟练运用图形化编程环境。能初步对问题算法分析并画出流程图。
3.情感目标:培养学生对程序编写的兴趣。
重点难点:
重点:对机器人快车的图形化编程环境操作加深理解。
难点:算法的流程表示和实现过程。
教学过程:
一、新课引入
前面的学习和下来的练习中,我们编写并完善了一个射手球员。在这一节课里,我们将分析并完成一个守门机器人的程序。
二、新课讲授
⑴、任务分析
组织学生合作讨论:
问题一:现实足球赛中的守门员是如何完成扑球和防守动作的?
(可能出现的答案:防止足球入网、抱住足球、破坏足球的运动轨迹、用身体挡住足球……)
问题二:上面提到的解决方法中,你认为在AI-RCJ中制作一个简单的足球守门员可以借用的策略有哪些?
(可能出现的答案:破坏足球的运动轨迹;用身体挡住足球……)
(根据出现的答案,作出方案简图,如图1)
图 1
问题总结:AI-RCJ中守门员在球门附近,主要靠自己的身体去撞击朝向球门区域运动的足球。它的运动策略是多种多样的,例如它沿图中a方向运动,它可以提前破坏足球的运动轨迹;如果它沿b方向运动,它体现了在最后的关键时刻“飞身扑救”的解围动作。在这本节课中,我们将分析沿b方向运动策略的守门方式,并编程完成它。
⑵、变量分析、画出流程图
①深入分析、完成变量表
在图1中细化分析沿b方向扑球的过程,如图2:
图2
图中画出了扑救球的过程,在这个过程中球的运动和守门员的运动用虚线圆表示。不难看出,大多情况整个过程中守门员和足球都在同一水平线上,如果一直保持这样,他们就会在K点相遇,这样,球就被守门员撞开了。因此,守门员运动的目标点y坐标始终要保持和足球的y坐标一致。守门员的x坐标,在这种运动方向下比较简单,通常守门员都在BK这样竖直的轨迹上运动,因此x坐标一直保持在球门靠前一点不变就行。x,y坐标都确定了,我们就可以使用“向某点移动”函数时时刻刻让机器人往当前计算所得的目标运动,守门员就一直保持扑救球的状态了。
小启示,在这种运动模式下,BK连线方向始终与球场坐标的Y轴方向平行,因此,才会出现在这种守门策略下,球员的坐标始终和球的坐标一致。在数学上,我们把“B叫作A到BK线上的射影”,同样“B’叫作A’到BK线上的射影”。
讨论:(强调上述标记着重号的两处。)
Q:为什么要保持在球门靠前一点的距离?
A:(因为球员其实是一个半径为30的圆,因此把这个距离设为略大于30,是为了守门员能够在球门附近灵活运动。)
Q:从“时时刻刻”这个词的表述中,你能判断这个控制程序我们可能会使用到什么结构?
A:(循环结构)
Q:如何让自己的守门员能够守在自己的球门外,通过以前的学习,你能想到需要运用什么吗?
A:(运用“自己进攻方向”来进行判断)
根据自己的分析,这个程序会运用到哪些变量,把你觉得要使用的变量记录到变量表中,画出流程图。
变量名
变量类型
变量作用
attackHeading
int
记录守门员球队进攻的方向
gap
double
记录守门员距离球门线的距离
myX
double
记录守门员的X坐标
myY
double
记录守门员的Y坐标
courtWidth
double
记录球员射门位置的X坐标
②完成流程图。
第一步:根据你所想到的过程画出简易流程图。
开始
获取attackHeading和courtWidth;设置gap
根据attackHeading判断,设置myX
不断获取足球的Y坐标给myY并控制守门员向(myX,myY)移动
第二步:逐步细化、小组合作完成详细流程图。
开始
获取attackHeading
获取courtWidth
attackHeading>0
(是否向右进攻?)
设置gap
gap => myX
courtWidth-gap => myX
是
否
条件始终为真
获取足球Y坐标,赋值给myY
朝向(myX,myY)运动
⑶、让学生动手操作,在“机器人快车”中完成并编译该守门机器人程序,在AIROBOT中新建一个该程序的比赛。
①打开图形化编程环境“机器人快车”,新建一个名叫“goalKeeper”的机器人保存在包“MyRobot”中。
图3 新建机器人窗口
②完成变量定义、在编程区逐步细化程序。
图4 变量定义窗口
按照详细的流程图拖动图标、设置参数,连接流程。(下面三个截图按照简易流程图的对应功能绘制)
图5 获取attackHeading和courtWidth、设置gap(这里使用的35,其他的也可以)
图6根据attackHeading判断,设置myX
图7 不断获取足球的Y坐标给myY并控制守门员向(myX,myY)移动
把以上三个部分整理连接,完成全部程序,截图如下:
③编译程序、在AIROBOT中同上节课所写的shooter 举行一场比赛。
比赛截图如下:
⑷、课堂练习
①在自己机器上用本课机器人同以前的机器人进行比赛,观察运行情况,总结是哪些语句起的作用。
②小组合作:观察本课机器人在比赛过程中还有哪些不足?分析引起这些不足问题的原因?怎样改进控制程序?(在对方进攻球员猛力推球时防守并不是都很成功,在球以很快的速度“飞”向球门时守门员会出现追不上球的情况;防守策略较为简单;多种策略的综合运用,提高守门员的智能化程度。)
⑸、课堂小结
在这节课里,我们通过编写一个具有简单防守功能的足球机器人,进一步加深理解了AI-RCJ中虚拟机器人的运行方式,通过对防守问题的理解和细化,选取了一个简单的防守策略尝试实现,在实现过程中,我们通过作图,感性的认识了“某个点在某条线上射影”的概念;通过分析,我们用流程形式逐步实现算法,并用图形化编程方式把算法表示出来。但是在比赛中,我们观察发现这个守门员的防守能力还不是很强,原因在于策略单一、智能化程度不高,希望同学们在下来的时间里通过小组合作的方式,把这个“小小守门员”完善成“身手不凡的守门员”。
展开阅读全文