基于兴趣的计算机语言学习方法探索
2010-12-31苏小虎高宗梅
计算机教育 2010年24期
摘要 :从设计一个娱乐性小游戏出发,阐述兴趣发展的各阶段对计算机语言学习的影响。教学实践证明,游戏既能把学习者导向到有目的、有意义的积极学习,又能为学习者的进一步学习提供动机。
关键词:兴趣;计算机语言;学习方法
兴趣的本质及其对学习的影响是一个古老而又崭新的话题,它是教育理论和教育实践所要解决的核心问题。由兴趣引起对事物正确的、全面的认识,它既能导向有意义的学习,又能促进知识的长期保持,并为进一步的学习提供动机。计算机语言课是一门较特殊的课程,需要理论与实践相结合,“光说不练”,只能算是“纸上谈兵”。对于该类课程,兴趣无疑是最好的学习动力来源。很多同学在学习之初,或许是受“网络高手”等“事迹”的影响而兴趣盎然,但学习了一段时间之后,发觉还没入门,更不要说学以致用,也就渐渐丧失了兴趣。其实,兴趣的发展也有一个过程:兴趣的培养、兴趣的维持、兴趣的迸发。
1兴趣的培养
兴趣的培养,首先是兴趣点的发掘,然后是可行性分析论证,最后是着手实施。兴趣点的发掘,即兴趣点在哪?很多同学不约而同地选择了两个方面:娱乐、实际应用。既然谁都喜欢娱乐,那就先从娱乐开始。很多电脑高手,也是从娱乐开始的。现在,身边可供娱乐的东西,从手机、电脑自带的小游戏,到购买、下载的大小游戏,再到网络游戏,可谓数不胜数。现在就从超小的、常见的游戏着手,比如猜数字、24点、五子棋、纸牌接龙、扫雷、拼图等[1]。可行性论证?可以说参照任何一本教材均可实现上述小游戏。不信?请看图1。
以Visual Basic语言为例,在图1中所看到的控件,均是VB控件工具箱中的标准控件。先抛弃辅助功能:选图、撤销、重复等,只考虑主要功能,那就剩图的分割及移动了。图的分割就是分割成多少份小图来拼成大图,分割效果如图2所示,先简单点,考虑3×3的九宫格的拼图。着手第一步实施,先做界面。图1中的大图实际上是由9个小图构成,可用9个Image控件,如图3所示,为了方便控制,减少代码行数,使用了控件数组。
2兴趣的维持
兴趣的维持也需要坚持,千万不能遇到一点点的困难就想放弃。在可行性论证可行的前提下,要坚信:既然别人能做到的,我也一定能行!拼图的“难点”不外乎以下几个方面。
2.1图的分割
图的分割就是把一幅完整的图分割成几个小块的子图,凡是接触过拼图游戏的人应该都理解。仔细一想有多种方法可以实现:Windows系统自带“画图”工具,Photoshop等图形工具软件,API函数等。当然,最方便的还是VB系统自带的用于图形分割的PictureClip控件[2],只需用到这个控件的3个属性:Picture、Rows、Cols。Picture属性是存放要分割的图,Rows/Rols属性则是设置要分割的行、列数目,即要分成几个子图。
2.2图的装载
从分割的9个子图中取前8个分别载入Image控件数组的前8个中,最后一个保留空白,如图4所示。
图4加载子图
为了保证随机性,算法如下:
1) 产生8个无序且不同的0~7的随机整数并依次存入数组arrTemp中。
2) 循环放置子图:
For i = 0 To 7
imgPic(i).Picture = PicClip. GraphicCell (arrTemp (i)-1)
Next i
3)imgPic (8).Picture = LoadPicture("")
2.3图的移动
每个子图只有上移、下移、左移、右移等4个移动方向中的2~4种。具体是,第一行的子图不能向上移动,最后一行的子图不能向下移动,第一列的子图不能向左移动,最后一列的子图不能向右移动。如何控制呢?假设:intRows=3:intCols=3,那么Image控件数组第一行的index值满足index
那么,相应的移动处理就是:
Sub PicMove(index)
i = index
If i < intRows Then'第一行:不能上移
'第一行:不能上移
Else'不是第一行:均可上移
If Image1(i-intRows).Picture = LoadPicture("")Then
Image1(i - intRows).Picture = Image1(i).Picture
Image1(i).Picture = LoadPicture("")
End If
End If
……'最后行、第一列、最后列的处理方式与此类似,代码略。
End Sub
当单击要移动的子图或按上下左右的方向键时,分别调用上述过程即可。如下面是对上下左右的方向键控制处理方法。
Sub Form_KeyUp(KeyCode As Inte