当前位置:首页 > 演讲稿 > 经典水果连连看2【三角公式连连看游戏设计与实现】
 

经典水果连连看2【三角公式连连看游戏设计与实现】

发布时间:2019-06-25 04:05:08 影响了:

  摘 要:为了帮助学生记忆特殊角的弧度数、特殊角的三角函数值、诱导公式、和差公式、倍角公式等内容,作者用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 && n<=40)

猜你想看
相关文章

Copyright © 2008 - 2022 版权所有 职场范文网

工业和信息化部 备案号:沪ICP备18009755号-3