MC新手入门(三十四)------ 函数

C源程序是由函数组成的,实用程序往往由多个函数组成,C语言不仅提供了极为丰富的库函数还允许用户建立自己定义的函数。用户可把自己的算法编成一个个相对独立的函数模块,然后用调用的方法来使用函数。

函数的定义形式
  从主调函数和被调函数之间数据传送的角度看又可分为无参函数和有参函数两种。
1)无参函数
使用场景:在游戏中,我们通常会自己定义一个无参函数来实现创建场景功能,实现程序代码可重用性。
实例:创建场景
目标:游戏运行时创建游戏界面场景

5-6-1-1.png

图5-6-1-1

首先我们将目标转换成逻辑描述:

   游戏运行时,做下面的事情:

                        创建界面背景;

                        创建<开始游戏><排行榜><退出>角色且定位;

                        直到结束。

 

接着我们开始用MC来实现上述的逻辑:

在全局脚本里编写一个函数initform(),代码如下:

              voidinitFrame()//游戏开始界面

                   {
                       Actor *bgActor;
                       Actor *buttonActor;

                    bgActor =  CreateActor("bg","main_bg", "", "", 0, 0,  true);//创建背景角色

                      bgActor->x = view.x + bgActor->width / 2;
                      bgActor->y = view.y + bgActor->height / 2;
   

                bgActor = CreateActor("menu", "cf_BannerMenu","", "", 0, 0, true);//创建选择菜单

                      bgActor->x = view.x + view.width / 2;
                      bgActor->y = view.y + view.height / 2;
   

                buttonActor = CreateActor("button","cf_ButtonStartGame", "", "", 0, 0, true);//创建游戏开始

                      buttonActor->x = view.x + view.width * 0.5;
                      buttonActor->y = view.y + view.height * 0.43;

                buttonActor = CreateActor("button", "tuichu","", "", 0, 0, true);//创建游戏退出

                      buttonActor->x = view.x + view.width * 0.5;
                      buttonActor->y = view.y + view.height * 0.63;

                buttonActor = CreateActor("button","paihangbang", "", "", 0, 0, true);//创建排行榜

                      buttonActor->x = view.x + view.width / 2;
                      buttonActor->y = view.y + view.height * 0.53;     
                 }   

 

从上面的语句中我们可以总结出
        无参函数形式:
              类型标识符 函数名()
             {
                 声明部分
                 语句
             }
其中类型标识符和函数名称为函数头。类型标识符指明了本函数的类型,函数的类型实际上是函数返回值的类型。函数名是由用户定义的标识符,函数名后有一个空括号,其中无参数,但括号不可少。
花括号{}中的内容称为函数体。在函数体中声明部分,是对函数体内部所用到的变量的类型说明。

2)有参函数
使用场景:在游戏中,我们通常会自己定义一个有参函数来实现控制角色移动方向功能
目标:通过点击方向键来控制角色移动方向
实例:控制角色移动方向

5-6-1-2.png

图5-6-1-2

 

 

首先我们将目标转换成逻辑描述:

游戏运行时,做下面的事情:

                       点击方向键来控制角色移动方向;

                       直到结束。

 

接着我们开始用MC来实现上述的逻辑:

在全局脚本里编写一个函数move(),代码如下:
              void move(intchoice)//定义函数来选择移动方向
              {
                  switch(choice)
                  { 
                       case 1://向上移动
                       test.xvelocity=0;//x轴速度为0      
                       test.yvelocity=-1;//y轴速度为1
                       break;
                       case 2://向下移动
                       test.xvelocity=0;
                       test.yvelocity=1;
                       break; 
                       case 3://向左移动
                       test.yvelocity=0;
                       test.xvelocity=-1;
                       break; 
                       case 4://向右移动
                       test.yvelocity=0;
                       test.xvelocity=1;
                       break; 
                  }
             }
当点击<向上>按钮时,做脚本编辑:

            move(1); //调用move函数

当点击<向下>按钮时,做脚本编辑,对有参函数的调用:
             move(2);
当点击<向左>按钮时,做脚本编辑,对有参函数的调用:
                      move(3);
当点击<向右>按钮时,做脚本编辑,对有参函数的调用:
                      move(4);
从上面的语句中我们可以总结出,
有参函数的形式:
类型标识符 函数名(形式参数表列)
              {
                  声明部分
                  语句
               }
    有参函数比无参函数多了一个内容, 即形式参数表列。在形参表中给出的参数称为形式参数(形参),它们可以是各种类型的变量,各参数之间用逗号间隔。在进行函数调用时,主调函数将赋予这些形式参数实际的值。形参既然是变量,必须在形参表中给出形参的类型说明。

Demo下载地址:http://www.dongyo.cn/bbs/forum.php?mod=viewthread&tid=2502&extra=page%3D2%26filter%3Dauthor%26orderby%3Ddateline%26orderby%3Ddateline

posted @ 2013-05-16 14:14  zj_king  阅读(239)  评论(0编辑  收藏  举报