婷婷超碰在线在线看a片网站|中国黄色电影一级片现场直播|欧美色欧美另类少妇|日韩精品性爱亚洲一级性爱|五月天婷婷乱轮网站|久久嫩草91婷婷操在线|日日影院永久免费高清版|一级日韩,一级鸥美A级|日韩AV无码一区小说|精品一级黄色毛片

首頁 > 文章中心 > 正文

C語言游戲教學教育

前言:本站為你精心整理了C語言游戲教學教育范文,希望能為你的創(chuàng)作提供參考價值,我們的客服老師可以幫助你提供個性化的參考范文,歡迎咨詢。

C語言游戲教學教育

摘要:傳統(tǒng)的計算機程序設計教學方式往往缺乏互動性和主動性,存在著枯燥乏味、無趣;AI-CODE游戲教育平臺是一套全新的教育平臺,以寓教于樂的游戲教育方式,打破了傳統(tǒng)的教育模式,讓大家在非壓迫的競技術中不知不覺地提高自己的計算機程序設計水平和算法設計水平,最后以具體的例子展示C語言的快樂學習之旅。

關鍵字:“C語言”;C;AI-CODE;游戲教學;程序設計

前言

傳統(tǒng)的計算機程序設計教學方式大部分都是以教師講授為主,而學生被動地接受知識。這種教育模式往往存在著枯燥乏味、無趣,而且很大程度上存著單向性(也就是常說的填鴨式教學),教授者和被教授者之間缺乏互動性,使學生普遍產生學習只為了應付考試等厭學的情緒,不能積極地發(fā)展和挖掘學生的智力,甚至會扼殺學生的求真求新的天性,他們的創(chuàng)造力逐漸在枯燥無味的程序設計教學中消磨殆盡。

如何能讓學生能體會到學生程序設計的樂趣,并逐漸地像迷上“網(wǎng)絡游戲”那樣“迷上”程序設計的學習呢?

“游戲教學”是旨在用一種寓教于樂的高效學習方法,利用人們“愛玩”的天性,讓學習者在“玩”中學習,從而充分調動學習者的學習興趣,使學習的效率和主動性得到極大的提高。正如蘇格拉底的名言:教育不是灌輸,而是點燃火焰!

一、AI-CODE游戲系統(tǒng)簡介

AI-CODE游戲教育平臺是一套全新的教育平臺,以寓教于樂的游戲教育方式,打破了傳統(tǒng)的教育模式??么蠹以詵茄蠱鵲木杭賈脅恢瘓醯靨岣咦約旱募撲慊絳蟶杓撲膠拖喙氐氖?、五d懟⑼紜⑷斯ぶ悄艿妊Э浦兜撓τ盟健I-CODE為程序和算法設計的學習和實踐提供了全方位的環(huán)境,由于其游戲主題的有趣性、直觀性,使學生在學習的同時感到了快樂和成就感,而在娛樂的同時發(fā)現(xiàn)自己以前的知識不夠用,所以為了得到更多的快樂和成就感,便又投入于學習中,讓學生在玩,學習,玩,學習的循環(huán)的過程中不斷提高自己的程序設計和策略算法設計的水平,整個過程是一個自主的學習過程,是一種逐漸“迷上”的過程,而非被強迫的。AI-CODE學習三者的關系如下圖:

AI-RCJ是AI-CODE中一套虛擬足球機器人的制作和競技仿真的教育平臺,并實現(xiàn)了C、C++、Java、C#等多種編程語言同臺競技。為了讓自己的足球在競技中具有良好的攻防性和機動性,必須給虛擬足球機器人賦予一定的智能,智能化程度的高低取決于使用者數(shù)學、物理、計算機等相關學科知識的靈活運用程度。AI-RCJ界面如下圖:

二、快樂的學習之旅

下面在“AI-RCJ”教育平臺上,以幾個簡單的例子展示C語言的快樂學習之旅,在這些快樂的有“成就感”的競技中逐漸掌握C程序設計語言一些關鍵語法,體會到“游戲教學”的樂趣。

(一)我的第一個會動的機器人

在AI-RCJ教育平臺中我們只須書寫幾句簡單的代碼,就立刻可以看到一個會動的“足球機器人”,會讓我們馬上感到有些小小的“成就感”,并吸引我們繼續(xù)的深入。

#includeairobot/c/SimpleRobot.h

/**

*機器人執(zhí)行函數(shù)

*/

voidrun()

{

/*在這里添加控制機器人的代碼*/

doMoveTo(30,30);/*移動到坐標點(30,30)*/

}

這段代碼代表了一個“函數(shù)”,這個函數(shù)的名字叫做run。函數(shù)是c語言程序的一個主要組成部分,每個函數(shù)都有自己的名字,并且可以完成相應的功能。run函數(shù)只由單個語句組成,doMoveTo(30,30)完成控制機器人移動到(30,30)這個坐標點。

(二)讓機器人會撞球

要讓機器人撞擊足球就要知道足球的坐標。在程序中調用getBallX和getBallY可以獲取足球的坐標。

voidrun(void)

{

doubleballX,ballY;/*定義兩個變量*/

ballX=getBallX();/*獲得足球的x坐標*/

ballY=getBallY();/*獲得足球的y坐標*/

doMoveTo(ballX,ballY);/*向足球撞擊*/

}

在run函數(shù)里面,第一條語句定義了兩個“變量”,變量是c語言中的一個基本元素,可以用它們來存放不同的數(shù)值,程序設計中變量的作用和代數(shù)中的未知數(shù)的作用類似。在使用一個變量之前,必須先定義它,“doubleballX,ballY;”這條語句完成了變量的定義。這兩個變量的名字是ballX和ballY,以后可以通過這兩個名字來使用變量,就像使用函數(shù)的名字來調用一個函數(shù)一樣。變量是有“類型”的,變量的類型規(guī)定了變量可以存放什么樣的數(shù)據(jù),ballX和ballY這兩個變量的類型是double,表示他們可以存放浮點數(shù),也就是我們通常所說的小數(shù)。轉載于范文中國網(wǎng)。

語句ballX=getBallX()使用了變量ballX,這是一個“賦值語句”,等號“=”將賦值

語句分成了左右兩部分,等號的左邊一般是一個變量,等號表示賦值操作,就是把右邊的數(shù)值存放到左邊的變量當中,在這里等號并不是要表示兩邊的內容相等。在這條賦值語句中,等號右邊的部分是一個函數(shù)調用,被調用的函數(shù)叫getBallX,這個函數(shù)是一個有“返回值”的函數(shù),這表示調用這個函數(shù)后,我們可以得到一個數(shù)值,這個數(shù)值代表了函數(shù)執(zhí)行的結果。getBallX函數(shù)的返回值是足球的ballX坐標。賦值語句“ballX=getBallX();”把getBallX函數(shù)的返回值保存到了變量ballX里,執(zhí)行這個語句的時候,實際上發(fā)生了兩件事,首先是調用getBallX函數(shù),并取得函數(shù)的返回值,然后就是將這個返回值保存到變量ballX里。語句ballY=getBallY()是類似的,這條語句把對手的ballY坐標保存到的變量y里。

現(xiàn)在知道了足球當前的坐標,語句“doMoveTo(ballX,ballY);”完成了向足球所在位置撞擊的工作。在這里我們將變量ballX,ballY作為參數(shù)傳遞給doMoveTo函數(shù),因為變量ballX,ballY里存放了足球所在位置的坐標,通過用這兩個變量作為參數(shù)調用doMoveTo函數(shù),也就是將足球所在位置作為撞擊的目標點,實現(xiàn)向足球所在位置撞擊。

但我們看到機器人在剛開始時撞擊了一下足球,之后便停止不動。

如何能讓機器人能不斷地撞球呢?我們用一種新的語句:循環(huán)語句,實現(xiàn)一個不斷撞擊足球的機器人。

voidrun(void)

{

doubleballX,ballY;/*定義兩個變量*/

while(1){

ballX=getBallX();/*獲得足球的x坐標*/

ballY=getBallY();/*獲得足球的x坐標*/

doMoveTo(ballX,ballY);

}

}

就這樣讓我們體會到循環(huán)語句的“威力”?。ㄈ┳寵C器人聰明起來——避免“烏龍”球

好了,我們的機器人已經(jīng)能動起來啦,但如何讓我們的機器人變“聰明”起來呢?能實現(xiàn)一個可以根據(jù)自己的進攻方向和足球的運動方向來盡量避免踢“烏龍”球的機器人。

我們會不知不覺地想辦法去不斷學習,讓我們機器人越來起“聰明”!

voidrun(void)

{

intshoot;/*定義控制變量*/

doubleballHeading;/*定義變量,存儲球的運動方向*/

doubleheading;/*定義變量,存儲機器人的進攻方向*/

doubleballX,ballY;/*定義變量,存儲球的ballX,ballY坐標*/

doublegoalMin,goalMax;

doublecourtWidth,courtHeight;

doublegoalSize;/*定義變量,存儲球門的大?。▽挾龋?/

/*定義變量,存儲球的運動直線方程ballY=k*ballX+b中的b和k*/

doubleb,k;

heading=getAttack();/*得到機器人的進攻方向*/

courtWidth=getCourtWidth();/*得到場地的寬度*/

courtHeight=getCourtHeight();/*得到場地的高度*/

goalSize=getGoalSize();/*得到球門的大小*/

goalMin=courtHeight/2-goalSize/2;

goalMax=courtHeight/2+goalSize/2;

while(1){

/*求出足球的運動直線*/

ballX=getBallX();

ballY=getBallY();

ballHeading=getBallHeading();

k=tan(ballHeading);

b=ballY-k*ballX;

/*如果機器人是由左向右進攻,而且當前球的運動方向是由右向左運動*/

if(heading0ballHeadingPI/2ballHeadingPI*3/2){

if(goalMin50*k+bgoalMax50*k+b){

shoot=0;

}else{

shoot=1;

}

}

/*如果機器人是由右向左進攻,而且當前球的運動方向是由左向右運動*/

elseif(heading=0

(ballHeading=0ballHeadingPI/2

||ballHeading2*PIballHeading3*PI/2))

{

if(goalMink*courtWidth+b

k*courtWidth+bgoalMax){

shoot=0;

}else{

shoot=1;

}

}

/*其他情況*/

elseshoot=1;

if(shoot==1){

doMoveTo(ballX,ballY

}else{

doTurnTo(PI*3/2);

doMoveBack(300);

}

}

}

通過循環(huán)語句(while)和選擇語句(if)等知識的綜合應用,讓我們的機器人變得越來越“聰明”啦。接著下來,我們又會想讓我們的機器人變成有策略的進攻和防守,團隊協(xié)作。。。。。。,最后讓整個“足球”比賽變得越來越有意思,學習變得越來越有趣。

四、結語

AI-CODE中的AI-RCJ讓學生在這“虛擬足球競技”的教育平臺上,讓自己的機器人動起來,不斷地撞球,聰明起來,有策略的進攻和防守。。。。。。等一系列有“成就感”的快樂游戲中,逐漸“迷上”程序和算法設計。為了更好地“玩”,不斷地學習,不斷地提高自己的計算機程序設計水平和策略算法設計水平,真正體會到寓教于樂的樂趣!

參考文獻

[1]龔睿.AI-CODESYSTEMS在智能機器人教學中的應用[J].2004.

[2]沙有威.程序設計教學的新載體——智能機器[J].2002.

[3]中鳴數(shù)碼科技有限公司.AI-CODE使用手冊[EB].

[4]杜飛雪,陳勝峰.C++語言學習利器[M].中國水利水電出版社,2007.