MC新手入门(三十四)------ 函数
2013-05-15 15:33
309 查看
C源程序是由函数组成的,实用程序往往由多个函数组成,C语言不仅提供了极为丰富的库函数还允许用户建立自己定义的函数。用户可把自己的算法编成一个个相对独立的函数模块,然后用调用的方法来使用函数。
函数的定义形式
从主调函数和被调函数之间数据传送的角度看又可分为无参函数和有参函数两种。
(1)无参函数
使用场景:在游戏中,我们通常会自己定义一个无参函数来实现创建场景功能,实现程序代码可重用性。
实例:创建场景
目标:游戏运行时创建游戏界面场景
![](http://www.dongyo.cn/bbs/data/attachment/forum/201209/20/112836zw6111l1oolz1olz.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)有参函数
使用场景:在游戏中,我们通常会自己定义一个有参函数来实现控制角色移动方向功能。
目标:通过点击方向键来控制角色移动方向
实例:控制角色移动方向
![](http://www.dongyo.cn/bbs/data/attachment/forum/201209/20/1128363b9qxpjkpjj2jqh3.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
函数的定义形式
从主调函数和被调函数之间数据传送的角度看又可分为无参函数和有参函数两种。
(1)无参函数
使用场景:在游戏中,我们通常会自己定义一个无参函数来实现创建场景功能,实现程序代码可重用性。
实例:创建场景
目标:游戏运行时创建游戏界面场景
![](http://www.dongyo.cn/bbs/data/attachment/forum/201209/20/112836zw6111l1oolz1olz.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)有参函数
使用场景:在游戏中,我们通常会自己定义一个有参函数来实现控制角色移动方向功能。
目标:通过点击方向键来控制角色移动方向
实例:控制角色移动方向
![](http://www.dongyo.cn/bbs/data/attachment/forum/201209/20/1128363b9qxpjkpjj2jqh3.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
相关文章推荐
- MC新手入门(三十四)------ 函数
- MC新手入门(三十五)------ 函数的调用
- MC新手入门(三十八)------ 绘制函数
- MC新手入门(三十七)------ 常用函数
- MC新手入门(三十九)------ 声音函数、游戏控制器
- MC新手入门(三十八)------ 绘制函数
- MC新手入门(三十九)------ 声音函数、游戏控制器
- MC新手入门(三十五)------ 函数的调用
- MC新手入门(三十七)------ 常用函数
- MC新手入门(十五)------ 路径事件
- MC新手入门(二十五)------美术图片要求
- MC新手入门(二)------路径
- MC新手入门(二十四)------ 游戏声效
- MC新手入门(四十九)------ 文件操作
- MC新手入门(十)------事件设置
- MC新手入门(十六)------ 按键操作
- MC新手入门(三十六)------ 指针
- MC新手入门(二十五)------美术图片要求
- MC新手入门(四十一)------ 愤怒小狗制作二
- MC新手入门(五十一)------服务器连接 二