張祎
摘 要 C語言是計算機專業的一門專業基礎課,對于學生編程能力的培養具有十分重要的意義。而由于編程類課程具有難度較大、較為枯燥的特點,學生在學習中往往會出現缺乏興趣的情況,并因此使學習效果受到較大的影響。對此,就需要開創新穎的教學方式,提高學生的學習興趣。在本文中,將就游戲編程在C語言教學中的應用進行一定的分析。
【關鍵詞】游戲編程 C語言教學 應用分析
1 引言
在計算機課程的教學中,C語言是一門非常重要的編程類基礎課程,但在實際教學中,卻經常能夠聽到學生對該門課程的抱怨,感覺知識枯燥、難學等。如何解決這個問題呢?我們都知道,C語言是一門具有較強實踐性的課程,如果教師更多的強調理論教學,那么不僅很難使學生對理論知識產生更深的印象、不能夠將理論知識轉化為實踐經驗,對于學生的學習興趣也有比較大的影響。將學生對C語言的學習興趣進行最大程度的激發,成為了非常重要的一項教學目標。
在此情況下,教師可以充分結合C語言的特點,通過將游戲編程引入課堂教學,將C語言這門課程同“玩”之間建立聯系,既能幫助學生對程序編寫產生興趣、積極投入的同時又能掌握相關的知識。對此,我們以較為簡單的“猜數字”游戲為例對游戲編程在C語言教學中的應用進行簡單的分析。
2 游戲編程在C語言教學中的應用
在游戲編程之前,需要先對“猜數字”這個游戲的規則做好整理與掌握:
(1)在進入到游戲之后,系統會以隨機的方式生成4個0~9間的數字;
(2)玩家任意輸入0~9之間的4個數字;
(3)系統將玩家所輸入的數字同系統之前生成的數字進行比對、判斷,以字母A對位置、數值都正確的數字個數進行表示,以字母B對位置不正確、但數值正確的數字個數進行表示,如反饋信息為4A0B,那么則表明玩家所猜的四個數字全對,游戲成功,否則本次游戲失敗。
本游戲具體實現過程分析如下:
2.1 系統隨機數生成
要想對游戲中的4個隨機數進行生成,則需要使用到隨機函數random。對此,教師可以先將該函數的作用以及使用方法向學生進行簡單的講解,也并不需要非常深入,僅僅使學生能夠掌握10以內隨機數的生成即可。為了便于后續的比較,這4個隨機數則需要在生成后放在一個數組當中,本例中我們以a作為存放4個隨機數的數組名。生成隨機數的代碼為:
for(i=0;i<4;i++)
a[i]=random(10);
2.2 隨機數不重復的控制
要想使系統所生成的隨機數具有不重復的特點,教師可以先安排學生共同進行討論,并在討論的過程中適當給予一定的提示:對于系統生成的這幾個隨機數來說,其值是不可控的,即在生成時我們無法做好數字重復性的控制。但在生成之后,我們則可以通過一定編程技巧的應用來選擇使用或者不使用這幾個隨機數。當教師提到此處時,部分較為敏銳的學生則能夠發現功能實現的要點,即將剛才生成隨機數的代碼段放入do……while結構中,如果經過判斷發現這4個隨機數中具有重復情況,則需要通過循環,重新生成4個隨機數并進行再次判斷,直到這4個隨機數互相之間不再重復。
那do……while結構的循環判斷條件又是什么呢?此時,教師則可以對學生進行適當的提示:如何對2個數字間是否存在重復情況進行判斷?如何對3個以及4個數據間是否存在重復進行判斷?因此,本游戲中不相同數字生成的循環判斷條件可寫為:
a[0]==a[1]||a[0]==a[2]||a[0]==a[3]||a[1]==a[2]||a[1]==a[3]||a[2]==a[3]
此時,該游戲的“系統生成0-9間隨機數字、且這4個數字互不相同”的部分已經編寫完畢。
2.3 用戶輸入數據判斷
我們用數組b存放用戶任意輸入的4個數。根據游戲規則,在本游戲中共具有兩種反饋信息,即a同b中位置與數值都相同元素的個數,使用字母A表示;另一種則為a同b中數值相同、但位置不同元素的個數,使用字母B表示。為了保證程序在實際應用中能夠正確運行,則需要通過循環結構的應用對該種統計目標進行實現。首先,需要對A的統計情況進行研究。由于已知兩個數組A與B具有相同的元素個數,且在2個數組中序號相同的元素間有對應關系。對此,根據游戲規則,只要將這兩組數字中具有相同位置的元素進行比較即可,其代碼為:
int A=0;
for(i=0;i<4;i++){
if(a[i]==b[i])
A + + ;
}
而最終A的值就是a與b兩個數組中位置相同且數值也相同元素的個數。
之后,則需要對B進行統計。同A相比,對B進行統計相對麻煩一些。在對該值進行求解時,需要涉及到兩個問題:第一,需要將a中元素同b數組中的每一個元素都逐個進行比較;第二,在經過第一輪比較后、如果發現兩個元素具有相等的值,則需要進一步對其在數組中的位置進行比較,看位置是否不相同。只有當上述兩個條件都得到滿足之后,才能夠對游戲中“數值正確、位置不正確”的概念進行體現。在對B值進行統計時,由于需要對數組中的不同元素以逐個的方式進行比較,則需要對雙重循環進行應用,其代碼為:
int B=0;
for(i=0;i<4;i++){
for(j=0;j<4;j++)
if((a[i]==b[i])&&(i!=j))
B + + ;
}
最終獲得的B值就是a同b相比具有相同數值、但位置不相同元素的個數。
該游戲在知識點方面涉及到C語言的選擇、循環以及數組等,難度不大,非常適合C語言的初學者進行編寫。
3 結束語
C語言是計算機教學中非常重要的一門基礎課程,對于學生的編程能力培養具有十分積極的意義,而在現今學生實際學習中感覺枯燥、缺乏學習興趣的情況下,以游戲編程方式進行教學則是非常有效的一種方式。在上文中,我們雖然只是以一個猜數的小游戲為例對游戲編程在C語言教學中的應用進行了分析,但只要在實際教學中我們能夠將此方式推而廣之,靈活運用,就可獲得更好的教學效果。
參考文獻
[1]王鵬.C語言語言教學的游戲方法探析[J].中國科教創新導刊,2013(23):174-174.
[2]彭三城.案例教學方法在C語言語言教學中的應用研究[J].肇慶學院學報,2013(02):17-21.
[3]周小云.C語言的快樂教學之旅[J].課程教育研究,2013(02):156-156.
[4]倪建新.基于C語言的游戲開發教學平臺的設計與實現[J].電腦知識與技術,2012(35):102-103.
作者單位
雅安職業技術學院 四川省雅安市 625000