• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于三階段棋類(lèi)游戲開(kāi)發(fā)的程序設(shè)計(jì)實(shí)踐課程改革

      2019-08-07 06:40:20徐建軍陳振邦尹良澤
      計(jì)算機(jī)教育 2019年7期
      關(guān)鍵詞:棋類(lèi)網(wǎng)絡(luò)版編程語(yǔ)言

      徐建軍,陳振邦,尹良澤

      (國(guó)防科技大學(xué) 計(jì)算機(jī)學(xué)院,湖南長(zhǎng)沙 410073)

      0 引 言

      計(jì)算機(jī)程序設(shè)計(jì)是實(shí)踐性非常強(qiáng)的課程,該課程的實(shí)踐教學(xué)環(huán)節(jié)在教學(xué)體系中占有非常重要的地位。只有通過(guò)具體的編程實(shí)踐,才能有效地將理論知識(shí)和實(shí)際應(yīng)用有機(jī)結(jié)合起來(lái),從而培養(yǎng)學(xué)生分析和解決較復(fù)雜工程問(wèn)題能力。所以,目前很多高校的計(jì)算機(jī)專(zhuān)業(yè)在程序設(shè)計(jì)基礎(chǔ)課程之后,會(huì)開(kāi)設(shè)一門(mén)程序設(shè)計(jì)實(shí)踐課程[1-2]。

      我校對(duì)應(yīng)課程的名字是“程序設(shè)計(jì)實(shí)踐課程”,其主要目的是通過(guò)一個(gè)規(guī)模較大的實(shí)例,讓學(xué)生以小組形式完成分析、設(shè)計(jì)和編程實(shí)現(xiàn),以全面梳理所學(xué)的程序設(shè)計(jì)知識(shí),鞏固和提高程序設(shè)計(jì)能力,并培養(yǎng)學(xué)生熟悉新語(yǔ)言和開(kāi)發(fā)環(huán)境以及團(tuán)隊(duì)協(xié)作的能力,為更深入地學(xué)習(xí)后續(xù)相關(guān)課程和工程實(shí)踐打下良好的基礎(chǔ)。

      對(duì)于這門(mén)課程來(lái)說(shuō)實(shí)踐選題至關(guān)重要,理想的選題應(yīng)該難易適中、體現(xiàn)當(dāng)前主流軟件的開(kāi)發(fā)實(shí)踐、能夠激發(fā)學(xué)生學(xué)習(xí)興趣。此外,具體教學(xué)實(shí)施的組織形式,學(xué)生實(shí)踐成績(jī)的評(píng)價(jià)機(jī)制等也會(huì)影響教學(xué)效果。筆者在教學(xué)過(guò)程中,針對(duì)這些方面做了一些改革和探索。

      1 程序設(shè)計(jì)實(shí)踐課程的需求

      實(shí)踐選題直接影響該門(mén)課程的教學(xué)效果,但首先選題的難易程度不好掌握,太易則達(dá)不到教學(xué)效果,太難又會(huì)打擊學(xué)生的信心,讓學(xué)生產(chǎn)生畏難情緒,此外實(shí)踐選題還應(yīng)該具有一定的實(shí)用性和趣味性,以提高學(xué)生的學(xué)習(xí)興趣[3]。

      我校在計(jì)算機(jī)程序設(shè)計(jì)課程中教授的是C語(yǔ)言,所以前幾年在后續(xù)的“程序設(shè)計(jì)實(shí)踐課程”中,實(shí)踐選題是在VC++環(huán)境下開(kāi)發(fā)一個(gè)圖形界面程序。但在信息技術(shù)高速發(fā)展的今天,此類(lèi)傳統(tǒng)選題已經(jīng)不能有效地激發(fā)學(xué)生的積極性和主動(dòng)性。另外,目前Java、Python等編程語(yǔ)言在實(shí)際的軟件開(kāi)發(fā)中應(yīng)用更為廣泛,學(xué)生出于今后應(yīng)用目的考慮,對(duì)這些高級(jí)語(yǔ)言更感興趣。

      因?yàn)橐话闶且皂?xiàng)目小組的形式開(kāi)展課程實(shí)踐,不可避免組內(nèi)成員在任務(wù)分工方面存在不均衡的問(wèn)題,甚至有些學(xué)生在分組時(shí)“抱大腿”,找到成績(jī)優(yōu)異的同學(xué)組隊(duì),具體實(shí)踐過(guò)程中則在組內(nèi)“打醬油”。所以如何充分調(diào)動(dòng)每位學(xué)生的積極性,并對(duì)學(xué)生的工作量進(jìn)行科學(xué)的評(píng)價(jià),都是在課程實(shí)施時(shí)需要仔細(xì)考慮的問(wèn)題。

      此外,在目前的互聯(lián)網(wǎng)時(shí)代,網(wǎng)絡(luò)上開(kāi)源社區(qū)和資源非常多,教師出的實(shí)踐題目很多都能在網(wǎng)上找到對(duì)應(yīng)的開(kāi)源代碼,所以還需要考慮如何避免抄襲現(xiàn)象的發(fā)生。

      2 三階段棋類(lèi)游戲開(kāi)發(fā)實(shí)驗(yàn)

      基于上述具體需求,筆者近年來(lái)對(duì)這門(mén)實(shí)踐課程采取了一系列的改革措施,實(shí)踐項(xiàng)目選題定為一個(gè)棋類(lèi)對(duì)弈游戲的開(kāi)發(fā)實(shí)驗(yàn),基本理念是:開(kāi)發(fā)式和遞進(jìn)式。開(kāi)發(fā)式是項(xiàng)目對(duì)具體棋類(lèi)游戲沒(méi)有限制,同時(shí)不限制編程語(yǔ)言和運(yùn)行平臺(tái),在完成目標(biāo)任務(wù)的前提下,項(xiàng)目小組可以自由選擇編程語(yǔ)言和開(kāi)發(fā)技術(shù)。遞進(jìn)式是把棋類(lèi)對(duì)弈游戲開(kāi)發(fā)分成三個(gè)階段進(jìn)行:單機(jī)版、網(wǎng)絡(luò)版和智能版,如表1所示,每個(gè)版本有不同的任務(wù)和目標(biāo),但這是一個(gè)循序漸進(jìn)的過(guò)程,即后一階段必須在前一階段基礎(chǔ)上才能順利進(jìn)行。

      表1 三階段的棋類(lèi)游戲開(kāi)發(fā)實(shí)驗(yàn)

      這門(mén)課程目前在我校設(shè)置了40個(gè)學(xué)時(shí),分成10周完成,每周4個(gè)學(xué)時(shí)主要用于教師講解實(shí)施思路、檢查項(xiàng)目進(jìn)展、階段驗(yàn)收和答疑,具體實(shí)踐項(xiàng)目的開(kāi)發(fā)則由學(xué)生在課后完成。三個(gè)階段的完成時(shí)間分別為4周、3周和3周,每個(gè)階段必須在截止時(shí)間之前通過(guò)驗(yàn)收,如果在截止時(shí)間之后完成,每超一周總成績(jī)扣5分。三個(gè)階段的成績(jī)有不同的評(píng)分區(qū)間。

      2.1 單機(jī)版

      單機(jī)版的目標(biāo)是實(shí)現(xiàn)一個(gè)有圖形界面的單機(jī)版棋類(lèi)對(duì)弈游戲,但對(duì)具體游戲沒(méi)有限制,例如五子棋、中國(guó)象棋、國(guó)際象棋、圍棋等。這個(gè)階段的主要任務(wù)是實(shí)現(xiàn)游戲界面和主要的游戲規(guī)則,要求程序上支持人人對(duì)弈,界面美觀清晰,無(wú)明顯缺陷。

      在這個(gè)階段,除了實(shí)現(xiàn)游戲規(guī)則之外,學(xué)生的主要任務(wù)是實(shí)現(xiàn)游戲的圖形界面。雖然棋類(lèi)對(duì)弈游戲的界面并不是很復(fù)雜,但大多數(shù)學(xué)生沒(méi)有圖形界面程序(GUI)編程的經(jīng)驗(yàn)。教師在這個(gè)階段需要給出各種主要高級(jí)語(yǔ)言GUI編程的參考資料和VC、QT、Eclipse和Pycharm等開(kāi)發(fā)環(huán)境的GUI編程框架,以及簡(jiǎn)單介紹GUI編程思路。

      2.2 網(wǎng)絡(luò)版

      網(wǎng)絡(luò)版的目標(biāo)是基于教師提供的游戲服務(wù)器,為單機(jī)版游戲加入聯(lián)網(wǎng)通信功能,要求實(shí)現(xiàn)在局域網(wǎng)范圍內(nèi)的聯(lián)網(wǎng)人人對(duì)弈,程序通信流暢,無(wú)明顯缺陷。教師提供的游戲服務(wù)器實(shí)際上是一個(gè)Socket服務(wù)端,并且預(yù)定義了游戲通信的消息格式,具體為JSON格式的字符串。JSON是一種輕量級(jí)的數(shù)據(jù)交換格式,具有良好的可讀性,可以在不同的平臺(tái)間進(jìn)行數(shù)據(jù)交換。

      所以學(xué)生在這個(gè)階段的核心任務(wù)是在單機(jī)版的基礎(chǔ)上,實(shí)現(xiàn)Socket客戶(hù)端通信和JSON消息解析,即一方面把己方的下棋動(dòng)作封裝成預(yù)定格式的JSON消息發(fā)給游戲服務(wù)器,另一方面解析游戲服務(wù)器發(fā)過(guò)來(lái)的JSON消息,還原成對(duì)方的下棋動(dòng)作。目前,Socket通信和JSON消息解析在各種主流高級(jí)語(yǔ)言中都有相應(yīng)函數(shù)和庫(kù)的支持,教師只需給出示例代碼即可。在此基礎(chǔ)上,為了游戲有更好的用戶(hù)體驗(yàn),網(wǎng)絡(luò)版還應(yīng)該加入多線(xiàn)程機(jī)制,教師也可以給出多線(xiàn)程編程的基本思路和示例代碼。

      可能有些小組在實(shí)現(xiàn)單機(jī)版階段會(huì)參考互聯(lián)網(wǎng)上的開(kāi)源代碼,但網(wǎng)絡(luò)版需要按照教師提供的游戲通信協(xié)議進(jìn)行實(shí)現(xiàn),所以這個(gè)階段必須在對(duì)單機(jī)版程序完全理解掌握的基礎(chǔ)上,對(duì)代碼的架構(gòu)和邏輯進(jìn)行改造,才能實(shí)現(xiàn)聯(lián)網(wǎng)通信功能。

      2.3 智能版

      智能版的目標(biāo)是在網(wǎng)絡(luò)版的基礎(chǔ)上,為游戲加入對(duì)應(yīng)的AI博弈算法,要求支持局域網(wǎng)范圍內(nèi)的機(jī)機(jī)對(duì)弈或人機(jī)對(duì)弈,AI程序響應(yīng)迅速,無(wú)明顯缺陷。

      由于棋類(lèi)對(duì)弈游戲在人工智能領(lǐng)域?qū)儆诘湫偷亩肆愫筒┺?還具有全信息和非偶然的特點(diǎn),教師在這個(gè)階段開(kāi)始之前先簡(jiǎn)要介紹AI博弈算法的主要思路,包括博弈樹(shù)的構(gòu)造和極大極小搜索過(guò)程,以及與具體棋類(lèi)游戲相關(guān)的評(píng)價(jià)函數(shù)定義策略等。

      2.4 其它教學(xué)措施

      在實(shí)踐項(xiàng)目分組時(shí)要求2人一組,一方面是為了更合理地分配工作,避免有人在其中濫竽充數(shù),另一方面是要求采用結(jié)對(duì)編程[4]。結(jié)對(duì)編程(Pair programming)是一種敏捷軟件開(kāi)發(fā)的方法,有助于開(kāi)發(fā)出高質(zhì)量的程序,增強(qiáng)工作的紀(jì)律性,提高開(kāi)發(fā)的效率,同時(shí)也有利于學(xué)生之間的互相學(xué)習(xí)。

      實(shí)踐項(xiàng)目的三個(gè)階段都要進(jìn)行驗(yàn)收,只有當(dāng)前階段的驗(yàn)收通過(guò),才能進(jìn)入下一階段的開(kāi)發(fā)。驗(yàn)收時(shí),每組由教師隨機(jī)選一位成員來(lái)演示和回答問(wèn)題,其表現(xiàn)情況決定全組成績(jī),這樣進(jìn)一步加強(qiáng)組內(nèi)成員對(duì)實(shí)踐項(xiàng)目的理解。最后在智能版驗(yàn)收時(shí),要求實(shí)現(xiàn)同一種游戲的小組之間進(jìn)行AI對(duì)抗賽,每一局比賽贏的隊(duì)伍總成績(jī)加1分,輸?shù)年?duì)伍則扣1分。

      此外,在每次驗(yàn)收時(shí)還引入了代碼相似度自動(dòng)比對(duì)系統(tǒng)JPlag[5]。JPlag是一個(gè)代碼相似度比對(duì)工具,目前支持Java、Python、C、C#、C++等主流編程語(yǔ)言。課程規(guī)定如果JPlag檢查發(fā)現(xiàn)代碼相似度在90%以上,則組內(nèi)所有成員直接成績(jī)不及格,實(shí)踐項(xiàng)目提前終止。

      在實(shí)踐項(xiàng)目全部結(jié)束之后,還需要每組提交一個(gè)項(xiàng)目總結(jié)報(bào)告,這個(gè)報(bào)告在總成績(jī)中占5分。雖然本課程是一門(mén)編程實(shí)踐課程,但文檔撰寫(xiě)能力在今后的軟件工程實(shí)踐中也非常重要??偨Y(jié)報(bào)告需要寫(xiě)清楚項(xiàng)目設(shè)計(jì)思路和主要算法,以及組內(nèi)成員的各自貢獻(xiàn)。

      3 實(shí)踐效果

      這里以2018學(xué)年度筆者所負(fù)責(zé)的一個(gè)教學(xué)班為例介紹具體的實(shí)踐教學(xué)成果。這個(gè)班共有135名學(xué)生,分成了67個(gè)項(xiàng)目小組(有個(gè)別組成員是1人和3人)。這些組最后所選擇的編程語(yǔ)言如圖1所示,從中可以發(fā)現(xiàn),目前主流的編程語(yǔ)言都被選擇,包括Python、Java、JavaScript、C、C++和C#。其中,選擇Python的比例超過(guò)了一半,這集中體現(xiàn)了當(dāng)下Python語(yǔ)言的受歡迎程度以及學(xué)生希望學(xué)習(xí)Python的意愿,選擇C語(yǔ)言系列的小組主要原因是前期的計(jì)算機(jī)程序設(shè)計(jì)課程教授的是C語(yǔ)言,所以學(xué)生從學(xué)習(xí)成本角度出發(fā)選擇了C、C++和C#。

      圖1 實(shí)踐項(xiàng)目選擇的編程語(yǔ)言

      圖2展示了實(shí)踐項(xiàng)目所選擇的棋類(lèi)游戲,這些游戲都是學(xué)生平時(shí)比較熟悉的,包括五子棋、中國(guó)象棋、國(guó)際象棋、圍棋、圍棋和黑白棋。有46%的小組選擇了五子棋,原因是學(xué)生普遍認(rèn)為五子棋在游戲規(guī)則和AI算法實(shí)現(xiàn)時(shí)會(huì)比較簡(jiǎn)單,有33%的組選擇了學(xué)生熟悉且感興趣的中國(guó)象棋。

      圖2 實(shí)踐項(xiàng)目選擇的棋類(lèi)游戲

      最后在單機(jī)版階段,這67組全部通過(guò)了驗(yàn)收(其中有5組是超過(guò)截止時(shí)間通過(guò)驗(yàn)收),有多個(gè)組在單機(jī)版游戲中還加入動(dòng)畫(huà)、音效等多媒體效果,提高了游戲的用戶(hù)體驗(yàn)。一共有41組通過(guò)了網(wǎng)絡(luò)版的驗(yàn)收,可以基于教師提供的游戲服務(wù)器在局域網(wǎng)范圍內(nèi)進(jìn)行聯(lián)網(wǎng)對(duì)戰(zhàn),這其中有19組為游戲加入了多線(xiàn)程機(jī)制。最后,共有22組通過(guò)了智能版的驗(yàn)收,通過(guò)驗(yàn)收的小組還在同類(lèi)游戲之間進(jìn)行了AI對(duì)抗賽。

      4 結(jié) 語(yǔ)

      針對(duì)程序設(shè)計(jì)實(shí)踐課程對(duì)選題和課程組織等需求,我校的“程序設(shè)計(jì)課程設(shè)計(jì)”課中引入了三階段棋類(lèi)游戲開(kāi)發(fā)實(shí)驗(yàn)的選題,把實(shí)踐過(guò)程分成單機(jī)版、網(wǎng)絡(luò)版和智能版三個(gè)階段,具有開(kāi)放性和遞進(jìn)性的特點(diǎn),并且在項(xiàng)目驗(yàn)收、成績(jī)?cè)u(píng)價(jià)和相似度比對(duì)等方面采取了一系列的改革措施,極大激發(fā)了學(xué)生對(duì)編程的學(xué)習(xí)興趣和自信心,學(xué)生課后普遍感覺(jué)收獲很大,取得了顯著的教學(xué)效果。

      但是這門(mén)課的三個(gè)階段都要檢查驗(yàn)收,再加上實(shí)踐指導(dǎo)答疑等工作,教師的工作量非常大,所以還需要更多有豐富編程經(jīng)驗(yàn)的助教加入教學(xué)團(tuán)隊(duì)。此外,JPlag的相似度評(píng)價(jià)結(jié)果的準(zhǔn)確度以及對(duì)編程語(yǔ)言的支持效果方面還需改善。這些是本課程下一階段希望改進(jìn)的環(huán)節(jié)。

      猜你喜歡
      棋類(lèi)網(wǎng)絡(luò)版編程語(yǔ)言
      壓力-體積轉(zhuǎn)換在CFC編程語(yǔ)言中的實(shí)現(xiàn)解析
      Java編程語(yǔ)言的特點(diǎn)與應(yīng)用
      淺談不同編程語(yǔ)言對(duì)計(jì)算機(jī)軟件開(kāi)發(fā)的影響
      電子制作(2018年1期)2018-04-04 01:48:36
      面向?qū)ο骔eb開(kāi)發(fā)編程語(yǔ)言的的評(píng)估方法
      淺析《南方周末》網(wǎng)絡(luò)版的角色定位
      新聞傳播(2015年13期)2015-07-18 11:00:42
      大英百科全書(shū)“要絕版”
      《中圖法》網(wǎng)絡(luò)化探索
      棋類(lèi)游戲
      棋類(lèi)游戲
      棋類(lèi)游戲
      汤阴县| 长武县| 连云港市| 图木舒克市| 忻州市| 靖安县| 景东| 云阳县| 三门峡市| 民和| 合江县| 延川县| 景宁| 芜湖市| 江口县| 礼泉县| 庄浪县| 碌曲县| 山丹县| 祥云县| 广元市| 泌阳县| 敖汉旗| 西乌| 松潘县| 天门市| 星子县| 富锦市| 延庆县| 丘北县| 横峰县| 阿鲁科尔沁旗| 临城县| 全州县| 泰州市| 玉屏| 达州市| 阿拉善右旗| 望城县| 唐山市| 竹溪县|