宋超+徐敏??
摘要:本文把游戲案例引進中職C#課程的教學中,通過知識點的層層推進引導學生完成任務,游戲本身也給學生帶來了愉悅和成就感,實踐證明這樣的做法對學生掌握計算機語言和提高學習興趣有著積極的作用。
關鍵詞:C#課程;中職;游戲案例
一、 引言
目前各級各類學校在計算機專業(yè)中往往都開設C#課程,但這些課程的教學過程卻有著一定不足之處尤其是中職學校,游戲是學生的愛好,也是人類的天性,游戲中能讓人的心理得到“補償”從而體會到現(xiàn)實生活得不到的快樂,目前很多學者在進行C#課程改革時試圖引入游戲內(nèi)容以提高學生興趣。本文則通過一個基于C#語言的飛機游戲案例設計讓學生們逐步掌握C#的各個知識點,直觀的感受到游戲帶來的快樂從而更好的達到教學效果。
二、 游戲選題
眾所周知游戲之所以吸引人主要是因為它的激勵機制,所以在選擇游戲時必須考慮到這一點,同時鑒于學生的學習能力選取如坦克大戰(zhàn)、貪吃蛇、連連看、飛機等一些小程序作為課程的主要內(nèi)容,然而正所謂“麻雀雖小五臟俱全”,它涵蓋了大部分C#知識點。下面我們就以飛機游戲為例談一下如何設計教學案例。
三、 游戲設計
針對飛機游戲筆者在vs2012中設計了gameui.cs(界面類)、background.cs(背景類)、plane.cs(飛機類)、planelifes.cs(飛機生命類),planeboom.cs(飛機爆炸類),bullet.cs(子彈類)、enemy.cs(敵人類),enemybullet.cs(敵人子彈類),boss.cs,bossbullet.cs(boss子彈類),bosslife.cs(boss生命值類)等。按照學生接受知識的前后順序安排以下四個教學進階:
進階一:完成飛機背景的顯示與移動
首先設計背景類background.cs,背景類包含移動、顯示、播放音樂等方法。其次在界面類中添加背景對象及顯示方法。值得一提的是通過查閱資料筆者在初始化游戲界面時添加一段雙緩存代碼:public GameUI(){SetStyle(ControlStyles.
UserPaint,true);SetStyle(ControlStyles.AllPaintingInWmPaint,true);SetStyle(ControlStyles.DoubleBuffer,true);InitializeComponent();…這樣可以消除飛機游戲背景移動出現(xiàn)的“卡頓”現(xiàn)象,這個進階中涉及到基礎類的創(chuàng)建、類對象的實例化和調(diào)用還有雙緩存消除界面卡頓等知識。
進階二:利用鍵盤控制飛機的移動
首先,設計飛機類plane.cs和背景類類似需要定義位置、大小等變量、創(chuàng)建顯示、移動等方法,這里值得強調(diào)的是飛機類在初始化時需要添加與游戲界面GameUI 的KeyDown事件的關聯(lián)GameUI.gameform.KeyDown+=newSystem.Windows.Forms.KeyEventHandler(plane_move)其次設置在界面類中添加飛機對象如:public partial class GameUI:Form{public static planepl;…..public GameUI(){pl=new plane();}private void GameUI_Paint(object sender,PaintEventArgs e){pl.draw(g);}….
進階三:完成飛機子彈對象的加載和移動
首先設計飛機子彈類bullet.cs,它的成員變量、方法和飛機類相同,只是子彈類的位置x,y變量是根據(jù)飛機的坐標確定的所以把x,y設置成公共屬性如下:public class bullet{……..public int X{get {return x;}set {x=value;}}public int Y{get {return y;}set {y=value;}}而子彈移動方法為:public void bullet_move(){y=y-speed;if(y<0)GameUI.bl.Remove(this);}子彈向上飛如果越界就清除掉。其次游戲中子彈對象有很多個,需要用到泛型類的知識點如public static List
進階四:完成飛機被擊中、飛機生命值的設置
首先為飛機類添加如下代碼,值得注意的是判斷是否被擊中在比較中心點時可根據(jù)實際圖片的尺寸進行調(diào)整,在判斷擊中時也需使用變量記錄敵機子彈的編號以免發(fā)生飛機被同一子彈(敵機)連續(xù)擊中的情況。其次我們設置飛機的生命值類代碼:
if(planelifenum==0)…”you loss!”…
else{planelifesimage(Image)Resource1.ResourceManager.GetObject(“plane” +planelifenum.ToString());g.DrawImage(…)
在這個進階中判斷是否擊中是核心,由于文章篇幅這里略去,值得注意的是程序中添加了Resource類對象Resource1用于存放資源。
四、 學習反饋與小結(jié)
經(jīng)過一個學期游戲案例的教學實踐,學生對課程的掌握程度和滿意度有了一定提高如下表對15、16兩個年級按不同教學方式教授C#程序課學生滿意度對比,學生普遍反映以游戲作為教學案例有助于他們擺脫對于傳統(tǒng)的程序課的偏見更容易接受和消化知識,同時分進階的方式也可使得不同的學生都能學有所得。
本校15級、16級學生學習滿意度對比
參考文獻:
[1]劉冉.如何提高五年制高職計算機教學水平[J].考試周刊,2013.82.
[2]布萊克曼著,郭道寰翻譯.心靈面具[M].華東師范大學出版社2011
[3]藍敏.游戲項目驅(qū)動的高職院?!癈#程序設計”教學改革研究[J].高教學刊,2015年17期.