999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于可視化圖形編程的C語言引導性教學項目設計

2023-06-24 16:52:45林偉銘
中國新通信 2023年3期
關鍵詞:游戲學生

摘要:針對大學生初學C語言課程容易出現的枯燥、缺乏興趣的問題,本文通過結合C語言語法和EasyX圖形庫函數,設計了兩個圖形可視化編程的引導性游戲項目。結合課程教學過程,將項目內容分解為配合教學進度的小題,逐步完成整個項目內容。從而通過趣味項目引導學生自主學習和分析,提升學生的編程能力和解決問題的能力。

關鍵字:C語言;EasyX圖形庫;圖形化編程;引導性教學

一、引言

程序設計能力是應用型本科電子類專業學生的一項重要能力,尤其在新一輪智能技術革命的影響下,程序設計能力的重要性顯得更加突出[1]。而C語言程序設計課程通常開設在電子類專業的大一學年,是大部分學生首次接觸到程序設計的課程。因此C語言作為程序設計能力的基礎,對學生后續掌握單片機、嵌入式、Java程序設計、Python等課程知識的影響十分重要。

然而不少學生在學習C語言的過程中,普遍反映對C語言不感興趣或感到枯燥。這也表明部分學生在C語言的學習上存在困難和缺乏興趣引導[2]。為了在新工科建設的理念下,培養具有創新思維、解決問題能力和自學能力的新一代電子信息類新工科人才,以問題為導向的教學方式逐漸受到重視[3]。本文將以C語言為基礎,結合EasyX圖形庫,設計兩個可視化編程的趣味游戲項目。并將項目設計內容逐步分解為多個小題目,隨著課程教學內容的進行同步發布給學生。學生可以根據當前所學內容逐步完成游戲項目,直到課程結束時最終完成整個項目。讓項目貫穿在教學過程中,引導學生自主學習,自主分析,從而提升學生的編程能力和解決問題的能力[4]。

二、EasyX圖形庫

EasyX 圖形庫是一款免費繪圖庫[5],其設計目的雖然針對C++,但也可以應用在C語言編程教學中[6]。只需要在C語言編譯環境中安裝easyX插件就可以簡單實現圖形的繪制及可視化。因此本文通過EasyX圖形庫實現C語言編程的可視化,可以加深學生對編程的直觀印象。然后通過EasyX圖形庫設計趣味游戲項目,學生完成項目后可以得到直接的反饋,形成較強的滿足感和成就感,可以進一步提升學生的學習興趣。

本文設計的兩個趣味游戲項目需要用到的EasyX函數較為簡單,涉及的內容主要有:窗口建立,直線、矩形和圓形的繪制,鼠標鍵盤的輸入,屏幕內容清空等功能。相關的函數及說明如表1所示。

三、案例1—圖形化五子棋游戲編程

本項目內容是實現一個五子棋游戲界面,可以響應鼠標點擊事件,并在點擊位置為止放置黑白棋子。最后能根據五子棋的勝負規則,程序自動判斷勝負并給出提示。游戲界面如圖1所示。該項目涉及的C語言知識包括了變量聲明、循環、函數設計、二維數組操作、文件操作等。學生根據設計功能要求逐步完成各項模塊代碼,最終完成五子棋游戲程序的設計。該項目根據教學進度可分解為五個小題,分別為:

(一)五子棋游戲項目第一題—棋盤的顯示

該小題需要使用循環的語法,可在循環課程結束后進行。要求生成600×600的窗口,使用矩形填充棋盤背景色為0x55AAAA。然后使用循環繪制15條間距為40,長度為14×40的橫線。同理使用循環繪制15條豎線。即可以顯示一個棋盤。該小題訓練學生對循環的使用,并通過可視化的方式顯示出來。循環過程中的數值出現錯誤很容易在圖形界面中體現出來,學生可以得到直觀的反饋并進行改進,從而提高學生對循環的掌握和使用能力。

(二)五子棋游戲項目第二題—棋子的顯示

該小題需要使用函數和數組語法,可在函數和數組結束后進行。要求設置一個全局變量二維數組char CHESS[15][15],用于保存棋盤上15×15個位置的棋子信息。使用嵌套循環遍歷二維數組的所有元素,根據數組元素值,在棋盤對應的位置上繪制填充顏色為黑色或白色的圓形棋子,或不繪制棋子。最后編寫一個函數void reDraw(),將繪制棋盤和棋子的代碼打包到該函數中。該小題可訓練學生對二維數組的操作,數組操作錯誤則體現為棋子的顯示錯誤,學生通過自行調試和糾錯可以積累經驗,更深入理解數組的作用。

(三)五子棋游戲項目第三題—棋子的輸入

該小題需要使用函數和數組語法,可在函數和數組結束后進行。要求在棋盤界面上用鼠標左鍵點擊,可以在相應的位置上放置棋子。使用while(1)循環獲取鼠標點擊事件和坐標,根據鼠標點擊的坐標,計算距離最近的棋盤交叉點的行列號,修改全局二維數組CHESS[15][15]對應元素的值。然后調用reDraw()重新繪制修改后的棋盤和棋子圖形,實現游戲動態顯示。該題目主要訓練學生對數組的操作和函數的調用,通過鼠標坐標計算二維數組的小標,讓學生更深入理解二維數組的使用。該步驟通過調用reDraw()函數繪圖,利用模塊化設計思路避免了程序代碼間的耦合,讓學生簡化程序設計思路,體現模塊化設計的優勢。

(四)五子棋游戲項目第四題—勝負判斷

該小題需要使用函數和數組語法,可在函數和數組結束后進行。要求每次落下棋子,都要進行勝負判斷。以新下棋子的坐標為中心,四個方向(橫向、豎向、斜下和斜上)上[-4,4]的范圍內出現五個同色棋子連在一起,即該色棋子獲勝。判斷過程中要避免邊界問題,即二維數組的下標越界問題。該小題的勝負判斷雖然依然只設計到二維數組操作,但作為本題目的主要步驟,是相對較難也較容易出錯的一步,具有較高的挑戰性,卻更能激發學生的斗志和興趣。學生需要在二維數組中進行四個方向上的元素數值判斷,掌握二維數組和循環語法的靈活使用方法才能較好地完成該題。

(五)五子棋游戲項目第五題—游戲的保存

該小題需要使用文件操作語法,可在文件讀寫課程結束后進行。要求將每次下棋的坐標記錄下來,游戲結束后保存在txt文件里。并可讀取txt文件重現棋譜步驟。該小題利用C語言課程最后教授的文件操作,增加了五子棋游戲功能,可以激發學生的創新意識。學生可以自由發揮,對五子棋的各種功能進行補充和改進。

四、案例2—圖形化敲磚塊游戲編程

本項目是實現一個敲磚塊的游戲。游戲窗口上方顯示多排磚塊,有一個小球在窗口范圍內反彈,小球敲到磚塊會讓磚塊消失。游戲窗口下方有個滑板,由兩個按鍵控制滑板的左右移動,當小球下落時,滑板要能及時接住小球,否則小球落入屏幕下方則游戲失敗。游戲界面如圖2所示。

該題目涉及的C語言知識同樣包括了變量聲明、循環、條件判斷、函數設計、二維數組、文件操作等。該項目根據教學進度可分解為六個小題,分別為:

(一)敲磚塊游戲項目第一題—小球的移動

該小題需要使用循環語法,可以在循環課程結束后進行。要求利用循環和easyX圖形庫的編程知識,在界面中顯示一個移動的小球。首先生成1000×600的窗口,使用矩形填充棋盤背景色為0x55AAAA。然后繪制一個半徑為20紅色小球,設置全局變量double ball_x, ball_y, ball_speed_x, ball_speed_y,分別表示小球的x,y坐標和x,y軸上的速度。設置while(1)循環(使用Sleep(10)控制循環速度),每次循環令ball_x += ball_speed_x, ball_y + ball_speed_y,然后以新的坐標重新繪制矩形底色和紅色小球。從而實現小球的動態移動顯示。該小題通過循環操作更新小球位置,最后動態地顯示移動的小球,通過可視化直觀地體現了循環操作的作用,讓學生有較強烈的印象,從而可以激發學生的學習興趣,為下一步的學習做好準備。

(二)敲磚塊游戲項目第二題—滑板的移動

該小題同樣只需要使用循環語法,可在循環課程結束后進行。要求利用循環和easyX圖形庫的編程知識,在界面下方顯示一個可控制左右移動的滑板。要求在游戲窗口的正下方繪制一個寬高為200×20的藍色矩形滑板。設置全局變量double board_x, board_y作為滑板左上角坐標,在上一小題的while(1)循環中,每次循環內都增加按鍵判斷,實現a和d按鍵減少或增加滑板的x坐標。從而實現滑板的動態移動。該小題同樣利用循環來移動游戲界面中的圖形,但可以通過按鍵交互來控制圖形的移動方向和速度,進一步提升了編程的趣味性。

(三)敲磚塊游戲項目第三題—小球的反彈

該小題需要使用函數語法,在函數課程結束后進行。要求在界面中顯示一個能移動和反彈的小球。在上述2個小題的基礎上,編寫update()和reDraw()函數,update()用于計算小球和滑板的新坐標,而reDraw()則是清除原有繪制內容,并按新坐標繪制小球和滑板。在update()函數中,每次計算小球的新坐標后,都要判斷小球的坐標ball_x, ball_y是否碰到邊界。然后修改速度ball_speed_x和ball_speed_y的方向。如果碰到滑板,則重新隨機生成往上方移動的小球速度。該小題通過在循環中增加判斷語句,訓練學生將循環和判斷語句聯合使用的能力,并通過可視化游戲界面體現出來。學生的判斷條件出錯能在界面中體現出來,學生獲得直觀的反饋并加以糾正,可以加快學生的學習經驗積累。隨著代碼的增加,將位置更新和圖形繪制劃分為兩個模塊函數,可以訓練學生梳理代碼和模塊劃分的能力。

(四)敲磚塊游戲項目第四題—多彩磚塊的顯示

該小題需要使用函數和數組語法,在函數課程和數組課程結束后進行。要求在界面上方顯示5行20列的磚塊。設置類型為unsigned long的全局變量二維數組,用于保存5行20列的磚塊,每個元素用于保存對應磚塊的顏色,如果該值為0,則表示沒有磚塊。并將二維數組里的值隨機設置為不同顏色。在reDraw()函數里增加磚塊的顯示,每個磚塊的寬度應為50,高度設置為30。該小題通過二維數組保存多彩磚塊的數據,要求學生學會二維數組的使用方法。其中磚塊的顯示涉及了循環遍歷二維數組,以及數值為0的空磚塊判斷,可以訓練學生綜合運用循環、條件判斷和數組操作。

(五)敲磚塊游戲項目第五題—磚塊的碰撞

該小題需要在函數課程和數組課程結束后進行。要求實現小球和磚塊的碰撞計算,讓磚塊消失,并修改小球方向。設置一個函數int blockHited(double ball_x, double ball_y, double block_x, double block_y),用于檢測小球與一個磚塊是否發生碰撞,返回值為0表示沒有碰撞,非0值表示發生碰撞。碰撞的情況下要修改小球的速度方向。小球每移動一次,就與所有的非0磚塊遍歷一遍。該小題雖然涉及的語法與前面小題一樣,但是相對有挑戰的內容,小球需要與多個磚塊進行碰撞檢測,需要涉及循環遍歷以及二維數組的更新(磚塊的消失)。小球與每個磚塊的碰撞及方向更新,則要考慮到碰撞的范圍,以及碰撞的位置是處于磚塊的上下左右方向,還是四個對角方向,并計算出合理的反彈方向。因此學生容易在該小題上出錯,但通過界面直觀反饋錯誤現象,可以吸引學生深入研究代碼的執行過程,進而強化學生的程序設計思維,提升編程能力。

(六)敲磚塊游戲項目第六題—游戲參數設置

需要使用到文件操作語法,可在文件讀寫課程結束后進行。要求將一些重要參數保存到txt文件中,并在游戲開始時讀取txt文件中的參數,用于游戲的配置,例如游戲界面大小、磚塊數量、滑板尺寸、小球速度等。該小題利用文件操作功能擴展敲磚塊游戲的配置功能,學生編譯出程序后,只需要簡單修改配置文件就能調整游戲的難度,可以讓學生體驗軟件設計過程中參數配置過程。此外還可以增加開放性題目鼓勵學生開拓思維,發揮想象力,利用所學知識擴展游戲的功能,激發學生的創新思維。

五、結束語

對于剛接觸程序設計的學生來說, C語言里的概念會有一定的抽象和難以理解,因此對C語言的學習提不起興趣。本文設計的可視化編程引導性游戲編程項目,可以通過游戲設計提高學生編程興趣。再以項目分解成小題的形式,一步一步引導學生完成整個項目,并貫穿整個C語言編程教學內容。對提高學生的編程能力和解決問題的能力有較好的幫助作用。

作者單位:林偉銘 廈門理工學院 光電與通信工程學院

參? 考? 文? 獻

[1] 吳紫恒,王兵,李聰,等.人工智能背景下電子信息類新工科人才培養模式的研究[J].湖北工程學院學報,2021,41(03):121-123.

[2] 柴西林,趙亞娟,趙艷,等. 應用型本科電子信息類專業C語言教學現狀分析及對策研究[J]. 科技創新導報,2017(6):193-194.

[3] 羅春婭,李丹,馬智超,等.以問題為導向的高效課堂的研究——以中美合作辦學的電子類專業基礎課為例[J].湖北第二師范學院學報,2020,37(02):89-91.

[4] 丁鳳娟,洪騰蛟,陳豐,等.基于新工科與專業認證背景下《C語言程序設計》教學改革與實踐[J].才智,2022(21):84-87.

[5] 崔北元,李德川.基于EasyX的物體運動狀態模擬仿真系統分析拋體運動問題[J].教學考試,2021(49):20-22.

[6] 尹蘭蘭,磨峰,熊水平.C語言課程中利用easyX進行算法的可視化教學[J].軟件工程,2019,22(11):51-55.

基金項目:2021年福建省本科高校教育教學改革研究項目“新工科背景下電子信息類人才軟件創新能力培養的探索與實踐”(項目編號:FBJG20210085);2020年福建省本科高校教育教學改革研究項目“專創融合-虛實結合打造電子信息系統綜合設計課程群”(項目編號:FBJG20200119)。

林偉銘(1983-),男,漢族,福建漳州,博士,副教授,研究方向:模式識別與機器學習研究。

猜你喜歡
游戲學生
快把我哥帶走
《李學生》定檔8月28日
電影(2018年9期)2018-11-14 06:57:21
趕不走的學生
游戲
學生寫話
數獨游戲
瘋狂的游戲
飛碟探索(2016年11期)2016-11-14 19:34:47
爆笑游戲
學生寫的話
第八章直接逃出游戲
小學科學(2015年7期)2015-07-29 22:29:00
主站蜘蛛池模板: 精品国产美女福到在线不卡f| 亚洲av无码久久无遮挡| 97国产成人无码精品久久久| 亚洲三级视频在线观看| 国产午夜一级淫片| 亚洲熟妇AV日韩熟妇在线| 精品久久久久成人码免费动漫| 亚亚洲乱码一二三四区| 91无码视频在线观看| 国产欧美成人不卡视频| 国产情侣一区二区三区| 成人欧美在线观看| 无码一区二区波多野结衣播放搜索 | 国产性爱网站| 日韩在线播放欧美字幕| AV老司机AV天堂| 狠狠做深爱婷婷综合一区| 嫩草国产在线| 99re免费视频| av在线5g无码天天| 国产自在线拍| 中文字幕第4页| 天天躁夜夜躁狠狠躁图片| 18禁黄无遮挡免费动漫网站 | 欧美69视频在线| 久久黄色影院| 欧美日韩一区二区在线免费观看| 宅男噜噜噜66国产在线观看| 91在线播放国产| 老司机久久99久久精品播放 | 欧美亚洲一二三区| 亚洲成在人线av品善网好看| 久久国产av麻豆| 国产91九色在线播放| 亚洲黄色网站视频| 欧美成人二区| 亚洲性色永久网址| 99在线视频网站| 拍国产真实乱人偷精品| 色综合狠狠操| www.狠狠| 国产精品亚洲一区二区三区z | 日韩无码一二三区| 亚洲an第二区国产精品| 国产麻豆另类AV| 欧美日韩激情| 国产在线无码一区二区三区| 美女被躁出白浆视频播放| 一级做a爰片久久免费| 试看120秒男女啪啪免费| 亚洲va在线∨a天堂va欧美va| 精品久久蜜桃| 亚洲欧美人成电影在线观看| 国产欧美在线| 在线看免费无码av天堂的| 亚洲最大在线观看| 国产婬乱a一级毛片多女| 69av免费视频| 这里只有精品国产| 青青青国产在线播放| 欧美激情网址| 国产成人综合亚洲欧美在| 国产极品粉嫩小泬免费看| 91在线国内在线播放老师| 亚洲中文字幕日产无码2021| 99久久国产精品无码| 福利在线一区| 国产人在线成免费视频| 亚洲色图欧美在线| 精品福利国产| 色综合婷婷| 精品福利国产| 91久久国产热精品免费| 国内精品一区二区在线观看| 高清无码手机在线观看| 国产在线啪| 71pao成人国产永久免费视频 | 国产精品视频第一专区| 999精品免费视频| 亚洲无码免费黄色网址| 91精品视频播放| 亚洲精品va|