游戏python编程入门经典里面有哪些经典或者很酷的算法

游戏编程里面有哪些经典或者很酷的算法? - 知乎2767被浏览114846分享邀请回答2添加评论分享收藏感谢收起游戏编程算法与技巧
Sanjay Madhav
本书是专为程序员而编写的。全书浅显易懂,深入浅出,书中从各个角度,全面地解读了程序员这个特定人群,在日常程序设计工作中遇到的种种问题及解决办法。如果你不知道选择...
Scala是一门主要以Java虚拟机(JVM)为目标运行环境并将面向对象和函数式编程语言的最佳特性结合在一起的编程语言。你可以使用Scala编写出更加精简的程序...
本书将产品领域里大家耳熟能详但很可能一知半解的概念串联起来,并整合到一个框架中,讲述如何将用户的问题变为产品设想,并基于此设想实现一个产品,然后将产品进行市场推...
本书围绕程序设计典型算法,精心编织了一个扣人心弦又趣味横生的侦探缉凶故事。小说主人公运用高超的搜索技巧和精深的算法知识,最终识破阴谋、缉拿元凶。其间,用二分搜索...
本书介绍在互联网行业中经常涉及的算法,包括排序算法、查找算法、资源分配算法、路径分析算法、相似度分析算法,以及与机器学习相关的算法,包括数据分类算法、聚类算法、...
这是一本非常有趣的编程启蒙书,全书从中小学生的角度来讲述,没有生涩的内容,取而代之的是生动活泼的漫画和风趣幽默的文字。并配合超萌的编程软件,从开始学习与计算机对...
本书详细综述了应用在许多重要视频游戏编程中的算法和技术。书中采用了一种独立于平台和结构的方法,能协助开发几乎任何风格、语言和框架的游戏,并展现2D和3D图像、物理、人工智能、相机等工作的基本技术。书中的每个概念都是用C#、Java或 C++程序员直观明白的伪代码阐述的,并且作者已经改进和证实过这些伪代码。本书最后作者详细分析了两个完整的游戏,清楚展现了前面章节讲到的很多技术和算法。
腾讯专家倾情翻译,全面介绍游戏行业中会用到的算法和技术,专注于实际应用
当瀚阳让我为他的译作作序的时候,我还是有些吃惊的。我并非业界名人,虽然在游戏行业摸爬滚打了十几年,但并没有多少建树,为了配得上译者所散发出的光芒,我多少也要发掘出自己的一些亮点。如果资历也算亮点的话,我倒是有些的。1993 年我有了自己的第一台电脑,那时的电脑还处于386 的时代,硬盘不过200MB,内存不过4MB,用着5 英寸的软驱,光驱还在萌芽状态。当时我一心想做游戏,玩着《Wolf3D》、《Doom》,仰望着id Soft的成就。2001 年我终于如愿进入了游戏行业,有幸赶上了西山居《月影传说》的后期开发。之后在三大游戏公司转了一圈,如今沉浮于手机游戏开发的大潮中。其间也曾参与了两款3D引擎的早期开发工作,其中的成果已融合在两三款早已上市的游戏当中。我参与程度最深,也算稍微有点名气的游戏就是《斗战神》了。
我和瀚阳相识缘于我们现在共同参与的这个项目,我是项目的第一个客户端程序员,瀚阳是第二个。当项目还只有我一个前台程序员的时候,我一个人要面对十几个美工产出的资源和四五个策划提出的需求,真是压力很大。瀚阳的加入仿佛给项目增加了第二台引擎,各种架构迅速完善起来,功能也越来越完整,项目顺利度过了Demo 期,得以立项。瀚阳在游戏开发方面涉猎广泛,精通多种语言,做过端游,写过手游,参与过3D 引擎开发。游戏开发之外瀚阳也有着广泛的兴趣,他的博客就是自己搭建的,跑在租用的服务器上,可以称得上是全栈程序员。游戏行业加班是出了名的,对于瀚阳能在繁忙的工作之余抽出时间来翻译这本书,我是十分佩服的,每一个程序员都不应该局限于自己所在的公司与工作,而应该在更广阔的空间拓展自己的职业生涯。
最后回到本书。如果你想进入游戏开发行业,或者对于游戏开发你已经入门但还缺乏一个全面的了解,本书可以作为不错的入门书籍。本书读起来不会那么累,能够使你快速了解游戏开发所涉及的众多领域,建立一个较为全面的认识。在此之后你可以针对感兴趣的方面购买学习更加深入的书籍。
腾讯互娱前台程序技术指导
陈鹏译者序我与本书的一些缘分
我自己是多年的玩家了。在中学时期就暗自下定决心,一定要做游戏。于是不顾反对,大学选择了游戏专业,后来通过一套类似XNA 的框架进行开发,在学习的过程中一边写游戏,一边扩展框架。从最初的使用DirectX 绘制2D 精灵开发俄罗斯方块,到写3D 骨骼蒙皮动画做3D 射击游戏,慢慢地学会了很多技术,比如AI、网络、物理、脚本等。这些知识是“成长”起来的,于是每学到一点新技术都可以往里面塞,逐渐地形成了自己系统的理解。
雕爷有一篇文章说的好,临摹是最好的学习方法。因为临摹不仅需要你拆解分析对象作为输入,还需要以自己的理解作为输出。这种带着主动思考的输入/输出,无形中就对临摹对象有了深刻的理解,这不是走马观花那种被动的学习效率能比拟的。这种经过充分思考的练习,最能够将知识“内化”,而只有站在前人的基础之上,创新才会比较靠谱。在我看来,本书的内容,属于手把手地对各种GamePlay 拆解,然后实现,让知识一点一点地成长起来。更加难得的是,因为作者从业界转向了教育界,所以本书不仅内容上系统全面,而且语言上简单清晰,让人易于理解。
兴趣是最好的老师,GamePlay 不像操作系统、渲染引擎、物理引擎那么“枯燥”,本书可以很轻松就读完。初学者完全可以从GamePlay 入手,在XNA 框架上实现书中的内容,然后在深入的过程中补全游戏开发中各个系统的知识。而有经验者也可以从本书中补全对游戏软件的系统理解,比如一开始作者就阐明了游戏程序的三要素:游戏时间、游戏对象、游戏循环,还有一些有意思的诀窍,比如用xyzzy 口诀记住叉乘运算,也有一些案例分析——《魔兽世界》的UI 插件系统,以及工作中的教训——《指环王》中音频引擎的设置。
除此之外,本书还提供了专业方向上的参考资料,让读者在感兴趣的话题上深入学习。每章都会提出关键问题并列出有深度的参考资料,这些资料大部分是行业经典,比如像《游戏引擎架构》、Real-Time Rendering 这样的神作当然没有错过。
游戏行业是一个很有意思、充满朝气的行业,有很多真正热爱游戏的人。当然,同时有很多问题,但这何尝不是机会呢?
刘瀚阳前言
不久之前,开发商业游戏的知识还只有少数游戏界精英才知道。在那时候,学习真正用于AAA 游戏的算法就像学习一些黑暗禁忌的魔法一样(比如Michael Abrash 的Graphics ProgrammingBlack Book)。如果一个人想要接受游戏编程教育,那么只能去为数不多的培训学校。可是10 多年过去之后,游戏编程教育发生了非常大的变化。现在一些顶尖的大学也提供了游戏编程的课程和学位,而且每年加入这个领域的人数也越来越多。
游戏开发课程爆发的结果就是,游戏产业更容易招到需要的人员。21 世纪早期的时候,大多数想参与游戏开发的年轻人都拥有着很强的计算机科学背景及创造游戏的热情。这些有着良好基础的年轻人,会在后续工作中不断学习更加高级的游戏编程技巧。今天,有了更多的专注于游戏教育的地方,大量的游戏公司希望他们的年轻程序员可以拥有游戏编程相关的丰富阅历。为什么需要这么一本游戏编程的书
游戏课程的增长也激发出大学课程设计的需求。可是现在市场上大多数的书都只面向两种读者:希望利用业余时间做点小游戏的爱好者和有着多年经验的专业人员。两种书都会让在校学生感到迷惑。爱好者系列图书不够系统严谨,太过专业的书学生又看不懂。
我在南加利福尼亚大学讲的其中一门课程是ITP 380:游戏编程。课堂上的学生大多数都是大二或者大三的,懂一点编程。有些学生已经能很熟练地运用GameMaker 或者Unity 开发游戏原型了。但ITP 380 是学生们第一门正式的游戏编程课程。我希望本书能够成为这种课程的最佳补充。虽然受众是在校学生,但是其他对游戏编程感兴趣的人也能获得很大价值。
本书的一个特色就是前12 章与任何平台和框架无关。这就是说,本书适用于大部分语言和平台。这与市场上其他书籍不一样,那些书往往因为适用某个版本的框架导致几年之后就没用了。正因为这种独立性,本书将会长期适用。这对大学课程设置来说很有帮助,因为他们运用不同的开发框架和语言。这就是说,示例代码总是有价值的。也因此,最后两章会使用两种不同的框架去开发游戏,之前的示例代码会在这些游戏上体现。谁应该读这本书
本书认为读者已经掌握一门面向对象编程语言(C++、C#、Java),同时也能熟练运用各种数据结构,比如链表、二叉树及哈希表。这些内容通常在计算机科学的前两个学期就会学到,因此对于那些已经完成这些课程的人来说阅读本书是没问题的。更进一步来讲,如果能够掌握微积分,那么后面的线性代数和物理章节读者会更容易理解。
虽然不是必需的,但如果读者提前掌握了基础的游戏策划或者有熟悉的游戏会有不少帮助。同时,本书会专门讨论某种特定的编程机制,所以阅读参考资料会有更多收获。有过GameMaker 制作游戏原型经验的话会更好,但仍然不是必需的。
虽然本书意在为学校而写,但是对于已经掌握了通用编程技巧而又对游戏专业感兴趣的人来说,会很有帮助。不像一些学院派的理论书籍,书中的话题总是通过例子形象地展开。
最后,因为本书涵盖非常多话题,对希望掌握游戏编程多个方面的人来说也很有帮助。还有一点需要说明,资深游戏开发者不会在本书中找到太多的最新技术。本书是怎么组织的
本书的前12 章在游戏实战中演示了许多算法与技术。这些话题涵盖2D 到3D、物理学、人工智能、摄像机等。虽然设计上第1 章到第12 章是顺序阅读的,但是有些章节可以直接阅读。图P.1 把各章节的依赖关系罗列了出来。所以,最好先阅读依赖章节。
最后两章的游戏示例是为了运用前面12 章所学到的算法和技术。两个示例游戏分别是2D滚轴iOS 游戏(用Objective-C 在Cocos2D 上开发)和PC/Mac/Linux 平台的3D 塔防游戏(用C# 在XNA/MonoGame 上开发)。两个游戏的源码可以在本书的网站上下载:http://gamealgorithms.net。本书演示风格
这节讲本书的一些演示约定,比如代码和公式。侧边栏和注意
在本书某些位置你能看到一些“侧边栏”和“注意”版块,像下面这样。(图P.1
前12 章的依赖关系)侧边栏
在侧边栏中,会讨论某些运用在某款游戏中特定的算法和技术。有时候会是一些我所开发的游戏中的趣闻轶事,也有时候会是其他游戏的。不管怎样,这里会更加深入地讨论这些在真实游戏开发中会遇到问题的概念。注意
注意里更多的是不相关的有趣内容。虽然它们不是那么相关,但可能会让我们对话题有更加深刻的认识。伪代码
为了保持语言的中立性,算法已经以伪代码的形式展现。伪代码的语法与Lua 比较近似,虽然也有点像C++ 和C#。代码展示会像这样:function Update(float deltaTime)
foreach Object o in world
o.Update(deltaTime)
代码高亮与IDE 近似。关键词用蓝色,注释用绿色,类名用蓝绿色,变量用斜体。在所有的示例中,访问都是通过点成员方法和变量实现的。
有些情况下,代码要被多次讨论。在这种情况下,展示的不是代码的最终版本。通常最后会将所有代码再展示一次,像清单P.1 那样。清单P.1 示例代码清单function Update(float deltaTime)
foreach Object o in world
if o is alive
o.Update(deltaTime)
注意,上面伪代码中简单地检查Object“is alive”,而不是直接调用某个函数。这样写会更加清晰。
还有就是,一些代码可能会由于篇幅原因省略。通常是由于前面刚演示过,中间有大段重复的部分,我们用省略号替代。function Update(float deltaTime)
// 更新代码
...end公式
一些章节(主要是线性代数、3D 渲染、物理学)会通过公式来解释。这么做会比使用伪代码更加清晰易懂。公式会居中处理如下:
?? (??) = ?? + ??本书网站
本书的网站是http://gamealgorithms.net,内含第13 章和第14 章中游戏的源码及本书的勘误。最后,网站中有一个论坛,读者可以上去提与本书内容或游戏编程相关的问题。
游戏编程概述1
游戏编程的发展2
Atari时期(年) 2
NES和SNES 时期(年) 3
PS和PS2时期(年) 3
Xbox360、PS3和Wii时期(年) 3
游戏的未来4
传统的游戏循环4
多线程下的游戏循环6
时间和游戏8
真实时间和游戏时间8
通过处理时间增量来表示游戏逻辑8
游戏对象10
游戏对象的类型10
游戏循环中的游戏对象11
相关资料14
游戏编程的发展14
游戏循环14
游戏对象14第2章
2D 图形 15
2D渲染基础16
CRT显示器基础16
像素缓冲区和垂直同步17
绘制精灵18
动画精灵20
精灵表单23
单轴滚屏24
无限滚屏26
平行滚屏27
四向滚屏28
砖块地图29
简单的砖块地图29
斜视等视角砖块地图31
相关资料33
Cocos2D 33
SDL 33第3章
游戏中的线性代数 34
长度、单位向量和正规化38
标量乘积39
问题举例:向量反射41
问题举例:旋转一个2D 角色45
线性插值46
加法/减法48
标量乘法49
用矩阵变换3D 向量51
相关资料53第4章
模型坐标系56
世界坐标系56
视角/摄像机坐标系60
投影坐标系62
光照与着色64
顶点属性65
Phong光照模型68
再探画家算法72
深度缓冲区73
再探世界变换74
3D游戏对象的表示77
相关资料78第5章
游戏输入 79
输入设备80
数字输入80
模拟输入82 基于事件的输入系统84  基础事件系统85  一个更复杂的系统87 移动设备输入89  触屏和手势89  加速器和陀螺仪91  其他移动设备输入92 总结92 习题92 相关资料93第6章 声音94 基本声音95  原始数据95  声音事件95 3D声音98  监听者和发射者98  衰减100  环绕声100 数字信号处理101  常见数字信号处理效果102  区域标记102 其他声音话题103  多普勒效应103  声音遮挡104 总结105 习题106 参考资料106第7章 物理107 平面、射线和线段108  平面108  射线和线段109 碰撞几何体110  包围球110  轴对齐包围盒111  朝向包围盒111  胶囊体112  凸多边形113  组合碰撞几何体113 碰撞检测113  球与球的交叉113  AABB与AABB交叉114  线段与平面交叉115  线段与三角片交叉117  球与平面交叉119  球形扫掠体检测120  响应碰撞124  优化碰撞125 基于物理的移动126  线性力学概览127  可变时间步长带来的问题128  力的计算128  欧拉和半隐式欧拉积分129  Verlet积分法129  其他积分方法130  角力学130 物理中间件130 总结131 习题131 相关资料131第8章 摄像机 132 摄像机的类型133  固定摄像机133  第一人称摄像机134  跟随摄像机134  场景切换摄像机135 透视投影135  视场136  宽高比137 摄像机的实现138  基础的跟随摄像机138  弹性跟随摄像机139  旋转摄像机142  第一人称摄像机144  样条摄像机146 摄像机支持算法149  摄像机碰撞149  拣选149 总结151 习题151 相关资料151第9章 人工智能152 “真”AI 与游戏AI 153 寻路153  搜索空间的表示154  可接受的启发式算法156  贪婪最佳优先算法157  A*寻路161  Dijkstra算法163 基于状态的行为164  AI的状态机164  基础的状态机实现165  状态机设计模式167 策略和计划168  策略168  计划169 总结170 习题170 相关资料172  通用AI 172  寻路172  状态172第10章 用户界面 173 菜单系统174  菜单栈174  按钮175  打字176 HUD元素177  路点箭头177  准心180  雷达181 其他需要考虑的UI 问题186  支持多套分辨率186  本地化187  UI中间件189  用户体验189 总结189 习题189 相关资料190第11章 脚本语言和数据格式191 脚本语言192  折中192  脚本语言的类型193  Lua194  UnrealScript 195  可视化脚本系统196 实现一门脚本语言197  标记化197  正则表达式198  语法分析199  代码的执行和生成200 数据格式202  折中202  二进制格式203  INI 203  XML 203  JSON 204 案例学习:《魔兽世界》中的UI Mod 205  布局和事件205  行为206  问题:玩家自动操作206  问题:UI 兼容性206  结论207 总结207 习题207 相关资料208第12章 网络游戏 209 协议210  IP 210  ICMP 211  TCP 212  UDP 214 网络拓扑215  服务器/客户端216  点对点218 作弊219  信息作弊219  游戏状态作弊220  中间人攻击220 总结221 习题221 相关资料222第13章 游戏示例:横向滚屏者(iOS)223 概览224  Objective-C 224  Cocos2D 225 代码分析226  AppDelegate 226  MainMenuLayer 227  GameplayScene 227  ScrollingLayer 227  Ship 228  Projectile 229  Enemy 229  ObjectLayer 229 练习230 总结231第14章 游戏示例:塔防(PC/Mac) 232 概览233  C# 233  XNA 235  MonoGame 235 代码分析236  设置236  单件236  游戏类237  游戏状态237  游戏对象238  关卡239  计时器239  寻路240  摄像机和投影241  输入241  物理242  本地化242  图形242  声音243  用户界面243 练习245 总结246附录A 习题答案247附录B 对开发者有用的工具260
小编说:寻路就是一个看似简单问题的解:给定点A 和B,AI 该怎么智能地在游戏世界中行走?这个问题的复杂来自于实际上A 和B 之间存在大量的路径可走,但只有一条是最佳的。只是找到一条两点之间的有效路径是不够的。理想的寻路算法需要查找所有...
管理员账号
版权所有& · 北京博文视点资讯有限公司 · All Rights Reserved
京ICP备号-1&人工智能&(Artificial Intelligence)简称AI,在游戏里是必不可缺的,请教一般在哪些地方会使用什么样的AI算法,比如寻路、战斗等等。
该问题被发起重新开启投票
投票剩余时间:
之前被关闭原因:
该问题被发起删除投票
投票剩余时间:
距离悬赏到期还有:
参与关闭投票者:
关闭原因:
该问题已经被锁定
锁定原因:()
保护原因:避免来自新用户不合宜或无意义的致谢、跟帖答案。
该问题已成功删除,仅对您可见,其他人不能够查看。
游戏编程中的寻路算法
在游戏关卡中常常会放置一些怪物(即NPC),这些怪物通常在一个区域内走来走去,这个区域被称为&巡逻区域&;一旦玩家的角色进入怪物的&视野&,怪物就会发现玩家角色,并主动向其所在的位置移动,这个区域称为&警戒区域&;当玩家角色和怪物更加靠近时,会进入到怪物的&攻击区域&,这时怪物会对玩家角色进行伤害。在某些RPG(Real-Time Strategy Game,即时战略游戏)中,NPC 在不利的情况下还会选择主动逃跑。如何模拟这些行为逻辑,目前游戏业已经有一些比较成熟的方法。
1 随机寻路算法
随机寻路算法适合模拟游戏中那些没有什么头脑的生物,它们总是在场景中漫无目的地走来走去。可以用以下的代码进行模拟:
npc_x_velocity = -5 + rand() %10;npc_y_velocity = -5 + rand() %10;int npc_move_count=0;while(++npc_move_count&num){npc_x+ = npc_x_velocity;npc_y+ = npc_y_velocity;} //end while
在上例中,N P C 会选取一个随机方向和速率运动一会儿,然后再选取另一个。当然,还可以加上更多的随机性,如,改变运动方向的时间不是固定的n u m个周期,或者更倾向于朝某个方向等。实际编程中还必须考虑到碰撞检测,当NPC 遇到障碍物后,会随机选取一个前进的方向,继续行走。
当游戏中的主角进入到NPC 的&警戒区域&后,游戏的A I 可轻易获得目标的位置,然后控制N P C 对象移向被跟踪的对象。跟踪算法可以模拟这一行为:
void Bat_AI(void){if(ghost.x & bat.x)bat.x++;elseif(ghost.x & bat.x)bat.x--;if(ghost.y & bat.y)bat.y++;elseif(ghost.y & bat.y)bat.y--;//其他代码} // end Bat_AI
这段代码放到程序中实际运行时不难发现,N P C会迅速地追踪到目标。这种跟踪非常精确,但是在游戏中过于精确却不一定是一件好事,因为这会使N P C的行为看上去显得有点假。一种更自然的跟踪方式是使跟踪者的方向矢量与从跟踪目标的中心到跟踪者的中心所定义的方向矢量靠拢。这个算法可以这样设计:假设AI 控制的对象称作跟踪者(tracker)并有以下属性:
Position:(tracker.x,tracker.y)Velocity:(tracker.xv,tracker.yv)
被跟踪对象称作跟踪目标(target),有如下属性:
Position:(target.x,target.y)Velocity:(target.xv,target.yv)
基于上面的定义,下面是调整跟踪者的速度向量的常用逻辑循环:1)计算从跟踪者到跟踪目标的向量:TV = (target.x -tracker.x, target.y-tracker.y) = (tvx, tvy),规格化TV——也就是说 (tvx, tvy)/ Vector_Length(tvx,tvy)使得最大长度为1.0,记其为TV*。记住Vector_Length()只是计算从原点(0,0)开始的矢量长度。2)调整跟踪者当前的速度向量,加上一个按rate比例缩放过的TV*:
tracker.x += rate*tvx;tracker.y += rate*tvy;
注意:当rate &1.0时,跟踪向量会合得更快,跟踪算法对目标跟踪得更紧密,并更快地修正目标的运动。3)跟踪者的速度向量修改过之后,有可能向量的速度会溢出最大值,就是说,跟踪者一旦锁定了目标的方向,就会继续沿着该方向加速。所以,需要设置一个上界,让跟踪者的速度从某处慢下来。可做如下改进:
tspeed = Vector_Length(tracker.xv, tracker.yv);if(tspeed&max_SPEED){tracker.xv*=0.7;tracker.yv*=0.7;}
也可以选择其它的边界值0.5 或0.9 等均可。如果追求完美,甚至可以计算出确切的溢出,并从向量中缩去相应的数量。追踪过程中同样也会遇到障碍物,因此,碰撞检测是必不可少的。程序员可以根据不同的游戏类型设计碰撞后的行为逻辑。
这个技术是让游戏的N P C 能避开玩家角色的追击,跟前面的跟踪代码很相似,跟踪算法的对立面就是闪避算法,只要把上例中的等式翻转,闪避算法就成了,下面是转换后的代码:]
if(ghost.x & bat.x)bat.x--;elseif(ghost.x & bat.x)bat.x++;if(ghost.y & bat.y)bat.y--;elseif(ghost.y & bat.y)bat.y++;......
以上介绍的3 个算法可以模拟NPC 的一些简单的寻路、跟踪和闪避行为,在小游戏中会经常用到。但是,在较大型的游戏中使用这样简单的算法就会大大影响游戏效果了。因此,大型游戏的人工智能算法都较复杂。
内容节选自《游戏编程中的寻路算法研究》
可以看看《AI for Game Developers》这本书:   ·使用基于势函数的单一技术处理追赶、躲避、聚集和避障等问题。   ·使用包括路径点和经典a*算法解决寻径问题。   ·利用ai脚本扩充ai引擎的功能,让设计者和玩家更好地设计和玩游戏。   ·给你的游戏角色赋予基于规则的ai推理能力,包括模糊逻辑和有限状态机。   ·使用概率分析和诸如贝叶斯推理的高级技术处理不确定性问题。
毫无疑问,A*算法是最常见的。
不是您所需,查看更多相关问题与答案
德问是一个专业的编程问答社区,请
后再提交答案
关注该问题的人
共被浏览 (19727) 次温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
阅读(322)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_',
blogTitle:'游戏编程经典算法(二)',
blogAbstract:'6.武士巡逻问题\r\n#include&&&stdio.h&#include&&&stdlib.h&\r\n#define&& MAXSIZE&&&& 10&&&&&&/* max. board size&&&&&&&&&&*/#define&& MAX_STACK&&100&&&&&&/* stack size = board-size^2*/#define&& SUCCESS&&&&&&1&&&&&&/* return value for a succ. */#define&& FAILURE&&&&&&0&&&&&&/* for a failure.&&&&&&&&&& */#define&&',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:6,
publishTime:5,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'',
hmcon:'0',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}}

我要回帖

更多关于 android编程经典200例 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信