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

三角函數特值記憶游戲設計與實現
——Expression Blend輔助教學應用實例

2012-09-11 08:59:20陳世華艾訓儒
中國教育信息化 2012年10期
關鍵詞:動畫記憶游戲

陳世華,艾訓儒

(1.恩施自治州高級中學,湖北恩施445000;2.湖北民族學院,湖北恩施445000)

三角函數特值記憶游戲設計與實現
——Expression Blend輔助教學應用實例

陳世華1,艾訓儒2

(1.恩施自治州高級中學,湖北恩施445000;2.湖北民族學院,湖北恩施445000)

記憶特殊角的三角函數值單調、枯燥,很多學生還不夠重視。為了幫助學生樂于且易于記憶三角函數特值,作者用ExpressionBlend4設計了一個小游戲,也是對信息技術輔助教學的一個探索。

三角函數;游戲設計;輔助教學;ExpressionBlend

熟記特殊角的三角函數值,是提高三角函數解題速度與準確性的必要條件之一。常用特值有二十幾個,雖然不多,但是記憶過程單調、枯燥,很多學生還不夠重視,即使到了高三,仍有不少學生因為特值不熟而直接或間接丟分。為了讓學生樂于且易于記憶三角函數特值,筆者用ExpressionBlend4設計了一個小游戲。

一、界面及對象設計

界面左邊一個Image、一個Path、三個TextBox,分別命名為image01、path_paodan、textbox01、textbox02、textbox03。

如圖1所示,image01展現特殊角的三角函數式。

path_paodan直接在Blend4的設計視圖中繪制,用于設計炮彈爆炸動畫。初始狀態path_paodan透明(Opacity屬性值為0),圖1中看不見,圖2是動畫過程中一幀的形狀。

圖1

textbox01、textbox02、textbox03初始狀態也透明,游戲結束時才顯示出來,用于統計命中率,如圖3所示。

圖2

圖3

界面右邊是兩個Image,一個Image加載包含單位圓的坐標系,圖片中包含了所有的特值及它們對應的三角函數線。另一Image加載一個坦克圖片。

每一條三角函數線的位置,都有一條線段(Path),根據函數名稱及角度,分別命名為path_sin30、path_sin45……初始狀態下,這些線段的Opacity屬性值均為0,程序運行時,當鼠標移動某條線段末端時,這條線段才會顯示出來,當鼠標移開后,該線段又隱藏,以此強調三角函數線。

每個特值處,也就是每條三角函數線末端,設計一個Button,依次命名為btsin30、btsin45……btcos0、btcos30……bttan30、bttan45……三角函數線的顯示與隱藏由這些按鈕的MouseMove、MouseLeave事件控制。

坦克炮口處有一個Ellipse(橢圓),大小為10×10,用做炮彈,命名為e1。

界面中上邊沿放置三個RadioButton(單選按鈕),分別命名為rdbt01、rdbt02、rdbt03,用于設置image01下落的速度。rdbt01的下邊放置一個Button,命名為button01,用于開始游戲時的相關初始化及image01的動畫設置。

二、動畫及音效設計

1.image01的下落動畫

image01的下落,由程序代碼實現。image01下落到界面底部后,需要加載一下圖片,下落過程中,如果被命中,需要更換圖片,這些都需要程序代碼實現。代碼在button01的click事件處理程序中。

2.坦克動畫

發射炮彈時,坦克圖片一退一進,增加動感。該動畫直接在ExpressionBlend4的設計視圖下完成,命名為sb_tank。

3.炮彈動畫

炮彈e1,運行終點要根據image01的當時位置確定,通過如下過程實現e1的動畫:

private void paodan01()//炮彈飛行動畫

{

DoubleAnimation anim01=new DoubleAnimation();//橫向運動

DoubleAnimation anim02=new DoubleAnimation();//縱向運動

e1.Opacity=100;

anim01.From=440;anim01.To=Canvas.GetLeft (this.image01)+50;

anim02.From=351;anim02.To=Canvas.GetTop (this.image01)+40;

anim01.Duration=new Duration(TimeSpan. FromMilliseconds(100));

anim02.Duration=new Duration(TimeSpan. FromMilliseconds(100));

Storyboardsb_paodan01=new Storyboard();

sb_paodan01.Duration=new Duration(TimeSpan. FromMilliseconds(100));

sb_paodan01.AutoReverse=false;

sb_paodan01.Children.Add(anim01);sb_paodan01. Children.Add(anim02);

Storyboard.SetTarget(anim01,e1);Storyboard.Set-Target(anim02,e1);

Storyboard.SetTargetProperty(anim01,new PropertyPath("(Canvas.Left)"));

Storyboard.SetTargetProperty(anim02,new PropertyPath("(Canvas.Top)"));

sb_paodan01.Completed += new EventHandler (sb_paodan01_Completed);//其中隱藏e1

sb_paodan01.Begin();

}

4.炮彈爆炸動畫及音效

炮彈爆炸動畫,針對path_paodan設計,命名為sb_paodan,在設計視圖下完成,主要通過縮放改變path_paodan的大小,通過其顏色漸變及透明度變化來實現動畫。path_paodan的橫向位置固定,其縱向位置在程序運行時,通過程序代碼調節,使其與e1同步。

爆炸聲由MediaElement控件加載,控件命名為mediasound,播放語句:

mediasound.Play();

三、程序邏輯設計與實現

1.數據處理

本游戲數據量不大,只用數組存放數據,共設置三個數組。

將加載于image01的圖片文件名存放于字符串數組中,該數組命名為myimage,另設一個整型數組tempID,個布爾型數組mingzhong,長度都與myimage相同。數組mingzhong記載命中情況。

程序運行時,對tempID隨機排序,排序后的元素,作為myimage元素的下標,image01圖片的加載順序為myimage[tempID[0]]、myimage[tempID[1]]、…

對數組隨機排序,由自定義函數RandomSort(int[] array)實現:

publicint[]RandomSort(int[]array)

{

intlen=array.Length;

System.Collections.Generic.Listlist=newSystem.

Collections.Generic.List();

int[]ret=newint[len];Randomrand=newRandom();inti=0;

while(list.Count

{

intiter=rand.Next(0,len);

if(!list.Contains(iter))

{list.Add(iter);ret[i]=array[iter];i++;}

}

returnret;

}

2.游戲流程

開始游戲按鈕button01的Click事件處理程序中主要是image01第一個圖片加載與image01的下落動畫程序代碼。該動畫命名為sb01,sb01拖放完成,會自動跳轉到sb01_Completed(),在sb01_Completed()中,為image01加載一下圖片。sb01_Completed ()的最后,利用sb01.Begin()語句實現動畫的循環拖放,流程見圖4。

圖4

完整代碼如下:

private void button01_Click(object sender,System. Windows.Routed Event Argse)

{

for(intk=0;k

button01.IsEnabled=false;rdbt01.IsEnabled =false;

rdbt02.IsEnabled=false;rdbt03.IsEnabled= false;

textbox01.Opacity=0;textbox02.Opacity=0; textbox03.Opacity=0;

sb01.Stop();sb01.Children.Clear();

image01.Opacity=100;i01=0;shuming. Opacity=0;

for(intj=0;j

//以上語句為必要的初始化

tempID=RandomSort(tempID);

//將數組下標隨機排序。

imgfilename=myimage[tempID[i01]];

//獲取圖片文件名。

Uriimage01url=newUri("imgsjhszhi/"+myimage [tempID[i01]],UriKind.RelativeOrAbsolute);

//申明圖片路徑

BitmapImage bitmap01=new BitmapImage (image01url);//定義圖片源

image01.Source=bitmap01;

//以下設置image01的動畫

DoubleAnimation anim01=newDouble Animation();

anim01.From=52;anim01.To=440;

anim01.Duration=newTimeSpan(0,0,0, v01);//v01控制速度

sb01.Duration=new Duration(newTimeSpan (0,0,0,v01));

sb01.AutoReverse=false;

sb01.Children.Add(anim01);

Storyboard.SetTarget(anim01,image01);

Storyboard.SetTarget Property(anim01,new PropertyPath("(Canvas.Top)"));

sb01.Completed+=newEventHandler (sb01_Completed);

sb01.Begin();

}

動畫sb01播放完畢,自動跳轉到sb01_Completed():

privatevoidsb01_Completed(objectsender,EventArgse)

{

i01=i01+1;

if(i01

{

imgfilename=myimage[tempID[i01]];

Uriimage01url=newUri("imgsjhszhi/"+myimage [tempID[i01]],UriKind.Relative Or Absolute);

BitmapImage bitmap01=newBitmapImage (image01url);

image01.Source=bitmap01;

sb01.Begin();//重新播放動畫sb01,由此構成循環播放。

}

Else

{

Uriimage01url=newUri("imgsjhszhi/p01.jpg", UriKind.RelativeOrAbsolute);

BitmapImage bitmap01=new BitmapImage(image01url);

image01.Source=bitmap01;

sb01.Stop();sb01.Children.Clear();

sb01.Completed-=newEventHandler (sb01_Completed);

button01.IsEnabled=true;rdbt01.IsEnabled=true;

rdbt02.IsEnabled=true;rdbt03.IsEnabled=true;

intright=0;//統計命中情況

for(intk=0;k

if(mingzhong[k])right=right+1;

textbox01.Opacity=100;textbox02.Opacity=100;textbox03.Opacity=100;

textbox02.Text="命中:"+right.ToString();

textbox03.Text="未中:"+(mingzhong. Length-right).ToString();

textbox01.Text="命中率:"+((double)right/(double) mingzhong.Length).ToString().Substring(0,6);

}

}

3.交互控制

開始游戲后,當鼠標移動到某一三角函數線的末端,鼠標指針變成手形,按下鼠標左鍵,即點擊三角函數線末端的隱形按鈕,開始坦克動畫sb_tank,炮彈動畫sb_paodan。

發射炮彈后,判斷點擊位置與image01圖片中三角函數式是否一致。若image01中是正弦式,則點擊位置在單位圓上;若image01中是余弦式,則點擊位置在x軸上;若image01中是正切式,則點擊位置在直線上。如果一致,則將path_paodan的高度定位于image01的當前高度,并播放炮彈爆炸動畫sb_paodan、播放聲音、將image01的圖片更換為骷髏圖片,表示命中,否則只發炮彈沒有爆炸。以下是btsin30的點擊事件處理代碼:

privatevoid btsin30_Click(objectsender,System. Windows.Routed Event Argse)

{

if(imgfilename=="sin30.jpg")//如果命中

{

mingzhong[0]=true;//記錄命中

image01.Source=null;

Uriimage001url=newUri("imgsjhszhi/kulou01.jpg", UriKind.RelativeOrAbsolute);//更換為骷髏圖片

BitmapImagebitmap001=new BitmapImage(image001url);

image01.Source=bitmap001;

sb_tank.Begin();mediasound.Stop();mediasound.Play();

Canvas.SetTop(path_paodan,Canvas. GetTop(this.image01)-10);//爆炸高度

sb_baoza.Begin();paodan01();

}

else//未命中則沒有爆炸

{sb_tank.Begin();paodan01();}

}

當image01遍歷myimage數組中的所有圖片后,終止sb01動畫播放,image01的圖片換成停止標志,并統計命中情況。

結束語

游戲開發,首先需要有創意的設計,但好的設計卻又不一定能實現,并且設計與實現常常需要反復測試,很難一蹴而就。

本游戲是用ExpressionBlend4開發Silverlight應用程序進行輔助教學的一個嘗試。經過多次應用證明,該游戲對提高學生的學習興趣、提高對三角函數特殊值的記憶效率有明顯的幫助。

(編輯:王天鵬)

book=67,ebook=65

TP311.1

:A

:1673-8454(2012)10-0067-04

猜你喜歡
動畫記憶游戲
做個動畫給你看
動畫發展史
我的動畫夢
文苑(2019年22期)2019-12-07 05:28:56
記憶中的他們
數獨游戲
瘋狂的游戲
飛碟探索(2016年11期)2016-11-14 19:34:47
爆笑游戲
我是動畫迷
學生天地(2016年9期)2016-05-17 05:45:06
兒時的記憶(四)
兒時的記憶(四)
主站蜘蛛池模板: 欧美成人亚洲综合精品欧美激情| 亚洲天堂网2014| 亚洲精品va| 免费xxxxx在线观看网站| 国产高清自拍视频| a毛片免费观看| 国产区人妖精品人妖精品视频| 漂亮人妻被中出中文字幕久久| 免费看美女毛片| 欧美精品在线观看视频| 好吊色妇女免费视频免费| 91色老久久精品偷偷蜜臀| 黄色三级网站免费| 精品一区国产精品| 日韩精品久久久久久久电影蜜臀| 亚洲欧美不卡| 国产精品偷伦在线观看| 国产精品视频公开费视频| 午夜精品国产自在| 免费人成又黄又爽的视频网站| 国产在线一二三区| 美女毛片在线| 99成人在线观看| 四虎AV麻豆| 亚洲精品第五页| 久久永久免费人妻精品| 在线观看亚洲国产| 91精品国产情侣高潮露脸| 国产男人的天堂| 午夜影院a级片| 夜夜拍夜夜爽| 丁香婷婷在线视频| 国产三级成人| 国产自在线播放| 亚洲床戏一区| 久久国产热| 亚洲中文字幕手机在线第一页| 99久视频| 丝袜亚洲综合| a在线亚洲男人的天堂试看| 色色中文字幕| 3344在线观看无码| 毛片大全免费观看| 亚洲欧美日韩成人在线| 久久综合九色综合97网| 久久五月视频| 国产美女精品一区二区| 国产爽歪歪免费视频在线观看 | 在线观看精品国产入口| 国产成人三级在线观看视频| 99热国产这里只有精品9九 | 欧美一区二区三区香蕉视 | 国产特级毛片| 日韩成人在线网站| 精品国产成人高清在线| 国产十八禁在线观看免费| 国产成+人+综合+亚洲欧美| 2024av在线无码中文最新| 成人午夜天| 亚洲日韩精品无码专区97| 国产微拍精品| 这里只有精品免费视频| 中文字幕在线看| 国产无码制服丝袜| 午夜国产在线观看| 久久综合色视频| 成人年鲁鲁在线观看视频| 国产69囗曝护士吞精在线视频 | 国产黑人在线| 波多野结衣国产精品| 青青草原偷拍视频| 亚洲中文字幕久久精品无码一区| 99精品这里只有精品高清视频| 亚洲国产成人自拍| 亚洲色无码专线精品观看| 少妇被粗大的猛烈进出免费视频| 国产精品va| 99伊人精品| 亚洲成人黄色网址| 国产精品v欧美| 亚洲香蕉在线| 四虎国产永久在线观看|