摘要: 在这个帖子里,我们将介绍一种新的网络服务器数据访问的方式。当我们需要从http服务器接收数据的时候,原来那套针对MC本身的服务器使用的方法将不再适用。这里我们提供两个专门针对http服务器的接口。例:接收演示说明:我们需要向以下地址发送请求http://demo.mc.zifugame.com/还需要向他们传送姓名参数,服务器以name变量来识别,完整地址如下http://demo.mc.zifugame.com/?name=Zhang你可以在浏览器(推荐使用谷歌chrome浏览器,因为这个服务器是根据chrome浏览器开发的)地址栏输入以上地址,会返回一串字符{"state&quo 阅读全文
posted @ 2013-05-16 15:25 zj_king 阅读(295) 评论(0) 推荐(0) 编辑
摘要: 1. 服务器连接数据库既然是要用到数据库,那创建数据库是在所难免的,至于数据库中的表有什么样的字段,在你下载下来的包中就有数据库。详见数据库。在服务器程序中Web.config文件配置连接数据库,如下所示:添加代码如下:<addname="ConnectionStrings" connectionString="Data Source=BAMHWZB6DCXVGDR\SQLDB;InitialCatalog=dy_dfw;User ID=dy_zjj;Password=123456"/>2. 发布服务器网站现在大部分的服务器都架设在微软公司的 阅读全文
posted @ 2013-05-16 15:24 zj_king 阅读(334) 评论(0) 推荐(0) 编辑
摘要: 服务器是现在网络游戏一个必不可少的部分。例如手机游戏<动友大富翁>、<斗地主>等,这都需要依赖于服务器。下面是一个游戏登录、注册界面,图10-1是游戏登录界面,图10-2是游戏注册界面。图10-1图10-210.1概念Web服务器是网络最重要的服务器,是直接服务于用户的服务器,通俗的讲,Web服务器传送(serves)页面使浏览器可以浏览,然而应用程序服务器提供的是客户端应用程序可以调用(call)的方法(methods)。确切一点,你可以说:Web服务器专门处理HTTP请求(request),但是应用程序服务器是通过很多协议来为应用程序提供(serves)商业逻辑(b 阅读全文
posted @ 2013-05-16 15:23 zj_king 阅读(920) 评论(0) 推荐(0) 编辑
摘要: 文件操作 就像看书一样,我们并不会总是一次性把游戏玩通关,往往需要做个记号,下次再继续。在单机游戏里,通常的记录方法就是做一个存档文件,把游戏里跟进度有关的参数存下来,然后下次读取存档的时候根据这些参数来还原上一次退出时的进度。在保存和读取存档的时候,就要用到文件操作的方法来实现。相信大家都接触过不少单机RPG游戏吧,那么我们就以火焰纹章为例,来介绍一文件操作的在游戏中的实际应用。图9-4-1 在图中,我们能看到两个角色站在地图上的特定位置,并且这两个人物也是有区别的,他们的外形,血量,移动距离等等的属性都不尽相同。当我们要对游戏当前的状态进行保存时,我们需要关注的数据就包括:地图代... 阅读全文
posted @ 2013-05-16 15:21 zj_king 阅读(467) 评论(0) 推荐(0) 编辑
摘要: 物理碰撞:就是两个实体间发生撞击相互弹开。 举着简单的例子,例如我们小时候玩的弹珠。用一个弹珠去撞击另一个弹珠,会看到一个弹珠往前移,一个往后移。这就是两个弹珠发生物理碰撞后的现象。同样的,在MC中的物理碰撞也是一样的。当一个角色与另一个角色发生碰撞后弹开的现象。 愤怒的小鸟都玩过吧。这里面就有很多物理碰撞。图9-3-1 如上图所示的红色箭头是两个石头的受力方向。向下的一个重力。和石头之间碰撞后的一个力。两个力叠加在一起让石头产生了碰撞后的运动轨迹(黑色线)。碰撞后如下图。图9-3-2物理世界的元素现在我们来看看怎么实现这样的效果。图9-3-1-1 从图9-3-1-1中,我们可以看到创... 阅读全文
posted @ 2013-05-16 15:11 zj_king 阅读(402) 评论(0) 推荐(0) 编辑
摘要: 在手机游戏的世界里,我们经常能找到一类这样的游戏:它们不是用按键,而是通过向左向右倾斜来实现赛车的转弯;图9-2-1再比如,在一个桌面上,放一个小铁球,通过倾斜手机,小球也会跟着滚动,最终滚到洞里。图9-2-2 这两个游戏的共同点是:需要感应到手机所受的重力情况,再进行判断。在第一个例子的卡丁车里,首先要得到手机所受的重力情况,来判断手机是处于向左倾斜还是向右倾斜的状态,然后进一步做出让赛车向左或向右转的动作。重力感应原理 重力感应跟检测手机的重力状态分不开。现在大部分的智能手机都内置了重力感应的装置。 目前大部分智能手机感应器的实现靠的是内置加速计,它是一个三轴加速计,分为X轴、Y轴和... 阅读全文
posted @ 2013-05-16 15:06 zj_king 阅读(456) 评论(0) 推荐(0) 编辑
摘要: 我们可能都接触过“水果忍者”这款游戏,通过手指在屏幕的滑动来模拟刀的砍切动作。图9-1-1 我们可能玩过手机上的塔防类的游戏,我们能用手指拖动要建造的箭塔到制定的位置;指头点击箭塔会弹出升级以及贩卖的选项;用两个指头去捏屏幕,能够放大或者缩小地图。那么以上说到的拖动,点击,捏等这些能被手机识别的手势,就属于我们这部分要讲到的手势支持的内容。图9-1-2 手势支持,顾名思义,就是手机能识别你的手指的动作。目前在MC能做到的手势支持的动作有:点击,拖动,滑动,捏开/合,长按,短按。<ignore_js_op>图9-1-3那么这些功能在MC是如何实现的呢?手势支持的实现在MC里实现手势支 阅读全文
posted @ 2013-05-16 15:03 zj_king 阅读(584) 评论(0) 推荐(0) 编辑
摘要: 绘画功能 绘画功能是实现用鼠标在画布上面画图。1.设置画笔 给角色act_drawActor.添加事件里添加<创建角色>事件,在创建角色添加脚本来设置默认画笔,如下图8-2-2-1 所示:图8-2-2-1图8-2-2-22.设置鼠标 实现鼠标左键按下开始绘画,鼠标左键弹起时停止绘画。在添加鼠标事件之前先在全局脚本里添加idraw变量,来标识鼠标是按下还是弹起,0表示弹起,1表示按下。给角色act_drawActor.添加事件里添加<鼠标键按下>事件,在鼠标键按下添加脚本,如下图8-2-2-3所示:图8-2-2-3图8-2-2-4给角色act_drawActor.添加事件 阅读全文
posted @ 2013-05-16 14:55 zj_king 阅读(249) 评论(0) 推荐(0) 编辑
摘要: 网络通信是现代信息技术的一个重要组成部分,与我们日常生活息息相关。例如最常见手机QQ、MSN、微信等聊天工具,还有手机游戏<你画我猜>、<斗地主>等,这都需要依赖于网络。下面是一个<你画我猜>游戏运行界面,图8-1是用户1在游戏界面画图,图8-2是用户2在游戏界面就马上就接收到用户1所画的画。图8-1 用户1图8-2用户2通信协议MC通信协议是采用UDP和TCP两种协议,点击菜单栏的<设置>,在游戏设置界面里可以看到。如下图8-1-1所示:图8-1-1 UDP协议的全称是用户数据报协议( User Datagram Protocol ),是一种无 阅读全文
posted @ 2013-05-16 14:51 zj_king 阅读(258) 评论(0) 推荐(0) 编辑
摘要: 添加游戏全局脚本1. 点脚本,全局代码,在弹出的对话框中图7-5-1图7-5-2在空白处写如下代码: void MoveHorizon(); void UpClick(int a); void jumpChangeAnimation();/*****************************************************************************创建MoveHorizon方法用来判断小狗是否在50的水平线上。当在水平线上方,让小狗的y轴速度加1的向下掉当在水平线下面时,让小狗y轴速度为-1的向上移动。当在水平线上,就小狗y轴速度为... 阅读全文
posted @ 2013-05-16 14:46 zj_king 阅读(235) 评论(0) 推荐(0) 编辑
摘要: 创建游戏角色 我们打开mobileCreate软件,点【游戏设置】设置游戏的视图大小,如图:图7-4-1图7-4-2 我们先创建一个游戏角色,点状态栏中的【创建角色】图标,创建角色,并在【角色管理】的基本属性内输入名字: “actPlayerDog”,类型:“Normal”在【角色管理】里面,点击【角色控件】里面的【角色】按钮添加角色,在【角色面板】中可以看到如【图7-4-3】:图7-4-3注意:有一些角色只有在需要时被创建使用,而不需要刚开始就被创建,否则会出现一些不必要的尴尬事件。譬如在愤怒的小狗中开始画面跑出一只小狗,这样就很唐突。然后击点“添加动画”在弹出框里点“打开文件”选择图片“a 阅读全文
posted @ 2013-05-16 14:43 zj_king 阅读(230) 评论(0) 推荐(0) 编辑
摘要: 添加主界面添加背景: 添加“actAPbg”角色,再添“animInfCheck”,“animInfMain”,“animInfOver”,作为背景图片。添加按钮: 添加“actAPBtn”角色,再添“animBtnHelp”,“animBtnPro”,“animBtnQuit”,“ animBtnRetry”,“animBtnStart”,“animBtnTochs”做为按钮相关的图片。在“actAPBtn”角色中,添加“CreateActor”,“Mouse Button Down”,“MouseButton Up”三个事件: 1. “创建角色”的脚本编辑器行为中,添加代码使动画帧不会.. 阅读全文
posted @ 2013-05-16 14:35 zj_king 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 学到这里,我们已经学会怎样使用MC去实现游戏所需要的动作了,那么如何去设计一套完整的游戏呢?如何把各个角色的动作连贯成有趣味又有吸引力的游戏呢?这里我们一起来回顾一下之前所学的知识,总结一下,我们应该怎样去设计一整套游戏,这里我们来具体分析一个游戏设计方案,该游戏案例叫做《愤怒的小狗》。创建游戏世界 本游戏是一款敏捷类的小游戏。画面的整体风格以清新的欧美风格为主。与同类型的游戏相比,我们的游戏特色在于:承接系列游戏的思路,安排了可延伸的剧情模式。在游戏的体验上增加了追逐的模式。让玩家在游戏的过程中充分感受到这种紧张和刺激。游戏的目的在一定难度上确保大部分玩家能顺利通关,并且引出后续剧情以及为. 阅读全文
posted @ 2013-05-16 14:34 zj_king 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 声音函数声音函数使用PlayMusic, PlayMusic2, PlaySound, PlaySound2返回的频道(channel)setPan: 功能:设置声音的声道(音乐无效) channel:使用0则作用于所有频道(channel) pan:-1.0(左声道)到1.0(右声道) void setPan(int channel, double pan)脚本语法: setPan(channel, -1);setVolume: 功能:设置声音或音乐的音量 channel: 使用0则作用于所有频道。 volume: 0.0到1.0 voi... 阅读全文
posted @ 2013-05-16 14:33 zj_king 阅读(191) 评论(0) 推荐(0) 编辑
摘要: 我们都知道,手机或一些触屏的电子设备中,经常都会有一个手绘的功能,在MC中也支持绘图的功能,这个功能则要涉及到一些MC的函数与Canvas类型的角色,下面通过一个例程学习如何用MC进行绘画,如【图6-2-1】绘图。图6-2-1 这个例程很简单,如上图所示,只有一个Canvas类型(前面有提到MC角色的种类)的角色(例子中的角色名:drawActor),这个角色是画图所必需的,它就是一个画布,学员可以在它的内部作画。如【图6-2-2】角色的事件有三个:图6-2-2三个事件的代码分别如下: Mouse Button Down(Left): draw = 1; setpen(25... 阅读全文
posted @ 2013-05-16 14:28 zj_king 阅读(325) 评论(0) 推荐(0) 编辑
摘要: MC的特点就是以事件(event)、行为(action)为驱动,通过调用MC工具的引擎来进行游戏开发的,下面将通过一些例程来对常用的MC的事件(event)、行为(action)和引擎进行说明。 在前面的章节中有介绍如何创建角色和在角色上添加动画,下面我们要设计一个简单的游戏,实现当鼠标按下时,人物响应相应的动作,当人物击打到目标的时候,把目标击碎,并让目标消失,同时产生一个新的目标,相应的屏幕也产生一次抖动的效果。 如图6-1-1,创建了7个角色,其中actBackground、actTarget、actRole是普通的Normal类型的角色,将三个角色的启动时创建均勾选;actUp、act 阅读全文
posted @ 2013-05-16 14:19 zj_king 阅读(501) 评论(0) 推荐(0) 编辑
摘要: 什么是指针 在计算机中,所有的数据都是存放在存储器中的。一般把存储器中的一个字节称为一个内存单元,不同的数据类型所占用的内存单元数不等,如整型量占2个单元,字符量占1个单元等,为了正确地访问这些内存单元,必须为每个内存单元编上号。根据一个内存单元的编号即可准确的找到该内存单元。内存单元的编号也叫做地址。既然根据内存单元的编号或地址就可以找到所需的内存单元,所以通常也把这个地址称为指针。 简单地说,指针就是地址。这里的地址是指内存地址,但是与我们日常生活中的地址很相似,他说明了某一个角色(对程序来说是数据,对生活中的角色可以是人,也可以是物等)所在的地方。我们通常会向某人询问他的住址,然后把.. 阅读全文
posted @ 2013-05-16 14:17 zj_king 阅读(315) 评论(0) 推荐(0) 编辑
摘要: 在定义函数之后,我们就会开始调用函数来实现相关的功能, 如: 在无参函数的例子中初始化游戏界面:initFrame(); 在有参函数的例子中点击<向上>按钮:move(1);从而可以得出函数调用的一般形式为: 函数名(实际参数表) 对无参函数调用时则无实际参数表。实际参数表中的参数可以是常数,变量或其它构造型数据及表达式。如果有多个参数则各实参之间用逗号分隔。被调用函数的声明和函数原型如:在有参函数的例子的中定义和声明是 void move(int choice)//函数声明。 void move(int choice)//函数定义... 阅读全文
posted @ 2013-05-16 14:16 zj_king 阅读(166) 评论(0) 推荐(0) 编辑
摘要: C源程序是由函数组成的,实用程序往往由多个函数组成,C语言不仅提供了极为丰富的库函数还允许用户建立自己定义的函数。用户可把自己的算法编成一个个相对独立的函数模块,然后用调用的方法来使用函数。函数的定义形式从主调函数和被调函数之间数据传送的角度看又可分为无参函数和有参函数两种。(1)无参函数使用场景:在游戏中,我们通常会自己定义一个无参函数来实现创建场景功能,实现程序代码可重用性。实例:创建场景目标:游戏运行时创建游戏界面场景图5-6-1-1首先我们将目标转换成逻辑描述: 游戏运行时,做下面的事情: 创建界面背景; 创建<开始游戏>、<排行榜>、<退出>角色且 阅读全文
posted @ 2013-05-16 14:14 zj_king 阅读(239) 评论(0) 推荐(0) 编辑
摘要: 在游戏设计中,我们常常要存放和读取游戏中的物品数量和名字,或者要读取不断变化的关卡数,这是我们就可以借助数组来实现。下面我们将对数组做详细的介绍。 使用场景:实现RPG游戏中记录并显示物品栏中某物品的名称与数量 目标:实现游戏道具名称和数量的存储和读取 实例:一维数组:本案例实现的逻辑是: 定义一维数组, 之后对数组进行赋值,记录道具的数量, 在点击物品时,读取数组的值,显示物品的数量。实现的代码为: intitemNum[5];//定义一维数组itemNum,用来分别记录5种物品的数量 int itemNum[5]= { ... 阅读全文
posted @ 2013-05-16 14:12 zj_king 阅读(343) 评论(0) 推荐(0) 编辑