论文部分内容阅读
摘 要:为了帮助学生记忆特殊角的弧度数、特殊角的三角函数值、诱导公式、和差公式、倍角公式等内容,作者用Expression Blend 4 设计了一个小游戏。
关键词:三角公式;游戏设计;辅助教学;Expression Blend
中图分类号:TP311.1 文献标识码:A 文章编号:1673-8454(2012)14-0063-04
三角函数需要记忆的内容很多,如特殊角的弧度数、特殊角的三角函数值、诱导公式、和差公式、倍角公式等等(以下统称“等式”)。为了帮助学生记忆这些内容,笔者用Expression Blend 4 设计了一个小游戏──连连看,通过游戏,可使学生更便捷地掌握三角函数的基础知识。
一、界面及对象设计
如图1所示,界面上部用一个名称为canvas01的Canvas控件内放置40个100×100的Image,Image分别命名为img1、img2……img40,共计40个图片,20个等式。
界面底部用一个名称为canvas02的Canvas放置五个RadioButton,两个Rectangle,一个Button。RadioButton分别命名为rdbutton01、rdbutton02……rdbutton05,用于限制游戏时间;两个Rectangle分别命名为rectangle01、rectangle02,大小与位置都相同,填充色不同,用作指示游戏时间;Button命名为button01,用于开始游戏。
另有两个MediaElement控件,分别加载两种不同的提示声音:正确提示音、错误提示音。
二、程序逻辑设计与实现
开始游戏后,首先加载图片,再处理点击事件。点击界面中的等式图片,如果正确点击了一个等式的左右两式,则这两图片隐藏(透明度置0),并伴随正确提示音;如果点击不正确,则出现错误提示音,图片无其它变化。如果指定时间内成功配对全部等式,给出鼓励提示;如果超出指定时间,注销未能配对图片的点击事件,剩余图片不能再被点击,并给出相应提示。详细设计与实现如下:
1.数据设计
本游戏编入的等式共有88个,每个等式,分左式与右式,分别制作一张图片。对这些图片命名时,给这些图片赋予“值”及“左右”的属性,以便运行时进行比较。如图1所示,一个图片包含tan45°,一个图片包含sin2α cos2α,两个图片包含1,这就是两个等式:sin2α cos2α=1、tan45°=1。包含tan45°的图片文件名为“sj001LB.jpg”,包含sin2α cos2α的图片文件名为“sj001LC.jpg”,包含的图片文件名为“sj001R.jpg”。文件名的前五位是等式的“值”,这三个式子的值相等,文件名的第六位L代表左式,R代表右式,第七位为A、B、C、D……用来区分值相等的不同左式。程序运行时,等式配对,当且仅当点击了一个左式、一个右式且两式的值相等时配对成功。
本游戏使用数组存数据。用两个名称分别为imageLeft、imageRight的字符串数组存放等式左式与右式。这两个数组,长度相同,如果某一等式的左式存放于imageLeft[k],则其右式存放于imageRight[k],下面给出的是两个数组的前三个元素:
string[] imageLeft = { "sj001LA.jpg","sj001LB.jpg","sj001LC.jpg"
string[] imageRight = { "sj001R.jpg","sj001R.jpg","sj001R.jpg"
程序运行时,首先随机取出20个左式,再取出20个对应的右式,以确保每次出来的都是20个等式。
2.图片加载
图片加载由以下过程实现:
private void imagesLoad()
//用图片填充img1→img40
{
int arrleng = imageLeft.Length;
//存放左式的数组长度
int[] arr01 = new int[arrleng]; //定义局部数组
for (int i = 0; i < arrleng; i ) arr01[i] = i;
//数组初始化
arr01=RandomSort(arr01);
//数组随机排序RandomSort()过程代码见
//三角函数特值记忆游戏设计与实现一文件[1]
string[] myimage01 =new String[40];
//局部数组,存放选出的图片文件名
for (int i = 0; i < 20; i ) myimage01[i] = imageLeft[arr01[i]];
//前20个从左式中得到
for (int i = 20; i < 40; i ) myimage01[i] = imageRight[arr01[i-20]];
//后20个由右式中得到
int[] arr02 = new int[40];
//以下三行,对选出的图片又重新随机排序
for (int i = 0; i < 40; i ) arr02[i] = i;
arr02 = RandomSort(arr02);
int n = 1;
foreach (Image c in this.canvas01.Children)
//遍历canvas01,加载图片
{
Image tempimg = c as Image;
if(tempimg !=null
关键词:三角公式;游戏设计;辅助教学;Expression Blend
中图分类号:TP311.1 文献标识码:A 文章编号:1673-8454(2012)14-0063-04
三角函数需要记忆的内容很多,如特殊角的弧度数、特殊角的三角函数值、诱导公式、和差公式、倍角公式等等(以下统称“等式”)。为了帮助学生记忆这些内容,笔者用Expression Blend 4 设计了一个小游戏──连连看,通过游戏,可使学生更便捷地掌握三角函数的基础知识。
一、界面及对象设计
如图1所示,界面上部用一个名称为canvas01的Canvas控件内放置40个100×100的Image,Image分别命名为img1、img2……img40,共计40个图片,20个等式。
界面底部用一个名称为canvas02的Canvas放置五个RadioButton,两个Rectangle,一个Button。RadioButton分别命名为rdbutton01、rdbutton02……rdbutton05,用于限制游戏时间;两个Rectangle分别命名为rectangle01、rectangle02,大小与位置都相同,填充色不同,用作指示游戏时间;Button命名为button01,用于开始游戏。
另有两个MediaElement控件,分别加载两种不同的提示声音:正确提示音、错误提示音。
二、程序逻辑设计与实现
开始游戏后,首先加载图片,再处理点击事件。点击界面中的等式图片,如果正确点击了一个等式的左右两式,则这两图片隐藏(透明度置0),并伴随正确提示音;如果点击不正确,则出现错误提示音,图片无其它变化。如果指定时间内成功配对全部等式,给出鼓励提示;如果超出指定时间,注销未能配对图片的点击事件,剩余图片不能再被点击,并给出相应提示。详细设计与实现如下:
1.数据设计
本游戏编入的等式共有88个,每个等式,分左式与右式,分别制作一张图片。对这些图片命名时,给这些图片赋予“值”及“左右”的属性,以便运行时进行比较。如图1所示,一个图片包含tan45°,一个图片包含sin2α cos2α,两个图片包含1,这就是两个等式:sin2α cos2α=1、tan45°=1。包含tan45°的图片文件名为“sj001LB.jpg”,包含sin2α cos2α的图片文件名为“sj001LC.jpg”,包含的图片文件名为“sj001R.jpg”。文件名的前五位是等式的“值”,这三个式子的值相等,文件名的第六位L代表左式,R代表右式,第七位为A、B、C、D……用来区分值相等的不同左式。程序运行时,等式配对,当且仅当点击了一个左式、一个右式且两式的值相等时配对成功。
本游戏使用数组存数据。用两个名称分别为imageLeft、imageRight的字符串数组存放等式左式与右式。这两个数组,长度相同,如果某一等式的左式存放于imageLeft[k],则其右式存放于imageRight[k],下面给出的是两个数组的前三个元素:
string[] imageLeft = { "sj001LA.jpg","sj001LB.jpg","sj001LC.jpg"
string[] imageRight = { "sj001R.jpg","sj001R.jpg","sj001R.jpg"
程序运行时,首先随机取出20个左式,再取出20个对应的右式,以确保每次出来的都是20个等式。
2.图片加载
图片加载由以下过程实现:
private void imagesLoad()
//用图片填充img1→img40
{
int arrleng = imageLeft.Length;
//存放左式的数组长度
int[] arr01 = new int[arrleng]; //定义局部数组
for (int i = 0; i < arrleng; i ) arr01[i] = i;
//数组初始化
arr01=RandomSort(arr01);
//数组随机排序RandomSort()过程代码见
//三角函数特值记忆游戏设计与实现一文件[1]
string[] myimage01 =new String[40];
//局部数组,存放选出的图片文件名
for (int i = 0; i < 20; i ) myimage01[i] = imageLeft[arr01[i]];
//前20个从左式中得到
for (int i = 20; i < 40; i ) myimage01[i] = imageRight[arr01[i-20]];
//后20个由右式中得到
int[] arr02 = new int[40];
//以下三行,对选出的图片又重新随机排序
for (int i = 0; i < 40; i ) arr02[i] = i;
arr02 = RandomSort(arr02);
int n = 1;
foreach (Image c in this.canvas01.Children)
//遍历canvas01,加载图片
{
Image tempimg = c as Image;
if(tempimg !=null