gamemaker函数中文帮助
- 格式:doc
- 大小:262.00 KB
- 文档页数:53
Game Maker 教学创建迷宫游戏作者:Mark Overmars版权所有2007 YoYo Games Ltd迷宫游戏是非常流行的游戏类型,用GM可以非常简单的创建该类游戏。
该教程将一步步的介绍如何创建该类游戏。
首先,我们将创建一个最简单的可运行的游戏,然后,将使我们的游戏更具扩展性更具吸引力。
在教程的Example文件夹中提供了游戏中的源程序,制作游戏中用到资源也都在Resources文件夹中给予了提供。
游戏策划在游戏制作之前,我们应该想像一下,我们的游戏应该是什么样子的。
这是游戏设计中最重要,有时也是最困难的一步。
一个好的游戏应该是令人兴奋的、令人惊叹的以及令人上瘾的。
游戏应该为玩家设定清晰的目标,而用户界面也应该是很直观的。
我们将要制作一个迷宫游戏,每一个房间包含一个迷宫。
为了从迷宫中逃脱,玩家必须收集齐所有的钻石,然后到达出口。
为了完成这一目标,玩家需要解决一系列的智力问题,并且要避开怪物。
在这个游戏中,我们可以创建很多种类型的智力问题,例如:必须被放进石头的坑、能用炸弹破坏的墙壁等等。
另外,很重要的一点是:千万不要在第一个房间中就把游戏的所有要素全部展现出来。
一步步的显示新的东西和怪物,将会使游戏更加有趣。
所以,游戏的主要目标是玩家所控制的角色。
游戏中有墙(也可以是不同的类型的东西,这样可以使游戏看起来更吸引人)、需要收集的钻石、还有那些躺在地上不动,被玩家捡起或者被碰触的东西。
另外房间中还需要有一些特殊的东西,此外还要有那些自己走来走去的怪物。
下面就让我们一个一个来处理这些东西吧。
一个简单的开端首先,我们先不考虑游戏中的钻石。
我们将创建这样一个玩家到达出口的游戏。
在这个游戏中有三个实例:玩家、墙和出口。
所以,我们需要为它们准备三个精灵和三个对象。
你可以在教程的Example文件夹里找到第一个最简单的游戏:maze_1.gmk,打开游戏源程序,试着运行它。
游戏中的对象首先,让我们来创建对象。
常数true等同于1.false等同于 0.pi等同于 3.1415...实数函数random(x)返回一个随机的实数,范围从 0 到 x 。
数值总小于 x 。
choose(val1,val2,val3,...)随机返回其中一个参数。
最多可以有16个参数。
abs(x)返回 x 的绝对值。
sign(x)返回 x 的符号(-1,0,或1)。
round(x)返回与 x 最接近的整数。
floor(x)返回比 x 小的最大整数。
ceil(x)返回比 x 大的最小整数。
frac(x)返回 x 的小数点以后的部分。
sqrt(x)返回 x 的开方。
x 不能是负数。
sqr(x)返回 x 的平方。
power(x,n)返回 x 的 n 次方。
exp(x)返回 x 的冥方指数 e 。
ln(x)返回 x 的自然对数。
log2(x)返回 x 的2的对数。
log10(x)返回 x 的10的对数。
logn(n,x)返回 x 的 n 的对数。
sin(x)返回 x 的正弦(x 单位为弧度)。
cos(x)返回 x 的余弦(x 单位为弧度)。
tan(x)返回 x 的正切(x 单位为弧度)。
arcsin(x)返回 x 的反正弦。
arccos(x)返回 x 的反余弦。
arctan(x)返回 x 的反正切。
arctan2(y,x)计算 arctan( y / x ) ,然后返回结果在正确象限内的角度值。
degtorad(x)转换角度到弧度。
radtodeg(x)转换弧度到角度。
min(val1,val2,val3,...)返回参数中的最小值。
最高支持16个参数。
必须全部是实数或全部是字符串。
max(val1,val2,val3,...)返回参数中的最大值。
最高支持16个参数。
必须全部是实数或全部是字符串。
mean(val1,val2,val3,...)返回所有参数的平均值。
最高支持16个参数。
必须全部是实数数值。
median(val1,val2,val3,...)返回参数的中间数(如果参数数目为偶数,则两个中间数中最小的那个作为返回值)。
高级混合模式运行原理混合模式相信大家都使用过bm_add,bm_normal这种经典混合方式,而高级混合模式draw_set_blend_mode_ext对于一个刚接触的人来说是一个十分抽象的概念,不过一旦你了解他,你会发现他是相当简单的,你甚至可以制作自己特定的混合模式,来达到更高的游戏效果,所以这是进阶游戏制作必备的知识,希望大家和之前一样,一定要掌握~高级混合模式的例子实际上不少,不过这个函数不同,从游戏例子里基本不能完全看明白他是怎么工作的,而且最重要的是,在gm自带的help里,几乎对使用细节完全没有任何描述,以下我们就来解析一下这个函数(文中公式图载自gmlscripts,如果有其他疑问,这里也是个不错的去处哦)在高级混合模式和普通不同,他拥有2个参数,第一个你在混合模式下正在使用的绘制命令绘制出的图形(如draw_sprite),而第二个则是在你现在所绘制图形之前原本就拥有的图形,如表面,游戏背景或者是在使用混合模式之前同样坐标下绘制的精灵……等等,并且混合的时候,通道RGB颜色值并不是0~255来表示,而是0~1哦(也就是颜色所占的分量)。
在中文帮助里说过这样一句话(这里不去管帮助里翻译是否通顺,你能理解就行)“正常的混色模式设置源地混合bm_src_alpha和目的地混合bm_inv_src_alpha”。
意思则为:利用这组函数组成的GML:draw_set_blend_mode_ext(bm_src_alpha, bm_inv_src_alpha);你所得到的结果,就和普通并没使用任何混合模式的结果一模一样,这时,我们就从这里入手,首先来理解一下所使用的这2个参数:bm_src_alpha: 混合因素是(As, As, As, As).bm_inv_src_alpha: 混合因素是(1–As, 1–As, 1–As, 1–As).这句话听起来相当抽象,来详细说明一下吧(尽量理解):我们以一个像素为单位,来解析每个图片,每一个像素所经历的混合过程:bm_src_alpha如上所写,混合因素是4个As,这4个As的参数分别代表的是( R , G , B , A )即图像的红、绿、蓝、通道,现在使用了bm_src_alpha,意义就为将在这4个参数上,分别都乘以一个As,As在这里是什么意思呢,即是在你正在绘制的图形的alpha值,所以乘以As以后,那么就变为了( R * As , G * As , B * As , A * As )。
一、GML语言概述Game Maker内置一款编程语言。
让你在标准动作之外取得更多的自由度和操纵力。
那个语言咱们简称它为GML (Game Maker Language)。
你能够在很多地址用那个语言编写代码。
第一,当你概念脚本的时候。
脚本确实是一份GML程序。
第二,当你在一个事件中添加新动作时。
在编写代码动作时你也一样能够利用GML。
第三,若是你想在一个动作中利用指定的一个值,你一样能够利用GML来表达。
一段语句如下所说,并非是完整的程序,只是计算出结果的一段代码。
在本章中咱们将向你描述GML的大体概念。
当你希望学习利用GML时,那个地址有一些东西你需要留意。
第一,你的所有资源(精灵、对象、声音、等等)你必需利用一个以字母开头,全数由字母、数字或下划线组成的名称。
不然的话你将无法在程序中正确的挪用他们。
确保所有资源都有不同的名字。
同时也要注意不要将资源取名为self、global或其他保留字,因为这些字符在GML中有特殊含义(具体有哪些保留字将在后面详细论述).GML的相关信息能够在以下页面找到:一个程序变量赋值表达式扩展变量在其他实例中概念变量数组If 语句Repeat 语句While语句Do语句For语句Switch语句Break语句Continue语句Exit语句函数脚本With结构注释GML中的函数和变量一个程序一个程序包括一套完整的指令,称为语句。
一个程序必需以'{ '开头,以'} '结尾。
之间是语句文本。
每行语句必需以';'分号结尾。
因此语句的通常形式应该是如此的:{<statement>;<statement>;...}语句的样式能够有很多种,将在以下各章节论述。
变量和其他语言一样,GML中也有变量。
变量是存储信息的一段内存空间。
他们各有不同的名字以便于你去挪用他们。
GML中的一个变量既能够存储一个真实数字,也能够存储一个字符串。
额……其实本人还是比较笨的,摸了很久也不知道这软件从哪里入手,后来把官方例子拿过来稍微研究一下,发现原来也不是很难,写给跟我一样一时找不到北的朋友(我自己摸索一下之后,又再重复看了一遍@hai 兄的教程,突然豁然开朗,之前看不明白的地方都基本搞清楚了,感谢hai 兄)。
下面说下我的一些心得。
这游戏刚开始的时候第一眼给我的感觉略蛋疼,一堆水果飞来飞去,然后屏幕上的炸弹越来越多(我还以为是用键盘来玩的……),其实这是让你用鼠标点击水果得分,点错炸弹的话游戏结束。
特点是不同水果速度不同,因此点中难度和得分也不同,同时水果会碰墙反弹,而炸弹会越来愈多,所以到后面游戏难度会直线上升。
游戏结束后会弹出得分排行榜(类似WINDOWS扫雷?)然后正式开始分析游戏源工程,首先是精灵:自上而下:墙壁:给水果反弹用的苹果香蕉炸弹樱桃草莓然后是音乐:击中水果的效果音游戏背景音击中炸弹爆炸音接着是背景图:只有一张,就是那个木质地板。
下面是对象(这里是我主要想说的地方):有没发现,除了背景图以外,之前的资源都被引进来了?搞过RPG MAKER都知道,RM自带一个库,里面有各种的角色啊、地图啊、音乐啊,其实那就是一个对象库,赋予这些我们上面那些资源逻辑行为。
或者学过编程特别是面向对象编程的都知道其实这里就是定义每个对象的类。
好啦,继续一个个分析:对于墙壁对象,几乎没有什么动作(编程角度上叫方法),但是有一个很重要的属性是“固体”,我觉得不一定带有固定不能移动的意思,而更多的是为碰撞服务,也就是让水果对象不能穿越,让炸弹不能出现在这里。
以下是水果对象:可以看到,基本上他们的逻辑行为是一样的,不同的只有速度和方向而尔、决定一个对象的行为有两个编辑框,是“事件”和“动作”。
一句话可以描述他们之间的关系:对象的行为就是在某些情况(事件)下做某些特定的事情(动作)用苹果的行为来说明一下吧:第一个行为是“在被创建的时候(Create)朝某个方向移动(Start moving in a direction)”而点击Start moving in a direction的时候我们可以对它进行编辑:应用到指的是谁移动,这里当然是自已要移动。
J2ME中文教程(6)— GAME API第6章 GAME API6.1 游戏API简介6.2 GameCanvas的使用6.2.1 绘图6.2.2 键盘6.3 Sprite的使用6.3.1 Sprite帧6.3.2 帧序列6.3.3 Reference Pixel6.3.4 Sprite的变换6.3.5 绘制Sprite6.3.6 碰撞检测6.4 Layer的使用6.4.1 TiledLayer6.4.2 LayerManager6.5 一个示例6.6 小结6.1 游戏API简介MIDP 2.0相对于1.0来说,最大的变化就是新添加了用于支持游戏的API,它们被放在javax.microedition.lcdui.game包中。
游戏API包提供了一系列针对无线设备的游戏开发类。
由于无线设备仅有有限的计算能力,因此许多API的目的在于提高Java 游戏的性能,并且把原来很多需要手动编写的代码如屏幕双缓冲、图像剪裁等都交给API 间接调用本地代码来实现。
各厂家有相当大的自由来优化它们。
游戏API使用了MIDP的低级图形类接口(Graphics,Image,等等)。
整个game 包仅有5个Class:GameCanvas这个类是LCDUI的Canvas类的子类,为游戏提供了基本的“屏幕”功能。
除了从Canvas继承下来的方法外,这个类还提供了游戏专用的功能,如查询当前游戏键状态的能力,同步图像输出;这些功能简化了游戏开发并提高了性能。
LayerLayer类代表游戏中的一个可视化元素,例如Sprite或TiledLayer是它的子类;这个抽象类搭好了层(Layer)的基本框架并提供了一些基本的属性,如位置,大小,可视与否。
出于优化的考虑,不允许直接产生Layer的子类(不能包外继承)。
LayerManager对于有着许多Layer的游戏而言,LayerManager通过实现分层次的自动渲染,从而简化了游戏开发。
用游戏盘古-GM 打造专业游戏教程版本:6.0版(2004-11-12)Edit by liver(教程中的GM均指GameMaker)入门篇目录第一章游戏梦想从里开始第二章安装超强利器Gamemaker第三章GM最初印象第四章看一个例子吧第五章用户界面初探5.1文件菜单 5.2编辑菜单 5.3添加菜单 5.4窗口菜单 5.5帮助菜单 5.6资源浏览栏第六章定义精灵图像(sprite)第七章音效以及背景音乐(sound&music)第八章背景图像(background)第九章定义物体物体(object)第十章解析“事件”(event)第十一章动作(action)集合11.1物体移动(move)11.2主要动作集合一11.3主要动作集合二11.4控制动作集合11.5绘制动作集11.6代码动作集(draw)11.7使用变量和表达式第十二章场景(room)的设计12.1增加实体物体(instance)12.2设定场景12.3设定场景背景第十二章(二):十年磨一剑发布你的游戏高级篇第十三章精灵图像sprite高级使用13.1编辑/修改精灵图像13.2strip图像集合的使用13.3编辑子图像13.4 高级图像设定第十四章音效&音乐探析第十五章背景高级教程第十六章物体物体高级使用16.1深度16.2持续存在的物体物体16.3父物体物体16.4遮罩的使用mask第十六章(二):动作集合高级使用篇16.2.1移动16.2.2 主要集合16.2.3控制集合16.2.4绘制集合16.2.5粒子动作16.2.6其它动作集合extra第十七章场景高级使用17.1高级设定17.2增加图像元件tiles 17.3镜头效果views第十七章(二)字体font第十八章路径path18.1路径的设定18.2把路径赋予物体18.3路径事件第十九章时间轴timelines第十九章(二)脚本第二十章完成游戏一.制作游戏帮助二.游戏选项设定(1.图形选项2.分辨率3.其它各选项4.进度条选项 5.常量6.独立运行游戏中的文件包含7.纠错设置8.设置软件信息)三.怎样使你的游戏运行速度更快第二十一章GML游戏设计语言(高级用户)GM完全中文开发教程第一章游戏梦想从里开始——做自己的游戏游戏给了我们第二生命,在游戏里我们可是上天入地,飞檐走壁,无所不能。
Gamemaker打砖块教程全解教程页 1 of 13引言欢迎来到Gamemaker~本教程将告诉你如何使用游戏制作语言(GML)创建你的第一个游戏,将需要大约30分钟完成。
我们希望它会教你用Gamemaker进行工作的重要基础,以及给你的游戏实验的基础和不断提高的同时学习所有关于这个难以置信的编程工具。
既然这是一个教程,我们准备重制一个每个人都知道的经典街机游戏打砖块~学习完本教程结束时,您将创建一个玩家控制的球拍,一个弹跳球,砖,墙,和一些其他的东西,所有这些都将学习Gamamaker如何工作,如何使用GameMaker Language(GML)编码和(我们希望~)在这个过程中体会到乐趣~你将要开发的游戏会使用一些特殊的资源,我们已经为这个教程特别创建了资源。
你只需在您的计算机上找到他们,请去Gamemaker屏幕的顶部菜单,并选择Help下拉菜单。
你会看到一个选项标记Open Project在资源管理器。
如果你选择了该项,那么标准文件浏览器将打开显示你的内容Gamemaker工程目录,你可以浏览“Assets”子目录,所有的资源都存储在“Graphics”(图片)和“Sounds”(声音)文件夹下。
同时还建议你打开帮助手册(按F1来对开),这样你就可以阅读教程中使用的函数的一些具体细节。
单击 Next 按钮进入教程的下一页。
教程页 2 of 13添加一些精灵像前面介绍的,我们想复制一个打砖块游戏,所以让我们来创建一些游戏中要用到的基础的对象。
首先我们需要为游戏中的砖块添加精灵,所以右击资源树精灵文件夹,选择第一个选项“Create Sprite”(创建精灵)现在你可以命名你的精灵,使它可以明确说明是一个砖块的精灵,我建议使用“spr_brick”(前置是资源类型,帮助你在以后的大型游戏中非常容易使用),现在点击按钮“Load sprite”,然后浏览到这个教程的资源文件夹(如果你不确认在哪里可以找到,你可以点帮助菜单,并选择“用资源管理器打开工程”)既然你将浏览助手,然后你可以选择砖块精灵资源了。
显示文章:$game_temp.message_text=""显示引号中的文章。
更改文章选项:$game_system.message_position =0,1,2表示上、中、下,三个位置$game_system.message_frame =0 ,10表示不透明,其他的话就透明等待:@wait_count = X等待X帧中断事件处理:command_end把某一个事件暂时消除$game_map.events[X].erase其中X表示把X号事件暂时消除,如果是消除本事件X = @event_id执行公共事件:$game_mon_event_id = 编号执行编号的公共事件。
注意,这个执行和直接在事件中的公共事件有微妙区别。
开关操作:$game_switches[编号] = true / falsetrue是打开,false是关闭变量操作:$game_variables[编号] = 数值这里有一些常用的内容:rand(100):返回0-99的随机数rand(100)+10000:返回10000-10099的随机数$game_party.item_number(编号):编号物品的个数角色相关:以下为某编号的角色的相关属性生命:$game_actors[编号].hp精神:$game_actors[编号].sp经验:$game_actors[编号].exp等级:$game_actors[编号].level最大生命:$game_actors[编号].maxhp最大精神:$game_actors[编号].maxsp力量:$game_actors[编号].str灵巧:$game_actors[编号].dex速度:$game_actors[编号].agi魔力:$game_actors[编号].int攻击力:$game_actors[编号].atk物理防御:$game_actors[编号].pdef魔法防御:$game_actors[编号].mdef回避修正:$game_actors[编号].eva姓名:$game_actors[编号].name职业编号:$game_actors[编号].class_id职业名称:$game_actors[编号].class_name武器编号:$game_actors[编号].weapon_id防具1编号:$game_actors[编号].armor1_id防具2编号:$game_actors[编号].armor2_id防具3编号:$game_actors[编号].armor3_id防具4编号:$game_actors[编号].armor4_id完全回复:$game_actors[编号].recover_all领悟特技:$game_actors[编号].learn_skill(编号)遗忘特技:$game_actors[编号].forget_skill(编号)位置(前卫返回0,中卫返回1,后卫返回2):$data_classes[$game_actors[编号].class_id].position学会特技总数:$game_actors[编号].skills.size敌人:$game_troop.enemies[编号]敌人拥有角色的部分功能,包括.hp,.sp,.maxhp,.maxsp,.str,.dex,.agi,.int,.atk,.pd ef,.mdef,.eva地图的事件属性:$game_map.events[编号].x,$game_map.events[编号].y编号事件的x,y 坐标$game_map.events[编号].screen_x,$game_map.events[编号].screen_y编号事件的屏幕x,y坐标$game_map.events[编号].direction编号事件的朝向$game_map.events[编号].terrain_tag编号事件所处的地形标志$game_map.events[编号].moveto(x,y)把事件扔到(x,y) ——————————————————以上几个事件的,如果要求为角色,则为“$game_player.x”等地图ID:$game_map.map_id同伴总人数:$game_party.actors.size步数:$game_party.steps金钱:$game_party.gold游戏总时间(秒数):Graphics.frame_count / Graphics.frame_rate 游戏总帧数:Graphics.frame_count游戏帧速率(可直接=n调整):Graphics.frame_rate计时器剩余秒数:$game_system.timer / Graphics.frame_rate 存档次数:$game_system.save_count独立开关操作:$game_self_switches[[地图编号,事件编号,"A"]] = true/false把地图编号的地图上的事件编号的事件的A开关打开。
利用GameMaker制作教学游戏课件作者:尹永田苏清香来源:《中小学信息技术教育》2009年第05期国内外研究表明,教学游戏在学生的学习过程中扮演着非常重要的角色。
若将一定的学习知识或考核内容采用适当的方式置于教学游戏中,不仅能激发学生的学习热情,还能使他们在游戏情境中获取知识,提高解决问题的技能。
Game Maker是美国Mark Overmars公司推出的一款可视化游戏制作软件。
它功能强大,且界面简洁,容易上手。
因此,备受学科教师的青睐。
一、Game Maker简介目前,Game Maker最新版本为Game Maker 7.0(下载地址:www.gamemaker.nl/download.html)。
它能够将复杂的游戏功能置于简单的操作中,学科教师不用学习任何编程语言即可轻松制作教学游戏,并能方便地将作品导入其他多媒体课件中。
该软件具有如下特点:1.直观易用的可视化开发界面。
教师通过设计适当的教学游戏情境,利用简单的鼠标操作,就能轻松制作出多媒体教学游戏。
2.支持多媒体素材的合成与处理。
Game Maker支持文字、图形、动画及声音等多种格式,并能在开发过程中对素材进行简单处理,以符合游戏设计的要求。
3.强大的交互控制功能。
Game Maker不仅支持鼠标左、中、右键的交互行为,还可根据游戏的操作特点,用自定义键盘的方式进行交互。
4.丰富的可扩展功能。
Game Maker是一个模块化游戏集成操作平台,有许多外挂程序用以扩充游戏功能,能够体现课件制作中的积件思想。
此外,利用Game Maker制作的游戏,不仅可以在单机上运行,还可以在校园网或Internet 上运行,供多用户共同参与。
二、Game Maker游戏制作教学游戏设计是游戏制作的前提。
它能规划游戏的内容和总体结构,使其体现一定的教学思想,并提高游戏的开发效率。
因此,学科教师在游戏制作前需要做好游戏脚本的设计。
脚本设计完成后,可进行游戏的制作。
GameMaker HTML5游戏开发国内首个中文图文教程加入“搜神记”我们的游戏需要墙壁的图像,水果,和鬼。
这种图像被称为游戏制作的精灵。
所以第一步是添加一些精灵。
添加资源“菜单上的精灵点击和按创建雪碧或点击的pacman 符号的按钮:会出现一个比较空的形式。
在这种形式下,按按钮负载雪碧。
在出现的文件选择打开的文件夹Tutorial1,并在那里双击的形象wall.png 上。
(如果您没有看到该文件夹Tutorial1,你应该在游戏制作的安装文件夹中的文件选择浏览。
有你找到一个文件夹“搜神记”和它你找到与精灵Tutorial1 的的文件夹。
)雪碧的形式,现在应该显示墙块图像。
你可能想给精灵一个适当的名称,例如:spr_wall。
现在,按下“确定”按钮关闭该窗体。
在游戏制作窗口的左边,你现在应该看到您刚才添加的精灵。
以同样的方式,添加苹果,香蕉,炸弹,樱桃,草莓精灵,并给予他们适当的名称。
在窗口左侧的列表现在应该如下所示:在继续之前,你可能想保存您的工作。
点击“文件”菜单上,按保存,并选择一个合适的位置和文件名。
请注意,该文件将得到扩展。
GMK。
与游戏制造商创建的所有文件将具有该扩展名。
单击“下一步”按钮,到本教程的下一个页面。
第三页创建对象“搜神记”只是图像。
他们没有做任何事情。
但在游戏中的对象必须执行行动。
他们必须左右移动,鼠标点击反应等,所以下一步就是创建一些对象。
我们将开始与墙上的对象。
添加资源“菜单上的对象点击和按创建对象或按一下按钮与蓝色球。
出现的形式可能看起来有点复杂,但不用担心。
它很快就会变得清晰。
首先,我们给该对象适当名称obj_wall 的。
接下来,给它适当的精灵,单击菜单上的图标的权利,并从出现的菜单中选择墙精灵:墙上的对象必须是坚实的事业,我们不希望水果,通过它移动。
为此,按固的复选框以选择它。
由于墙壁需要没有进一步的行为,按“确定”按钮关闭该窗体。
墙上的对象,现在应该已经出现在左边列表中。
入门篇GameMaker是一个很容易就可以开发你自己的电脑游戏的软件。
这一章介绍你想制作的游戏所需要的知识。
后面的章节会进一步讨论更多的功能,怎么发布你的游戏和介绍GameMaker的内建语言GML。
关于GameMaker的初级使用在下面的页面有介绍。
GameMaker制作原理在研究GameMaker之前,最好先摸索一下GameMaker的制作原理吧。
用GameMaker 做游戏都放在一个或多个房间里。
(房间是一个平台,不是3D的,但可以包含仿3D的图片。
)在这些房间里,你可以放置物体(可以在GameMaker里定义)。
经典的物体有墙、运动的小球、主角、怪物等。
有些物体(像墙)是静止的什么都不做。
另一些物体(例如主角)会响应玩家的输入(键盘、鼠标、手柄)而运动。
或者物体跟物体间也会产生某些反应。
例如,当主角遇到怪物的时候,主角会死亡。
在GameMaker中,物体是最重要的。
首先,大多数物体都需要一些图象来让它们显示于屏幕上。
这种图象叫做精灵图象。
一个精灵图象不单可以是一张图片,可以是一套动作的图片集,用于表达物体的动作效果。
这样,就可以达到像走动,转动等效果。
在游戏中,精灵图象在某些特殊的物体里是可以改变的。
(这样当物体向左或向右走时可以显示不同的图象。
)你可以在GameMaker里制作自己的精灵图象,或者导入一些图片素材。
物体会发生某些事。
这些事叫做事件。
当事件发生时,物体会执行相对应的动作。
物体可以发生很多事件并可以响应很多不同的动作。
例如,当物体创建时会发生一个创建事件。
(说精确一点是,物体中的某个具体对象被创建;物体相当于一个类,而对象就是类的一个抽象。
)例如,当一个球被创建时你可以给它一些运动动作,这样球就可以运动了。
当两个球相遇时,会发生碰撞事件。
在碰撞事件发生时,你可以给球一个动作,让它停止或者反向运动。
或者也可以产生音效。
GameMaker可以让你定义一些声音。
当玩家敲击键盘时,会产生一个键盘事件,物体会执行相应的动作,例如移动。
1-1 新建工程咳,那么安装RMXP的部分我就跳过了,大家应该都知道怎么安装吧- -|||打开RMXP之后,可以在左上角看到一个白纸图标,它代表新建一个RMXP工程,也就是你制作的的游戏。
当然,你也可以通过“文件”菜单里面的“新建工程”来完成这个功能。
选择了新建工程之后,就会弹出窗口。
其中,“文件夹名”代表你放游戏的那个文件的名称,可以随意自己取一个,方便自己找就行了,不过建议是和你游戏的名字一样比较好。
然后,“标题”代表你这个游戏的名字,比如《勇者大冒险》之类的……= =|||当你命名了文件夹名的时候,文件路径就会被自动生成在“位置”一栏。
你也可以自己定义一个比较容易找的位置(使用右边那个“...”的按钮来设定路径)。
新建工程之后,就会出现这样的界面。
当你在游戏工程里做了设置之后,可以单击左数第三个图标——“保存”你的设定。
当然,在“文件”菜单下选择保存也可以。
按下右上角的红叉会关闭工程,如果你做出了更改而忘记保存,它同样会弹出对话框询问你是否保存更改。
当你新建了你的工程以后,就可以在设定好的路径下看到你的游戏文件夹了。
其中,画红圈的那个Game.exe文件是你的游戏执行程序,只要打开它就可以直接进行游戏。
而蓝圈的那个是你的工程文件,当你需要编辑这个游戏工程的时候,就打开这个。
不过,你不需要每次都通过点击Game.exe文件测试你做好的游戏,因为RMXP自带游戏测试功能,你只要在打开工程的时候按下F12就能测试了。
当然,在你工程的图标面板上倒数第一个绿色三角形的图标也是测试游戏。
(注意:在你测试游戏的时候,无法编辑工程。
但是如果是直接点击Game.exe进行测试就可以。
)而测试游戏的时候,你会发现角色在一片小小的空空的草地上晃来晃去,什么都没有发生-。
-虽然按下ESC可以调出菜单,但是也仅此而已……不用着急,因为这只是个开始而已。
接下来我会教大家怎么绘制比较基本的地图,然后通过数据库、事件等,将你们的第一个游戏丰满起来,成为一个真正的游戏。
GameMaker教程姓名基础篇数量的增加:两种格式:a = a + 1a + = 1 两种相同效果。
坐标:坐标是确定某个物体位置的,有了它,我们便可知道物体的位置。
x 当前物体的x坐标y 当前物体的y坐标x , y 表示某个物体的总坐标格式例:x=100y=200 表示本物体的x坐标=100,y坐标=200。
物体坐标100,200。
坐标的变化:当一个物体向左移动时,它的x坐标会慢慢的减少,y坐标不变;向右移动时,它的x 坐标则会增加;向上移动时,y坐标慢慢减少,x坐标不变;向下移动时,y坐标慢慢增加。
练一练:填空。
注:每按下某个键,减少或增加3。
<left>: 。
<right>: 。
<up>: 。
Sprite是游戏的最基础的东西,每一个物体都能是由精灵图片组成。
在左边的一栏的第一个。
(图1)右击后点击第一个创建。
(图2)□Sprites图1□Sounds□Backgrounds□Paths□Scripts□Fonts□Time Lines□Objects□Rooms 图2创建后,可以看到几个按钮(图3)。
载入精灵:载入一般已经产生连环效果的图片或静止的图片。
保存精灵:保存当前精灵图片,以gmspr格式呈现。
编辑精灵:可以对精灵图片进行美化或修改,也可以添加一些以连环图片在一张图片的精灵。
编辑笼罩层:可以修改碰撞盒。
中心:把中心设定在图片的中心位置。
完成:完成该精灵的修改或创建。
练一练:操作。
创建一个图片,并且载入GameMaker 8.0 \ Sprites \ Maze - Platform文件夹下的apple图片,把中心确定在图片中心,并把名字命名为spr_apple。
Object(对象):Object是游戏中最核心的东西(在Object里还有更核心的)。
在左边的一栏的第8个(高级模式)。
创建的方法和图片一样。
右边一栏有7个选择,分别为:move、main1、main2、control、score、extra、draw。
gamemaker完全中⽂帮助⽂档GM完全中⽂开发教程第1章想要设计计算机游戏计算机游戏相当好玩,但⾃⼰设计计算机游戏给别⼈玩是更有乐趣的。
不幸的是,制造计算机游戏并不容易。
市售的计算机游戏需要10到50个⼈花上1到3年研发。
预算动辄上1,000,000元,这些研发⼈员都是各领域的专家,包括:程序设计师、艺术设计师、⾳效专家等等。
这代表要设计⾃⼰的计算机游戏是不可能的吗?幸好不是,当然不要期望在⼏周之内设计出类似世纪帝国的⼤型游戏,对⼀般⼈⽽⾔,这不可能,也不需要。
另外有些⽐较简单的游戏,如俄罗斯⽅块,⼩精灵,⼩蜜蜂等等,是很好玩也⽐较好设计的游戏。
不幸的是,设计这些游戏仍然需要强⼤的程序设计能⼒以控制图⽚、声⾳、使⽤者接⼝等等。
但是游戏制作软件上场了。
这软件是为降低游戏设计的难度⽽写,不需要写程序,⽤简单直觉的拖放⿏标接⼝⽴即设计⾃⼰的游戏。
你可以输⼊或设计影像、⼦图形(会动的影像)声⾳并使⽤他们。
你可以很容易地定义游戏中的对象以及他们的⾏为表现,你可以设计有卷动背景的华丽场景。
万⼀你想要对程序全⾯控管,游戏制作者中内建了程序语⾔,让你可以对游戏当中的所有组件做控制。
游戏制作者着眼于2-D游戏的设计,没有3-D的效果,但是不要失望,许多经典游戏,如世纪帝国等都是利⽤2-D动画特效,使他们看起来像3-D,设计2-D游戏⽐3-D要来的简单、快速。
也许游戏制作者最棒的部分是免费,你可以没有限制的创造游戏,没有纠缠不休的付费屏幕画⾯,喜欢的话甚⾄你可以卖游戏,详细情形请看许可协议⽂件。
本⽂会告诉你关于游戏制作者以及如何⽤他来设计游戏。
请了解即使使⽤类似游戏制作者的程序设计程序,设计计算机游戏程序并⾮全然没有价值、不重要的,⼀样的,有太多的⽅⾯需要考量:玩游戏、图形、声⾳、使⽤者接⼝等等。
⽤⽐较简单的范例开始,你会感受到设计游戏时那⼀种快乐。
第2章安装也许你已经安装了,但如果还没有,只要执⾏gmaker.exe,照着屏幕上的指⽰,你可以把程序放在任何你喜欢的地⽅(当然最好使⽤预设的建议)。
Edgame maker 编程初级指南注:说是指南,其实是本人的学习笔记,与君分享,共学习之!如有不对或缺漏,请指出~~~~第一节注释我们第一件要学的就是如何给代码做注释.注释是为了帮助其他人看懂代码.其实,这也能帮助自己,在你停止一个工程几个月后回头看自己的代码,你会发现没有注释的话,自己也会迷失在自己的代码中,所以注释很重要,我们就从注释开始学起.代码:-===================================================================== ==========-- ■ 初始化屏幕--==================================================================== ===========引擎= D2D_引擎.创建("Edgame Make",60,800,600,true,true)--叶风的作品--我的学习笔记运行一下,没有报错,也没有被执行.这就是注释,以双划线开始(--),在此之后输入的任何文字都不会被视为代码,在执行时完全忽略掉.但是,请注意,必须保持注释在一行内.(你可以分行试试,结果是报错).即然分行会报错,那我注释多必须分行的时候怎么办??不难,用多行注释就能解决:--[[ 开头, ]]结尾代码:-- ■ 初始化屏幕--==================================================================== ===========引擎= D2D_引擎.创建("Edgame Make",60,800,600,true,true)--[[这是开头叶风的作品我的学习笔记我就是要分行我喜欢分行这是结尾]]运行测试,没报错.第二节如何使用变量何谓变量: 就是可以改变的量,所有的变量都有一个名字x = 10在上面的式子里,x是变量名,我们用=把10赋给了它变量的名字的可以自己定义的,但不能以数字开头,也不能使用系统的保留字(以后再说) 变量是很重要的工具,一言以蔽之,变量就是信息的存储容器,供你在程序中随时调用.现在我们就来写一个使用变量的简单程序.同时也学习一下EM中的简单算术.这次我们对第一行代码都给注释.首先,让我们以创建文字对象开始,用来在屏幕上显示信息.代码:--创建文字对象--==================================================================== ===========-- ■ 初始化屏幕--==================================================================== ===========引擎= D2D_引擎.创建("Edgame Make",60,800,600,true,true)--创建文字对象文字= D2D_文字.创建("黑体",22,false,false,false)注:文字对象创建完毕,括号里的参数请自行查阅EM软件里的脚本核心.接着我们就开始创建我们第一个变量吧,这将是一个存储你出生年份的变量.请随意替换1985为你自己的出生年份,事实上我也建议你这么做!代码:--将出生年份存为变量出生年份出生年份= 1985就是这样,我们所做的就是取得数值1985(你可以任意改),并将其保存在我们命名为出生年份的变量中.稍后我们在程序中将使用该变量.下面我们再设一个变量用来存储当前年份.代码:--将当前年份存为变量当前年份当前年份= 2010现在让我们创建一个略微不同的变量代码:--创建一个空变量我的年龄= ""请注意这次我们没给变量赋值,我们稍后为此变量存入信息.到此我想,我们已知道如何创建变量了,那么让我们开始使用它们.我们将要做的就是使我们的变量和一些基础算术计算出你的年龄.我们接着写代码:--==================================================================== ===========-- ■ 屏幕逻辑()--==================================================================== ===========function 屏幕逻辑()--用当前年份减去出生年份并将结果保存在变量我的年龄中我的年龄= 当前年份- 出生年份(我们这里将代码写在逻辑里,虽然也可以写在任何地方,,但我们最好养成良好习惯)这一步是提取两个变量中存储的值,将之相减,然后将结果保存在我的年龄变量中.这样我的年龄就被赋予了值.现在,让我们用显示将文本在屏幕上显示出来.代码- ■ 屏幕渲染()--==================================================================== ===========function 屏幕渲染()渲染开始()清屏(ARGB(255,128,128,128))--打印文本变量到屏幕文字:显示(0,0,"我的年龄:"..我的年龄)测试一下看结果.这里我们用到了一个新命令,(..)双点号这称为”串联”.第三节让按键为你工作本节我们将学习如何编写一个按下不同按键显示不同文本的简单程序.如果没有按键输入,就没有与用户的交互,那可是相当无聊的.代码:引擎:取按键按下()简单地说,这就是获取按键的输入接下来我们学习一个条件表达式, if语句. 相信我,这没有它看起来的那么难,同时我们还会学到按键的输入命令,先把下面的代码写到程序里,然后我们来进行解释.(我们利用上一节所写的代码,当按下A键的时候改变颜色)代码if(引擎:取按键按下(键_A)) then文字:置颜色(颜色_红)end--打印文本变量到屏幕文字:显示(0,0,"我的年龄:"..我的年龄)测试,当我们按下A键后,上一节我们输出的文字变成了红色.说明,我们这一句代码就是说”如果A键被按下,则将文字颜色置换为红色”.这将返回true 和false 值.每个if语句都以if开头,然后给出检查的条件.此例中是检查是否A键被按下,然后跟随在关键字then之后的内容则是如果条件为真,则执行代码.最后,每个语句都必须以end 结束..语法简单易懂,一目了然,你可以将按键改变,以练习不同的方法.第四节使用数据表编写程序LUA中的数据表(tables)很像变量.主要区别是数据表可以用来存储多个数据,而变量只能存一个.我们把它想成一个带有很多”抽屉”存放不同内容的容器就行了.觉得很方便吧,那我们就学一下:假设我们要写一个小游戏,共有2类敌人,一个主角.为此我们要让程序知道这此角色的相关信息. 敌人和主角需要什么信息呢?我们设想简单点,首先要有生命,这样才能被杀死.因此我们需要给程序提供信息以跟踪敌人的生命值.我们还需要信息区分我们使用的敌兵种类.对于玩家生命值自然也是不可少的现在开始利用表来进行学习和编写:表的定义方式:代码:--创建文字对象文字= D2D_文字.创建("黑体",22,false,false,false)敌人= {}注:首先创建一个文字对像,因为我们需要利用文字对像将我们编写的信息显示到屏幕上.这样我们就创建一个表,首先是表名(可以任何名字,但不能以数字开头),然后是等号,然后是左右尖括号.我们继续写,将敌人的信息写出来代码:敌人= {}敌人[1] = {种类= "小兵类",生命= 80}敌人[2] = {种类= "大将类",生命= 180}就是这样,我们创建2个敌兵元素,并告诉程序它们的种类和总生命值.现在添加主角的代码: 主角= {职业= "战士",生命= 100}这样我们所需的信息就都有了.当然,这不能算是一个游戏,只是一个简单的例子罢了.现在,我们设置按下A键的时候取走敌人的生命值,我们只选一个敌人来做这件事,代码如下:文字:显示(100,100,"主角的生命:"..主角.生命)文字:显示(100,150,"主角的职业:"..主角.职业)文字:显示(400,100,"敌人1的生命:"..敌人[1].生命)文字:显示(400,150,"敌人1的种类:"..敌人[1].种类)if(引擎:取按键按下(键_A)) then敌人[1].生命= 敌人[1].生命- 5end测试一下吧,咦,怎么生命能成负值呢,游戏中可不能这么搞,我们修正它,让他变成0时,不在减少.修改代码如下:if(引擎:取按键按下(键_A) and 敌人[1].生命> 0) then敌人[1].生命= 敌人[1].生命- 5end我们添加了敌人[1].生命> 0这个条件,> 表示”大于”,还用了and ,意思是”并且”,这里就意思就是说,当我们按下A键,并且敌人的生命大于0的时候,就执行随后的语句(生命减5).注意的是要执行此代码就必须所有条件都满足.我们这里涉及到了两个表达式,我们将于下节进行稍细的讲解,并且想一下,敌人的生命为0了,是不是该死去,该不该让下一个敌人出来露下脸??。
游戏《消除星星》中的方块移动方法初探消除星星或者叫消灭星星,消除宝石等是一款非常游戏的小游戏,游戏开局会生成10*10的区域,区域中有不同颜色的星星,当玩家点击连在一起星星时,相当相连区域的星星就会被消除,而被消除的星星上方的所有星星都会向下掉落,当不存在连在一起的星星时本局就会结束。
这里不谈判断能否消除的算法,这里只谈方块消除之后,其他方块如何移动的方法。
方案一:以前,我采用过最简单的方法,就是在每个方块的消除(instance destroy)事件中,执行一个动作:判断其上方是否存在方块,如果存在,则所有其上方的方块均向下位移一个方块高度单位:其伪代码如下:for(i=y-64;i>=32;i-=64) //从当前位置的上边开始向上遍历{temp=instance_position(x,i,obj_ceil); //获取指定位置的方块with(temp) //使用with结构{y+=64; //纵坐标增加一个方块高度单位}}这样也能实现下落效果,但方块下落过程都是瞬移,比较突兀。
那么如果对上面的代码做一下修改能不能实现呢?方案二:我们尝试做这样的修改。
先为方块对象添加一个alarm事件,其中只有一句代码就是speed=0,然后把上面的with结构中的代码改为如下所示:with(temp) //使用with结构{vspeed=8; //方块有一个向下的速度Alarm[0]=8; //8帧之后启动alarm[0],速度为0停止移动}这样改貌似也实现了同样的效果,但运行之后就会发现问题,当被消除的方块只有一层时是没有问题,如下图所示:但当消除的高度大于等于2时就会出现问题:所有方块只会向下移动一层。
之所以这样,就是因为代码中的alarm[0]=8,因为当第一个被消除的方块消除的时候,就会启动上方方块的alarm 事件,在8帧之后停止所有移动。
所以说这个方案行不通。
方案三:这里结合第一种第第二种两种方案,第一种方案让所有方块瞬移,第二种方案让所有方块往下移动一个方块单位,那么结合这两种方案,往所有上方方块都往下瞬移到合适位置,并空出一个方块单位,并在瞬移之后,再启动向下移动一个方块单位,这样就可以部分模拟出方块下落的效果。
常数true等同于1.false等同于 0.pi等同于 3.1415...实数函数random(x)返回一个随机的实数,范围从 0 到 x 。
数值总小于 x 。
choose(val1,val2,val3,...)随机返回其中一个参数。
最多可以有16个参数。
abs(x)返回 x 的绝对值。
sign(x)返回 x 的符号(-1,0,或1)。
round(x)返回与 x 最接近的整数。
floor(x)返回比 x 小的最大整数。
ceil(x)返回比 x 大的最小整数。
frac(x)返回 x 的小数点以后的部分。
sqrt(x)返回 x 的开方。
x 不能是负数。
sqr(x)返回 x 的平方。
power(x,n)返回 x 的 n 次方。
exp(x)返回 x 的冥方指数 e 。
ln(x)返回 x 的自然对数。
log2(x)返回 x 的2的对数。
log10(x)返回 x 的10的对数。
logn(n,x)返回 x 的 n 的对数。
sin(x)返回 x 的正弦(x 单位为弧度)。
cos(x)返回 x 的余弦(x 单位为弧度)。
tan(x)返回 x 的正切(x 单位为弧度)。
arcsin(x)返回 x 的反正弦。
arccos(x)返回 x 的反余弦。
arctan(x)返回 x 的反正切。
arctan2(y,x)计算 arctan( y / x ) ,然后返回结果在正确象限内的角度值。
degtorad(x)转换角度到弧度。
radtodeg(x)转换弧度到角度。
min(val1,val2,val3,...)返回参数中的最小值。
最高支持16个参数。
必须全部是实数或全部是字符串。
max(val1,val2,val3,...)返回参数中的最大值。
最高支持16个参数。
必须全部是实数或全部是字符串。
mean(val1,val2,val3,...)返回所有参数的平均值。
最高支持16个参数。
必须全部是实数数值。
median(val1,val2,val3,...)返回参数的中间数(如果参数数目为偶数,则两个中间数中最小的那个作为返回值)。
最高支持16个参数。
必须全部是实数数值point_distance(x1,y1,x2,y2)返回位置1(x1,y1)到位置2(x2,y2)的距离。
point_direction(x1,y1,x2,y2)返回从位置1(x1,y1)到位置2(x2,y2)的方向角度。
lengthdir_x(len,dir)返回指定长度及方向的矢量线在 x 轴上的投影长度。
lengthdir_y(len,dir)返回指定长度及方向的矢量线在 y 轴上的投影长度。
is_real(x)返回 x 是否为真实数值(否则就是字符串)。
is_string(x)返回 x 是否是一个字符串(否则就是一个真实数值)。
字符串处理函数chr(val)返回字符串中包含参数指定的 ASCII码字符的字符串。
ord(str)返回字符串中第一个字符的 ASCII 码。
real(str)将字符串转换为真实数值。
字符串可包含负号,小数点甚至是指数部分。
string(val)将真实数值转换为标准格式的字符串(整数时没有小数点位置,否则在小数点后留两位)。
string_format(val,tot,dec)将 val 以你自己的格式转换为字符串:tot 指定总的数字位置,dec 指定小数点后有几位数字。
string_length(str)返回字符串中字符的个数。
string_pos(substr,str)返回字符串 substr 在字符串 str 中的位置(0 代表完全不符)。
string_copy(str,index,count)返回字符串 str 的一部分,从 index 指定的位置开始,长度为 count 。
string_char_at(str,index)返回字符串 str 中索引为 index 的字符。
string_delete(str,index,count)返回删除了部分内容的字符串 str,从 index 开始,长度为 count 。
string_insert(substr,str,index)返回在位置 index 处添加子串 substr 后的字符串str。
string_replace(str,substr,newstr)返回字符串 str 的一份拷贝,为字符串中子串substr 第一次出现的地方开始被字符串 newstr 替换后的内容。
string_replace_all(str,substr,newstr)返回字符串 str 的一份拷贝,为字符串中子串 substr 所有出现的地方开始被字符串 newstr 替换后的内容。
string_count(substr,str)返回子串 substr 在字符串 str中出现的次数。
string_lower(str)返回小写格式的字符串 str。
string_upper(str)返回大写格式的字符串 str。
string_repeat(str,count)返回由 count 个字符串 str 组成的新字符串 str。
string_letters(str)返回只包含字母的字符串 str。
string_digits(str)返回只包含数字的字符串 str。
string_lettersdigits(str)返回包含字母和数字的字符串 str。
以下为处理系统粘贴板内容的相关函数。
clipboard_has_text()返回粘贴板中是否存在任何文本。
clipboard_get_text()返回当前粘贴板内文本内容。
clipboard_set_text(str)将字符串 str 送入粘贴板。
日期及时间处理在Game Maker中有许多函数是专门处理日期和时间的。
一个日期-时间格式是一组实数。
整数部分代表日期,最早到12/30/1899。
小数点后的部分代表一天之中的24小时。
现有有以下函数 :date_current_datetime()返回当前系统日期-时间。
date_current_date()返回当前系统日期(不包括时间)。
date_current_time()返回当前系统时间(不包括日期)。
date_create_datetime(year,month,day,hour,minute,second)建立一个指定的日期-时间数据。
date_create_date(year,month,day)建立一个指定的日期数据。
date_create_time(hour,minute,second)建立一个指定的时间数据。
date_valid_datetime(year,month,day,hour,minute,second)返回给定的日期-时间是否正确。
date_valid_date(year,month,day)返回给定的日期是否正确。
date_valid_time(hour,minute,second)返回给定的时间是否正确。
date_inc_year(date,amount)返回指定日期后 amount 年的新日期。
amount 必须为整数date_inc_month(date,amount)返回指定日期后 amount 月的新日期。
amount 必须为整数。
date_inc_week(date,amount)返回指定日期后 amount 星期的新日期。
amount 必须为整数date_inc_day(date,amount)返回指定日期后 amount 天的新日期。
amount 必须为整数。
date_inc_hour(date,amount)返回指定日期后 amount 小时的新日期。
amount 必须为整数。
date_inc_minute(date,amount)返回指定日期后 amount 分钟的新日期。
amount 必须为整数。
date_inc_second(date,amount)返回指定日期后 amount 秒的新日期。
amount 必须为整数。
date_get_year(date)返回 date 对应的年份。
date_get_month(date)返回 date 对应的月份。
date_get_week(date)返回 date 对应的星期。
date_get_day(date)返回 date 对应的天数。
date_get_hour(date)返回 date 对应的小时。
date_get_minute(date)返回 date 对应的分钟。
date_get_second(date)返回 date 对应的秒。
date_get_weekday(date)返回 date 对应一星期的哪一天。
date_get_day_of_year(date)返回 date 对应一年中的哪一天。
date_get_hour_of_year(date)返回 date 对应一年中的哪一小时。
date_get_minute_of_year(date)返回 date 对应一年中的哪一分钟。
date_get_second_of_year(date)返回 date 对应一年中的哪一秒。
date_year_span(date1,date2)返回两个日期 date1 和 date2 之间相隔多少年。
此函数只报告年数片断。
date_month_span(date1,date2)返回两个日期 date1 和 date2 之间相隔多少月。
此函数只报告月份片断。
date_week_span(date1,date2)返回两个日期 date1 和 date2 之间相隔多少星期。
此函数只报告星期片断。
date_day_span(date1,date2)返回两个日期 date1 和 date2 之间相隔多少天。
此函数只报告天数片断。
date_hour_span(date1,date2)返回两个日期 date1 和 date2 之间相隔多少小时。
此函数只报告小时片断。
date_minute_span(date1,date2)返回两个日期 date1 和 date2 之间相隔多少分钟。
此函数只报告分钟片断。
date_second_span(date1,date2)返回两个日期 date1 和 date2 之间相隔多少秒。
此函数只报告秒数片断。
date_compare_datetime(date1,date2)比较两个日期时间的大小,返回-1,0,1,分别代表前者小于,等于,大于后者。
date_compare_date(date1,date2)比较两个日期的大小,返回-1,0,1,分别代表前者小于,等于,大于后者。
date_compare_time(date1,date2)比较两个时间的大小,返回-1,0,1,分别代表前者小于,等于,大于后者。