ImageVerifierCode 换一换
格式:DOCX , 页数:27 ,大小:60.06KB ,
资源ID:9506763      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9506763.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(01FunCodeC入门word资料36页.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

01FunCodeC入门word资料36页.docx

1、01FunCodeC入门word资料36页FunCode C语言实验教学指南入门篇入 门创建第一个项目运行FunCode双击桌面FunCode快捷方式(如下图),打开FunCode。FunCode会记录上一次打开项目的绝对路径,打开程序后,FunCode会根据该路径自动载入实验项目。如果FunCode记录的绝对路径正好有FunCode实验项目,FunCode打开后的界面类似下图:如果FunCode记录的绝对路径没有FunCode实验项目,FunCode打开后的界面类似下图:创建新项目根据打开后界面的不同,有两种方式创建新的FunCode项目。对应第一种打开方式,点击软件的“项目”菜单,如果要创

2、建C语言实验项目,点击“创建C语言工程”,如下图:对应第二种打开方式,点击“创建”窗口,如下:跳出一个窗口,选择项目相应的编程语言。比如,我们要创建一个C语言的实验项目,选择如下:点击确定,跳出如下窗口:(以下步骤,两种方式都相同)“工程名”只能由字母和数字组成,且不能用数字开头(否则可能导致图片处理出现问题)。我们给该项目取名为seafish。“工程路径”是实验项目的文件夹位置,可任意设置。开发工具支持VC6.0,2008和2010三个版本,根据需要选择。点击“确定”,出现如下界面:如果我们忘记项目的保存路径,或者需要复制工程文件或者整个工程时,点击“项目”面板中的“打开工程文件夹”,可以打

3、开该项目所在的文件夹。 项目面板 工程文件中的内容导入静态精灵创建FunCode项目后,我们首先需要给这个项目添加各种资源,用于游戏界面设计。精灵是游戏中的一种术语,一切游戏资源都称为精灵,如图片、动画、特效、文字、声音等。静态精灵即静态图片。首先,点击软件右侧的“资源”面板,如下:在“资源”面板下方是一排工具按钮,点击第一个按钮“添加一个新的图片资源”,如下:点击按钮后,跳出一个“图片资源”窗口,该窗口展示了FunCode自带的图片资源,窗口左侧是显示图片的名称,右侧是图片预览。用鼠标点击某个名称,右侧会出现图片的预览。用上下方向键可方便选择不同的图片。点击左侧第一个名称background

4、Image,如下图:点击“添加到工程”按钮,图片就会被添加到工程中,出现资源面板的“静态精灵”框中。如下:一张图片被导入后,相应名称会在“图片资源”窗口中消失,避免被两次选中。练 习:按上述操作,把名称为rocksfarImage和rocksnearImage的图片导入到工程中。效果如下:导入动画精灵点击第二个按钮“添加一个新的动画”,可以从FunCode自带的动画资源库中寻找合适的动画导入到工程项目中。如下图:点击按钮后,跳出一个窗口,点击名称“seahorse2sheetImageMapAnimation”,如下图:导入动画精灵的操作与导入静态精灵的操作相同。导入的精灵会出现在“资源”面板

5、的“动画精灵”框中,如下图(在软件中,下图的海马是活动的):与此同时,构成该动画精灵一组图片也会出现在“资源”面板的“动画精灵”框中,如下图:画红圈的1/4说明海马动画是由四张静态图片组成的。在后面我们会进一步讲解静态图片和动画之间关系,以及如何利用静态图片制作动画。在这个工程中,我们既可以使用海马的动画,也可以使用海马的图片。练 习:将名为“angelfish1sheetImageMapAnimation”“angelfish2sheetImageMapAnimation”的动画添加到工程中,效果如下:导入项目模板因为每次添加精灵都十分的繁琐,所以FunCode提供了一种比较简单的方式来添加

6、精灵,那就是导入模板,模板中不仅给出了我们在实验中所需要的精灵,而且还给精灵起好了名字,这就方便简单了我们的操作。具体的方式如下:首先打开软件,找到“项目”选项,如下图:然后点击“导入地图模板”,就会弹出如下对话框,选中你所需要的地图模板就可以了。当然,你也可以制作自己的地图模板,将你想要添加的精灵添加进去之后,就可以点击“项目”, 在“导入地图模板”的下边有一个“保存地图为模板”,点击这个就可以将自己做好的地图保存为模板了。删除精灵如果我们要删除某些导入的工程中的资源,操作方法如下:鼠标左键点击“资源”面板中的某个精灵图标不放,然后拖曳到最后一个按钮“拖曳一个图片到此删除”,如下:删除按钮删

7、除过程如下:鼠标左键点击要删除的精灵图标,如下:按住鼠标左键不放,拖动到删除按钮位置上,如下:放开鼠标后,跳出一个图片按钮,如下:点击“确定”,删除该精灵图片,相应资源从面板中消失。练 习:导入一个静态精灵和一个动画精灵到FunCode工程中,然后将它们删除。设计界面初步在软件中间是“场景预览”区域(以下简称为“场景区域”),要在工程中实际使用的精灵必须拖曳到该区域,如下图.。其中,红色箭头所指的暗绿色方框所包围的区域为游戏运行时的可见区域(以下简称为“可见区域”)。场景区域中方框以外区域在游戏运行时不可见,称为“不可见区域”。只有拖放到场景区域中的精灵,代码才能进行控制。用鼠标左键点击“资源

8、”面板中的某个精灵图标不放,然后拖曳到场景区域。操作如下:Step 1: 鼠标左键点击某张精灵图标。Step 2:按住鼠标左键不放,拖到场景区域Step3:放开鼠标左键,精灵恢复实际大小。Step 4:点击鼠标左键选中精灵不放,可以随意布置精灵的位置Step 5:鼠标左键点击下图红圈标识的8个节点,拖动鼠标可以放到和缩小精灵图片。如果同时按照shift键,则可以保持精灵图片的长宽比不变。step6:改变精灵图片大小,使其刚好与游戏可见区域大小相等。step 7:在设计过程中,我们可以通过鼠标上的滚动滑轮,放大或缩小游戏可见区域,从而方便界面设计。缩 小放 大step8:当界面设计涉及到多张图片

9、时,直接在场景区域点击图片,容易点击到其他图片,通过点击“精灵列表”中精灵的名称,也可以选中场景区域中的图片。练 习:将静态精灵中的两张图片拖到场景区域中,并按照上述操作步骤,布置成如下场景。运行游戏软件菜单栏下方有一排菜单栏,其中有一个按钮为“运行游戏”按钮,如下图:点击该按钮,可运行该游戏。运行时,会跳出一个游戏窗口。如下图:其中Lesson是游戏窗口的名称,后面我们会讲到如何修改游戏窗口的名称。练 习:将两个动画精灵,如右图,拖到场景区域中。其中黄色的鱼放在可见区域,蓝色的与放在不可见区域,并适当调整鱼的大小,如下图。运行程序,看看是什么效果。项目改进打开项目如果我们要使用已经创建好的实

10、验项目,对应也有两种方式:第一种、当打开FunCode出现如下界面:点击“打开”,跳出一个文件窗口,找到实验项目的文件夹。第二种、当打开FunCode出现如下界面:点击菜单“文件”-“打开项目”,如下图:跳出文件窗口,寻找实验项目的文件夹。当在文件窗口中打开一个实验项目的文件夹后,文件夹的内容如下图。project.funProj是工程文件,SourceCode目录包含实验项目的源代码,Bin目录包含游戏资源。选择project文件打开,FunCode就打开相应的实验项目。练 习:关闭FunCode,然后重新打开,找到seafish项目重新载入。给精灵起名称通过设置精灵属性,我们可以实现更多的

11、界面设计效果。选中某个精灵,然后点击“编辑”面板,可以设置精灵的属性。点击选中场景区域中的某个精灵图片,展开“编辑”面板的“程序接口”栏,在“名称”一框中给精灵取名。精灵名称只能用英文和数字,且不能用数字开头。如下:给精灵起名称有两个作用:一、 用代码操作精灵时,需要用到精灵名称。这点我们在后续会详细讲述。二、 当场景区域中有多个精灵时,通过鼠标点击的方式选择精灵就不太方便。当给精灵起了名字后,该名字会出现在“精灵列表”面板中。通过点击列表中相应的名称,也就相应选择了场景区域里的精灵。练 习:给蓝色的鱼取名为bluefish;给对应的精灵取名为sea;给对应的精灵取名为rocksback;给对

12、应的精灵取名为rocksfront。设置精灵的速度选择精灵yellowfish,打开“编辑”面板,展开“物理”框,其中“速度”是用来设置精灵x轴和y轴方向线性速度。如下图:这里,我们了解一下FunCode的坐标知识。FunCode的可见区域的中心点位坐标原点(0, 0),X坐标从左到右逐渐变大,Y坐标从上到下逐渐变大。角度按顺时针方向从0到360度。如下图:因此,如果我们希望yellowfish斜向下游动,应该给该精灵的x轴和y轴方向速度均设为正值。设置如下图:每次对场景区域中精灵进行修改,包括:删除精灵(选择该精灵,点击Delete键),修改精灵属性,改变精灵大小等,应该点击工具栏中的“保存

13、”按钮,然后再运行程序。练 习:选择bluefish,在“编辑”面板的“基本属性”框中的选中“水平翻转”,如右图。看看bluefish会如何变化?让bluefish以10的速度,从右向左水平游动。设置精灵的层次当精灵被拖放到场景区域中,精灵的基本属性中,有个“层”的属性,缺省被设置为0。如右图:。场景区域中有多张图片重叠时,先拖进场景区域的精灵放置在后面,后拖进场景区域的精灵放置在前面。如果我们想改变精灵的前后顺序,可以使用基本属性中后置/前置按钮。如右图:。将yellowfish和bluefish相互重叠,如下方左图。选择bluefish,然后点击“后置”,效果如下方右图。更灵活的办法不同的

14、精灵设置为不同的层。层数越大,精灵越显示在后方。比如,将yellowfish的层设为0,bluefish的层设为5,将两个精灵重合在一起,yellowfish显示在前方,bluefish显示在后方。如下图:练 习:要实现下方的效果,图层设置从后往前依次应该是sea,rocksback,bluefish,rocksfront和yellowfish。设置完毕后运行程序,查看动画效果。精灵与世界边界的碰撞FunCode提供了六个事件,用来实现复杂的游戏效果。精灵与世界边界的碰撞就是其中之一。选择bluefish,然后将鼠标停留在bluefish上,这时在bluefish上方会出现一排按钮,如下图:其

15、中,最后一个按钮是“更改此精灵的世界边界设置”,点击该按钮,场景区域发生变化,如下图:深色被方框框中的区域就是bluefish的世界,带有8个矩形小节点的方框就是世界边界。任何精灵的初始世界边界的正好与屏幕重合。用鼠标拖动那8个矩形小节点,可以改变精灵的世界边界。给精灵设置好合适的世界边界后,按ESC键,场景区域又恢复原状,精灵的新的世界边界就保存下来。给精灵设置了世界边界以后,当精灵活动到它的世界边界时,FunCode就会发出一个“精灵与世界边界碰撞”的事件。注意:当精灵的世界边界设置好以后,它是一个固定区域,并不会随精灵的活动而移动。另外,精灵的世界边界必须比精灵图片本身大。不过,精灵单有

16、世界边界还不能起任何作用,我们还需要设置事件发生后的处理模式。仍然选择bluefish,展开“编辑”模板中的“世界边界限制”框,如下图:限制模式的选项有六个,意义如下:OFF 世界边界关闭。世界边界不起任何作用。NULL 当精灵碰到世界边界时,精灵的响应由用户的程序决定。我们在后续编程时,主要使用这个选项。CLAMP 当精灵碰到世界边界时,精灵逐步停止下来。BOUNCE 当精灵碰到世界边界时,精灵以相同速度按相反方向游动STICKY 当精灵碰到世界边界时,精灵停在边界不动。在一般情况下,认为与CLAMP选项的效果相同。KILL 当精灵碰到世界边界时,精灵被删除。给bluefish选择STICK

17、Y选项,运行程序,看看游戏效果。练 习:改变bluefish的世界边界大小,分别比屏幕小或者比屏幕大,看看游戏运行效果。给yellowfish设置世界边界,然后选择不同限制模式,看看游戏运行效果。精灵与精灵的碰撞精灵与精灵的碰撞也是FunCode提供的六个事件之一。比如:当两条鱼碰在一起,其中较小的一条鱼消失,从而实现大鱼吃小鱼的游戏效果。这里就必须要用到精灵与精灵的碰撞这个事件。FunCode中,当一个精灵具有“发出碰撞”的属性,另外一个精灵具有“接受碰撞”的属性,这两个精灵图片碰在一起时,就发出一个“精灵与精灵碰撞”事件。选择yellowfish,打开“编辑”模板,展开“碰撞”框,把“发送

18、碰撞”勾上,如右图:。选择bluefish,同样操作,但是把“接受碰撞”选上。说明:哪个是发送方,哪个是接受方,并不重要。只要其中一个是发送方,一个是接受方即可。在以后的练习中,我们是通过程序代码来响应精灵与精灵碰撞事件,上面的处理就已经够了。不过如果我们需要由FunCode来响应该事件,我们还需要将其中一个精灵设置为“发送物理碰撞”,另外一个精灵设置为“接受物理碰撞”。该属性设置也在“碰撞”框中。最后,我们要给精灵设置物理碰撞响应。如下图:物理碰撞反应的选项有六个,意义如下:OFF 关闭。物理碰撞不起任何作用。CLAMP 当该精灵与其他精灵碰撞时,该精灵渐渐停止不动。BOUNCE 当该精灵与

19、其他精灵碰撞时,该精灵以相同速度按相反方向游动STICKY 当该精灵与其他精灵碰撞时,该精灵停止不动。在一般情况下,认为与CLAMP选项的效果相同。KILL 当该精灵与其他精灵碰撞时,该精灵被删除。RIGID 当该精灵与其他精灵碰撞时,该精灵被刚性反弹。CUSTOM 当该精灵与其他精灵碰撞时,该精灵按原来的。把yellowfish的物理碰撞反应设置为KILL,bluefish的设为STICKY,运行程序观看结果。练 习:因为物理碰撞的最终效果,取决于两方精灵反应的叠加。随意设置两方精灵的碰撞反应,看看碰撞的最终效果。导入地图模板点击“项目”菜单中的“导入地图模板”,如下:跳出一个对话框,点击其

20、中一个名称,点击“导入到工程”按钮,可以直接将事先制作好的游戏地图(游戏界面)导入到新工程中。使用该功能,可以最快速设计一个新游戏的界面。如下:我们制作的游戏地图,通过点击“项目”菜单中的“保存地图为模板”保存到软件当中,可供下次开发别的程序时,快速使用。编写第一个小程序打开VC+工程FunCode支持VC+ 6.0,2008和2010三种版本编写C语言实验项目。有两种方式可以打开实验项目对应的VC+工程。操作步骤如下:1) 打开FunCode,并打开相应的实验项目。这里,我们打开seafish项目。2) 点击“项目”面板中的“创建VC工程”按钮,如下图。当我们创建FunCode项目时,会相应

21、选择一个VC工程版本(具体参考第一章第一节“创建第一个项目”)。如果我们要使用VC版本与创建时一致,可以跳过这步。seafish创建时,使用的是VC+ 6.0。假设我们要创建2010版本,点击“VC2010”按钮。跳出如下窗口,点击“确定”即可。3) 点击“项目”面板中的“设置启动VC工程”,选择6.0,2008还是2010版本。第一次使用时设置。以后只要不更换VC工程的版本,就无需在操作该步骤。说明:在学校的机房中,学生机的硬盘都是写保护的。因此,电脑一旦重启,之前的设置就作废了,必须重新设置。4) 点击“项目”面板中的“启动VC工程”,它会根据第三步中设置VC工程的版本,用相应版本的VC+

22、打开工程代码文件。比如启动VC工程设置为VC6.0,以后我们每次打开FunCode后,只需要直接点击“启动VC工程”,都能打开VC6.0,从而简化了操作步骤。文件的管理VC6.0中“工作区”窗口是用来管理VC+工程各种资源的,包括各种文件。窗口如下图:工作区底部有三个tab页,点击“FileView”,该页面通过文件夹的形式来管理工程文件。展开“Source Files”,其中Main.cpp是FunCode事先创建好的,实验项目的程序框架(或初始代码)就写在该文件中。如果打开VC6.0没有看到工作区窗口,点击“查看”菜单中的“工作区”,该窗口就会出现在VC中。如下图:如果是VC2008或20

23、10,“工作区”改名为“解决方案资源管理器”,“FileView”也称为为“解决方案资源管理器”,其他则基本相同,如下方左图。如果打开VC2008或2010,“解决方案资源管理器”看不见,点击“视图”菜单的“解决方案资源管理器”,如下方右图。代码文件的组成FunCode C语言程序包含2个文件:Main.cpp和CommonAPI.h。其中,Main.cpp文件包含程序的主函数以及6个事件函数。CommonAPI.h声明了FunCode的C语言API库。Main.cpp文件顶部:#include CommonAPI.h这样,在该文件能够使用FunCode提供的API。学习程序框架双击Sourc

24、e Files中的Main.cpp图标,打开Main.cpp文件。一个未经修改过的Main.cpp文件包含3个方面的代码。1、预编译指令在文件顶部有一句:#include “CommonAPI.h”。其中,CommonAPI.h是个头文件,它包含了FunCode API的函数声明,从而让用户可以直接调用FunCode事先预定义的一些函数,这些函数提供了一系列对图形、图像、声音进行操作的功能,从而简化用户开发游戏的难度。这些预定义,从而方便程序员进行开发的函数又称为API(Application Programming Interface 应用程序接口)。CommonAPI.h文件路径如下,与使

25、用什么版本的VC无关:实验项目路径SourceCodeHeader用记事本等编辑工具可以打开该文件,可查看所需API的函数声明和注释。2、主函数任何一个C语言程序都有一个主函数作为程序入口。FunCode主函数名称为WinMain,名称虽然不叫main,但作用是一样的。该函数的参数的具体含义我们不需要关心。我们在后续章节中会做进一步了解主函数中的代码。3、6个事件函数在主函数下方,定义了6个事件函数,分别是dOnMouseMove,dOnMouseClick,dOnKeyDown,dOnKeyUp,dOnSpriteColSprite和dOnSpriteColWorldLimit。其中,dOn

26、SpriteColSprite和dOnSpriteColWorldLimit分别对应精灵与精灵碰撞事件、精灵与世界边界碰撞事件。这两个事件,我们在“项目改进”一节中已经讲过。另外四个函数分别对应鼠标滑动、鼠标点击、键盘按下、键盘弹起事件。主函数在Main.cpp文件中定义了WinMain函数,该函数是工程的主函数。其结构如下:int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) / 初始化游戏引擎 if( !dInitGameEngine( hInstanc

27、e, lpCmdLine ) ) return 0; / To do : 在此使用API更改窗口标题 dSetWindowTitle(Lesson); / 引擎主循环,处理屏幕图像刷新等工作 while( dEngineMainLoop() ) / 获取两次调用之间的时间差,传递给游戏逻辑处理 float fTimeDelta = dGetTimeDelta();4 / 关闭游戏引擎 dShutdownGameEngine(); return 0;其中1、调用dInitGameEngine函数初始化游戏引擎。如果失败,直接return,程序不再执行。因此,我们写的必须在该函数下方。只有游戏引擎

28、启动以后,执行的代码才有意义。2、调用dSetWindowTitle函数用来修改游戏的名称,只需要将“Lesson”中的字符修改,就可以变成你想要的游戏的名称。本项目中,我们修改成“seafish”3、游戏主循环。每循环一次,执行一次dEngineMainLoop函数。该函数的功能是运行游戏引擎,刷新游戏屏幕,将最新结果展示在游戏屏幕上。此外,当发生鼠标移动、鼠标点击、键盘按下、键盘弹起、精灵与精灵碰撞、精灵与世界边界碰撞这六个事件时,dEngineMainLoop会调用相应的事件函数。这个我们在下一节会具体介绍。游戏单线程的程序,比如游戏上有100辆坦克在移动,程序依次移动这100辆坦克,移

29、动完毕后,就刷新一次屏幕,也就是while循环执行一次。而不是我们感觉的多线程游戏,100辆坦克运动,就有一百个线程在并发执行。4、当游戏运行时,dEngineMainLoop函数始终返回一个true值,游戏一直在while循环中运行。当我们关闭游戏屏幕时,dEngineMainLoop返回false值,循环结束。然后执行dShutGameEngine函数做清理工作,并关闭游戏引擎,整个游戏结束。用代码让鱼游起来我们通过一个简单例子,来了解一下程序应该怎么写。Step1:创建一个FunCode C语言工程,导入一条鱼命名为“yellowfish”,我们的目标,是让yellowfish从左向右以

30、10个单位的速度水平游动。界面如下:Step2:在dSetWindowTitle的上面或者下面添加以下语句:/设置yellowfish的X方向速度为20,Y方向速度为0dSetSpriteLinearVelocity(yellowfish, 20, 0);该函数的意思是设置精灵的线性速度,在CommonAPI.h中可以查找到相关函数。/* dSetSpriteLinearVelocity:设置精灵移动速度* 参数 szName:精灵名字* 参数 fVelX:X方向速度* 参数 fVelY:Y方向速度extern void dSetSpriteLinearVelocity( const char

31、 *szName, const float fVelX, const float fVelY );Step3::编译运行即可看到yellowfish以速度为20在x方向上运动。这样是不是很简单啊!函数命名规则:1、望文生义,通过函数名称了解函数功能;2、函数名称中,除名称首字母外,每个单词的第一个字母要大写,便于识别。FunCode API的命名规则,以dOnSpriteColSprite为例说明:d: 前缀,表明是FunCode提供的函数。目的是避免与用户自定义的函数名称重复。On:Windows编程中,习惯用On表示“当某某事件发生”Sprite:精灵Col:collision的缩写,碰撞。因此,该名称的含义的就是:当精灵与精灵发生碰撞事件发生。所有的FunCode API通过这种读法,都能从字面上了解函数的功能。通过单词首字母大写,虽然该名称由多个单词组成,也能一眼识别。变量命名规则: 在游戏设计中,变量的命名一般采用“匈牙利命名法”。基

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1