基于爱恩斯坦棋的程序设计课程教学案例设计
第 18 期2012 年 9 月 25 日
计算机教育
Computer Education
75
文章编号:1672-5913(2012)18-0075-03中图分类号:G642
基于爱恩斯坦棋的程序设计课程教学案例设计
王亚杰,王晓岩,邱虹坤,徐 晗
(沈阳航空航天大学工程 训练中心,辽宁 沈阳 110136)
摘 要:针对部分学生对程序设计课程缺乏兴趣的教学状况,在分析与研制爱恩斯坦棋的基础上,提出一种新的教学模式,即将博弈程序作为程序设计课程的教学案例,并以VB 课程为例进行阐述。关键词:爱恩斯坦棋;计算机博弈;VB 课程;教学案例
1 背景
为提高学生勇于探索的创新精神和善于解决问题的实践能力,《国家中长期教育改革和发展规划纲要2010—2020年)》提出全面实施素质教育。随着计算机技术的发展与普及,利用计算机解决问题的能力是高校各专业大学生必须具备的重要能力之一。目前各高校都把计算机高级语言程序设计类课程(C、VB 、VF 等) 作为很多专业大学生必修的计算机技术类基础课程,由于该课程普遍设置在大学一年级,学生既没有学习基础,也没有与相应专业接合,所以一直以来学生对该课程的学习兴趣不是很浓,老师们在教学中也经常因为不能有更好的案例引发学生的学习兴趣而苦恼,虽然也会结合一些案例,但都只能调动学生短时兴趣,不能引发学生深入挖掘的积极性。
特别是学生网游上瘾一直困惑着家长和教育工作者,用什么引导、牵引青年学生远离那些对提高科学素养没有实际意义的网游呢?多个高校的实践证明,计算机博弈能迎合青年学生的愉悦、冒险、好奇和高对抗需求,让他们在快乐中分析、编程、斗智,既增长了知识,也增强了能力;既培养了计算机实践与创新能力,也培养了科研素质和创新热情。
计算机博弈(Computer Games,亦称机器博
弈) 就是让计算机能够像人类一样思维。下棋是超越各种专业领域知识局限的智力游戏,深受广大青少年的喜爱。计算机博弈以青年学生喜闻乐见的、娱乐性强的、高对抗性的棋牌为研究载体,它是人工智能领域的重要研究方向[1-2]。笔者开发了爱恩斯坦棋的竞赛平台,将程序中的部分内容作为教学案例、实验内容、课设题目应用到VB 课程中,巧妙地引导青年学生提前接触、理解智能技术,调动了学生的学习热情与研究兴趣。在VB 教学实际中采用任务驱动与实例相结合的形式,先提出总体任务,再将任务分解成模块,然后结合相关知识点,以实例的形式完成各部分设计,收到了较好的效果。
2 爱恩斯坦棋概述
爱恩斯坦棋(EinStein Würfelt Nicht!,以下简称EWN) 由Ingo Althöfer发明于2004年[3],是一个相当新的棋类游戏,目前是国际计算机奥林匹克大赛竞赛项目,并于2012年首次作为我国大学生计算机博弈大赛的竞赛项目[4]。该棋的棋盘为5×5的方格形,方格为棋位,共25个棋位,左上角为红方出发区;右下角为蓝方出发区,红蓝方各有6枚方块形棋子,分别标有数字1—6,开局时双方棋子在出发区(三角形)的棋位可以
作者简介:王亚杰,女,教授,研究方向为图像融合、机器博弈。
计算机教育
76
Computer Education2012
随意摆放,见图1。一格;如果在棋子走动的目标棋位上有棋子,则要将该棋子从棋盘上移出(吃掉);率先到达对方出发区角点或将对方棋子全部吃掉的一方获胜。
Red1Red6Red3
Red4Red5
ଖᰤߔ
Red2
Blue5
Blue3Blue2
Blue4Blue6Blue1
EWN 是一种集战术、战略和机会于一体的棋类项目,例如,有时吃掉本方棋子也是一种策略,因为可以增加其他棋子走动的机会与灵活性,该棋种特别具有挑战性,容易引发学生的好奇与兴趣。
图1 EWN 的竞赛平台
EWN 的下棋规则:双方轮流掷骰子,然后走动与骰子显示数字相对应的棋子;如果相对应的棋子已从棋盘上移出,便可走动大于或小于此数字的并与此数字最接近的棋子;红方棋子走动方向为向右、向下、向右下,每次走动一格;蓝方棋子走动方向为向左、向上、向左上,每次走动
实例序号
123456
实例内容
2 课堂教学实例设计
案例式教学法[5-7]在应用中实例的选择很重要。在VB 教学中,笔者以EWN 为载体设计了一些教学实例,将知识与实例有机融合,寓教于乐,极大地调动了学生的积极性和自主性,部分实例如表1所示。
涉及的主要知识点
选择结构、随机函数、文本框前景颜色设置
表1 基于EWN 的实例内容与对应的知识点
掷骰子,在文本框中产生随机数,分别以红、蓝交替显示数字颜色。在棋盘上装载红、蓝两方的棋子,并初始化棋盘数组ChessBoard$( 5,5),每个数组元素以字符串类型描述一个棋子,见图1中的右侧部分。已知棋盘数组,编写判断输赢的子过程。
按指定的高度和宽度在窗体上创建EWN的棋盘界面,画出5×5的方格。循环结构、画线方法
循环结构、控件数组、字符串数组子过程、选择结构、数组
设计一个计时器,每隔一秒触发,记录双方比赛用时,并显示棋盘数组
计时器、数组、循环嵌套输出数组
状态,见图1中的右侧部分。使用鼠标任意拖动棋子的位置。
MouseUp、MouseDown、DragDrop事件的综合使用
由于篇幅有限,下面只列出前2个实例的部分代码。
实例1(部分代码):
ClickNumber = ClickNumber + 1 'ClickNumber设为窗体级变量,表示命令按钮(掷骰子) 的单击次数。
If ClickNumber Mod 2 = 1 Then Text1.ForeColor = RGB(255, 0, 0)Else
Text1.ForeColor = RGB(0, 0, 255)End IfRandomize
Die = Int(Rnd() * 6 + 1) '产生1-6之间的随机数
Text1 = Die
实例2(部分代码):
For i = 0 To 5 'a,b 为每个棋盘方格的高度和宽度,距离窗体左上角(500,500)的位置画棋盘。
Form1.Line (500, 500 + i * a) - (500 + 5 * a, 500 + i * a) ' 画横线
Form1.Line (500 + i * b, 500) - (500 + i * b, 500 + b * 5) ' 画竖线
Next i
3 上机实验内容设计
上机实验的目的是为了更好地理解相应的知识点,提高学生简单程序设计与调试能力,所设计的内容要有一定的针对性和综合性,现
第 18 期
教育与教学研究
主要功能包括:
77
举例如下。
实验1 在棋盘数组中查找是否有蓝方所掷的骰子数。部分代码如下:
If Color=”Blue ” Then For i = 1 To 5 For j = 1 To 5
If Left(ChessBoard(i, j), 4)=”Blue ” and Val(Right(ChessBoard(i, j), 1))=die Then
Tag = 1 '有 die变量所示编号的蓝棋子
End If Next j Next iEndIf
该题目将选择、循环和数组知识融合在一起,锻炼了学生综合运用知识的能力。限于篇幅,下面仅列出实验题目而不再给出代码。
实验2 求棋盘中剩余的棋子被掷的概率。实验3 设计实现吃子(卸载) 的子过程,并同步更新棋盘数组。
1)基于EWN 规则预先手动绘制棋盘并摆放红蓝方棋子(可使用命令按钮控件数组) ;
2)设计程序实现用鼠标拖动方式轮流移动红、蓝方棋子;
3)在拖动过程中能实现吃子;
4)移动棋子后,自动更新棋盘数组(ChessBoard());
5)每移动一个棋子能自动判断输赢。题目3 简单的EWN 对弈策略设计。主要功能包括:
1)预先创建棋盘数组ChessBoard$(5,5) ,并按EWN 规则初始化数组元素;
2)以红方代表人类一方,手工输入要移动的棋子和移动方向,蓝方代表机器方,自动产生移动策略;
3)掷骰子可人工操作或用随机函数编程实现;4)重点编制子过程 Sub SelectAction(ChessBoard$(),ByRef Die%, ByRef Direction$),给定棋盘数组(ChessBoard())和骰子数(Die),通过一定算法求出蓝方要移动的棋子编号(Die)和方向(Direction),实现简单的人机对弈。
以上3个题目综合了VB 很多重要的知识点,并且3个题目的功能又有一定的交叉,特别适合同学间协作研究,既能提高大学生计算机实践与创新能力,又能增强团队协助意识。
4 课设题目设计
课程设计的目的是为了让学生运用所学的知识解决一个较综合的具体问题,以学习程序设计方法并提高程序设计能力,共2周时间,要求所设计的题目一定要体现综合性和完整性。作者基于EWN 提出了3个课设题目,由3个同学分别完成,最后综合成一个简单的EWN 竞赛平台,并可实现简单的人机对弈。
题目1 设计EWN 的棋盘界面。主要功能包括:
1)程序启动时自动绘制棋盘。2)开局。按规定位置自动装载棋子。3)先手选择。选择红蓝哪一方为先手。4)新开始。计时,并激活“掷骰子”命令按钮。5)掷骰子,随机产生一个1~6之间的数。说明:2)—4)功能要通过菜单来实现。题目2 设计基于EWN 规则的棋子移动。
5 结语
计算机作为一种现代通用的智能工具,已深入应用到各个专业领域,目前很多专业都需要利用计算机来解决具体问题,计算机应用能力已成为现代大学生必备的能力之一,是全员所需。计算机博弈是将计算机技术和智能技术相结合而引入博弈项目,EWN 是一种集战术、战略和机会于一体的博弈项目,即有趣味性又有科学研究意义,特别容易引发大学生的研究兴趣,进而激发创新潜能。
(下转第81页)
第 18 期
教育与教学研究
表1 不同学习阶段机器人平台的选择
81
机器人平台乐高机器人NXT智能车模
Pioneer3-DX机器人通用工业机器人
针对对象大一大二、大三大三、大四大三、大四
可使用机器人进行实验的课程
高级语言程序设计、电路基础
模拟电子技术、数字电子技术、自动控制原理、智能技术、嵌入式系统
现代控制论、数字信号处理、数字图像处理机器人学导论
使用目的
认识专业、提升兴趣综合运用理论基础知识专业知识提升专业知识提升
4 结语
智能科学与技术专业的特点是多学科交叉融合。将机器人平台应用到智能专业核心课程中,结合课程的学习,丰富学生实践环节、提高学习兴趣。这些机器人平台在软硬件结构、适
参考文献:
用环境、关键技术知识等方面均有较大不同,想要在本科教学中充分发挥它们的作用,需在今后的教学中从教学内容设计、实验安排、作业布置等方面进行积极探讨,努力将机器人技术与智能课程核心内容有机融合,实现教学改革与创新。
[1] 方勇纯, 刘景泰. 南开大学“智能科学与技术”专业教学体系与实验环境建设[J]. 计算机教育, 2009(11): 21-25.[2] 方勇纯. 智能科学与技术专业毕业生情况分析与专业建设[J]. 计算机教育, 2010(19): 51-54.[3] The LEGO MINDSTORMS NXT[EB/OL]. [2012-07-01]. http://mindstorms.lego.com.[4] 许林. 智能科学与技术专业本科实践课程的建设[J]. 计算机教育, 2011(15): 120-123.
[5] Pioneer P3-DX[EB/OL]. [2012-07-01]. http://www.mobilerobots.com/ResearchRobots/PioneerP3DX.aspx.[6] RH6弧焊机器人[EB/OL]. [2012-07-01]. http://www.siasun.com/products-view-view.aspx?id=351#.
(编辑:赵廓)
(上接第77页)
很多学生在学习高级语言程序设计课程时,还不具备编程基础,面对这种全新逻辑思维的课程,一些学生感觉枯燥,没有学习兴趣。笔者提出了基于EWN 博弈的实践教学形式,将EWN 的部分设计内容作为教学实例、上机实验内容和课设题目,由浅入深,循序渐进,很好地调动了大部分学生的学习兴趣,并激发了一部分学生深入挖掘的积极性。目前,在笔者进行教学实验的班级中,已自发组成了多个代表队,正在开展深
参考文献:
[1] [2] [3] [4] [5] [6] [7]
入的EWN 和其他项目的博弈研究,准备参加全国大学生计算机博弈大赛。
笔者希望文章能对计算机语言课的教学提供一种参考,不仅局限于EWN ,其他棋类项目也可应用于教学中。同时也希望各高校能积极开展计算机博弈活动,以赛促学,寓教于乐,寓教于研,不仅可以激发学生的学习与科技热情,而且对于提高学生的计算机水平、创新意识和科研能力,以及把学生从一般的网游中解脱出来都有积极的作用。
徐心和. 从计算机博弈到机器人足球: 人工智能长期而持续的挑战[J]. 机器人技术与应用, 2010(1): 10-13.徐心和, 王骄. 中国象棋计算机博弈关键技术分析[J]. 小型微型计算机系统, 2006, 27(6): 961-969.
Althöfer, I. On the origins of EinStein würfelt nicht![EB/OL]. [2012-07-01]. Http://www.althofer.de/origins-of-ewn.html.王骄, 徐心和. 计算机博弈: 人工智能的前沿领域: 全国大学生计算机博弈大赛[J]. 计算机教育, 2012(7): 14-18.肖潇, 贺细平. C语言程序设计教学探索[J]. 计算机教育, 2011(5): 65-68.
步登辉. 案例式教学法在程序设计课程教学中的应用[J]. 教育与职业, 2009(2): 148-149.
龚沛曾, 杨志强, 陆慰民, 等, 案例教学法在“Visual Basic 程序设计”课程中的应用[J]. 计算机教育, 2004(5): 62-63.
(编辑:彭远红)