摘要 :從設(shè)計一個娛樂性小游戲出發(fā),闡述興趣發(fā)展的各階段對計算機語言學(xué)習(xí)的影響。教學(xué)實踐證明,游戲既能把學(xué)習(xí)者導(dǎo)向到有目的、有意義的積極學(xué)習(xí),又能為學(xué)習(xí)者的進一步學(xué)習(xí)提供動機。
關(guān)鍵詞:興趣;計算機語言;學(xué)習(xí)方法
興趣的本質(zhì)及其對學(xué)習(xí)的影響是一個古老而又嶄新的話題,它是教育理論和教育實踐所要解決的核心問題。由興趣引起對事物正確的、全面的認識,它既能導(dǎo)向有意義的學(xué)習(xí),又能促進知識的長期保持,并為進一步的學(xué)習(xí)提供動機。計算機語言課是一門較特殊的課程,需要理論與實踐相結(jié)合,“光說不練”,只能算是“紙上談兵”。對于該類課程,興趣無疑是最好的學(xué)習(xí)動力來源。很多同學(xué)在學(xué)習(xí)之初,或許是受“網(wǎng)絡(luò)高手”等“事跡”的影響而興趣盎然,但學(xué)習(xí)了一段時間之后,發(fā)覺還沒入門,更不要說學(xué)以致用,也就漸漸喪失了興趣。其實,興趣的發(fā)展也有一個過程:興趣的培養(yǎng)、興趣的維持、興趣的迸發(fā)。
1興趣的培養(yǎng)
興趣的培養(yǎng),首先是興趣點的發(fā)掘,然后是可行性分析論證,最后是著手實施。興趣點的發(fā)掘,即興趣點在哪?很多同學(xué)不約而同地選擇了兩個方面:娛樂、實際應(yīng)用。既然誰都喜歡娛樂,那就先從娛樂開始。很多電腦高手,也是從娛樂開始的?,F(xiàn)在,身邊可供娛樂的東西,從手機、電腦自帶的小游戲,到購買、下載的大小游戲,再到網(wǎng)絡(luò)游戲,可謂數(shù)不勝數(shù)。現(xiàn)在就從超小的、常見的游戲著手,比如猜數(shù)字、24點、五子棋、紙牌接龍、掃雷、拼圖等[1]??尚行哉撟C?可以說參照任何一本教材均可實現(xiàn)上述小游戲。不信?請看圖1。
以Visual Basic語言為例,在圖1中所看到的控件,均是VB控件工具箱中的標準控件。先拋棄輔助功能:選圖、撤銷、重復(fù)等,只考慮主要功能,那就剩圖的分割及移動了。圖的分割就是分割成多少份小圖來拼成大圖,分割效果如圖2所示,先簡單點,考慮3×3的九宮格的拼圖。著手第一步實施,先做界面。圖1中的大圖實際上是由9個小圖構(gòu)成,可用9個Image控件,如圖3所示,為了方便控制,減少代碼行數(shù),使用了控件數(shù)組。
2興趣的維持
興趣的維持也需要堅持,千萬不能遇到一點點的困難就想放棄。在可行性論證可行的前提下,要堅信:既然別人能做到的,我也一定能行!拼圖的“難點”不外乎以下幾個方面。
2.1圖的分割
圖的分割就是把一幅完整的圖分割成幾個小塊的子圖,凡是接觸過拼圖游戲的人應(yīng)該都理解。仔細一想有多種方法可以實現(xiàn):Windows系統(tǒng)自帶“畫圖”工具,Photoshop等圖形工具軟件,API函數(shù)等。當然,最方便的還是VB系統(tǒng)自帶的用于圖形分割的PictureClip控件[2],只需用到這個控件的3個屬性:Picture、Rows、Cols。Picture屬性是存放要分割的圖,Rows/Rols屬性則是設(shè)置要分割的行、列數(shù)目,即要分成幾個子圖。
2.2圖的裝載
從分割的9個子圖中取前8個分別載入Image控件數(shù)組的前8個中,最后一個保留空白,如圖4所示。
圖4加載子圖
為了保證隨機性,算法如下:
1) 產(chǎn)生8個無序且不同的0~7的隨機整數(shù)并依次存入數(shù)組arrTemp中。
2) 循環(huán)放置子圖:
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種。具體是,第一行的子圖不能向上移動,最后一行的子圖不能向下移動,第一列的子圖不能向左移動,最后一列的子圖不能向右移動。如何控制呢?假設(shè):intRows=3:intCols=3,那么Image控件數(shù)組第一行的index值滿足index
那么,相應(yīng)的移動處理就是:
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
當單擊要移動的子圖或按上下左右的方向鍵時,分別調(diào)用上述過程即可。如下面是對上下左右的方向鍵控制處理方法。
Sub Form_KeyUp(KeyCode As Inte