?

基于幻影圍棋的C語言課程教學案例設計

2016-12-19 12:30李飛王亞杰尹航孫玉霞
計算機教育 2016年10期
關鍵詞:C語言程序設計計算思維落地

李飛+王亞杰+尹航+孫玉霞

摘要:針對計算思維“落地”的實際需要,結合計算機程序設計課程教學培養目標的要求,提出基于幻影圍棋的案例式教學模式,并以C語言程序設計課程為例,闡述案例的設計方法。

關鍵詞:幻影圍棋;計算思維“落地”;C語言程序設計

0引言

隨著社會信息化的不斷發展,其他學科與計算機學科的融合越來越密切,對大學生計算機應用能力的要求也越來越高,用計算機解決問題的能力逐漸成為衡量大學生素質的標準之一。在我國,理工院校均開設計算機程序設計(C、VB、C#等)的必修課,它是繼大學計算機基礎之后的另一門計算機主干基礎課。通過本課程的學習,使學生正確理解并基本掌握面向過程(或者面向對象)程序設計方法,培養學生的程序設計和上機調試能力以及用計算機處理實際問題的思維方式和能力,為后續專業課程實踐和今后的工作提供相關知識。

近年來,以計算思維為核心的計算機基礎課程教學改革在各個高校廣泛開展,首先要做的具體工作就是解決計算思維能力培養的“落地”問題,即要將計算思維能力培養落實到具體課程內容與教學過程中去。啟發式教學和案例式教學就是計算思維“落地”的具體方法。

計算機博弈(Computer Game)也稱為機器博弈,是指根據各種棋類游戲規則,讓計算機模擬人的思維給出招法,與人或者另一臺計算機進行對弈。計算機博弈項目既有趣味性,又有策略性和對抗性,深受廣大青年學者的喜愛,并成為人工智能領域一項重要的研究課題。筆者研究幻影圍棋項目多年,在文獻[4]的啟發下,將程序中的部分基礎內容作為C語言程序設計的教學案例和實驗內容,制作C語言課程設計題目,讓學生在游戲中體會學習的樂趣,調動了學生的學習興趣,取得了良好的學習效果。

1幻影圍棋概述

幻影圍棋(Phantom go)是一項歐洲的棋類游戲,因為下棋規則是基于圍棋,采用9×9的圍棋棋盤,但是又在圍棋基礎上加入了信息不完全的限制,即下棋雙方均無法獲得對方落子的位置,有中間裁判可以看到雙方落子位置,進而給予雙方操作是否合法或者是否提子的指令來進行比賽,故稱為幻影圍棋。它是國際計算機奧林匹克大賽的競賽項目,也是我國大學生計算機博弈大賽的競賽項目,是一種集戰略、戰術和機會為一體的棋類游戲項目。如圖1所示,左邊是黑方棋盤,中間是白方棋盤,右邊是裁判棋盤。裁判的棋盤相當于一個9×9的圍棋棋盤,黑方棋盤中的白子是通過裁判的返回信息判斷出的部分棋子落子位置,信息是不完全的。這種不完全的信息,既增加了對弈的難度,同時也增加了趣味性和機會性。

2課堂教學實例設計

案例教學法是計算思維“落地”的最直接方法,一個好的案例在教學中會起到事半功倍的效果。筆者在指導幻影圍棋博弈項目的過程中,總結了一些適合C語言教學的例子,將C語言的知識與游戲程序有效融合,取得了較好的學習效果,部分實例見表1。

由于篇幅有限,下面只列出兩個實例的部分代碼。

實例1:幻影圍棋的界面設計

在C語言程序設計課程教學中,程序輸出運行結果都是DOS命令行式的,表示一個圍棋棋盤在初學者眼里似乎是不可能的。該實例利用輸出各種線條組合來表示一個棋盤,使學生對C語言程序另眼相看。由于方便顯示,我們用表格表示棋盤,每一個單元格表示實際棋盤上的交叉點。部分代碼如下:

實例2:初始化棋盤數據結構

在該實例中,利用了結構體類型定義變量表示落子的位置,用二重循環結構控制二維數組的賦值。

3上機實驗題目設計

上機實驗是C語言程序設計課程的重要教學環節,學生通過上機練習才能更好地掌握和理解C語言各個知識點,鍛煉并提高他們的程序設計和程序調試能力。設計實驗內容一定要有針對性和綜合性,而幻影圍棋程序綜合運用C語言很多知識點,不僅滿足上述要求,而且還增加了趣味性,使實驗效果更好。

例如:實驗1:統計棋盤上白子的數目和黑子的數目,部分代碼如下:

該實驗中將循環結構、選擇結構、二維數組3個知識點有機地融合,又實現了計數功能,解決了棋類游戲最基本的統計功能。由于篇幅有限,下面僅列出實驗題目。

實驗2:實現提子(吃子)的過程,并更新棋盤;

實驗3:隨機產生落子位置,并判斷是否該位置已有子。

4課程設計題目設計

課程設計是C語言程序設計的后續課程,目的是鞏固學生對C語言知識的綜合運用能力,增強學生用計算機解決問題的能力,即計算思維能力。該課程總共一周的時間,要求學生完成一個綜合性的程序設計題目。筆者基于幻影圍棋設計了一個課設題目,該題目有若干個功能,由一組同學(1~4人)完成,其中一人負責分工、總體程序框架建立及其他功能整合,最后綜合成一個簡單的幻影圍棋競賽程序,能夠實現人機對弈的過程。

課設題目:一個簡單的幻影圍棋系統

主要功能包括:①繪制棋盤:根據幻影圍棋規則繪制9×9的棋盤,并定義變量來保存棋局;②開局初始化:打印棋盤并將一些變量設為初始狀態;③先手選擇:選擇自己為先手還是對方先手(現代圍棋下法黑子為先);④招法生成:即生成一個落子點,可以是隨機方法(最簡單),也可以用定式方法(固定走法);⑤接收裁判信息并響應:每次落子之前,都要詢問裁判該位置是否合法,并且根據裁判返回信息做出落子、提子、猜子等策略選擇;⑥提子:根據裁判的提子信息,將部分己方的棋子或者對方的棋子提出,并更新棋盤。

以上各功能的設計,不僅綜合了C語言很多知識點,又集趣味性和創新性于一體,而且將完整的工程概念引入課程設計中,提高了學生C語言編程能力、創新實踐能力和團隊協作能力。

5結語

很多學生感覺C語言程序設計這門課程內容比較枯燥乏味,沒有學習興趣。筆者將幻影圍棋作為教學實例和上機實驗內容以及課程設計題目,由簡單到復雜,循序漸進,調動了學生學習積極性的同時也增強了他們勇于探索和創新的能力。很多學生對博弈項目產生了濃厚的興趣,并且自愿加入幻影圍棋開發團隊進行深入研究,并以此為基礎申報大學生創新項目。筆者所帶領的幻影圍棋團隊參加了2015年全國大學生計算機博弈大賽,取得了幻影圍棋項目冠軍的好成績。筆者總結的用幻影圍棋程序案例實踐計算思維的具體方法也適用其他博弈項目,希望該方法能對計算機程序設計課程教學提供一種參考和幫助。

猜你喜歡
C語言程序設計計算思維落地
美聯儲加息終落地滬指沖高震蕩走低
午后
以“學生為中心”的《C語言程序設計》教學設計探究
程序設計課程中計算思維和應用能力培養問題研究
民族高校C語言程序設計課程教學改革的研究
基于翻轉課堂的《C語言程序設計》課程教學系統的實現與研究
淺談《C語言程序設計》課程的教學改革
算法的案例教學探析
淺談藝術專業學生計算思維能力的培養
《C語言程序設計》課程的教學改革與實踐
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合