`
javasee
  • 浏览: 922835 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Java版AVG游戏开发入门[0]——游戏模式转换中的事件交互

阅读更多

示例程序下载地址:http://download.csdn.net/source/999273(源码在jar内)

<!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:PunctuationKerning /> <w:DrawingGridVerticalSpacing>7.8 磅</w:DrawingGridVerticalSpacing> <w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery> <w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery> <w:ValidateAgainstSchemas /> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:Compatibility> <w:SpaceForUL /> <w:BalanceSingleByteDoubleByteWidth /> <w:DoNotLeaveBackslashAlone /> <w:ULTrailSpace /> <w:DoNotExpandShiftReturn /> <w:AdjustLineHeightInTable /> <w:BreakWrappedTables /> <w:SnapToGridInCell /> <w:WrapTextWithPunct /> <w:UseAsianBreakRules /> <w:DontGrowAutofit /> <w:UseFELayout /> </w:Compatibility> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> </w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" LatentStyleCount="156"> </w:LatentStyles> </xml><![endif]-->

<!-- /* Font Definitions */ @font-face {font-family:宋体; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-alt:SimSun; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} @font-face {font-family:"\@宋体"; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; mso-pagination:none; font-size:10.5pt; mso-bidi-font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:宋体; mso-font-kerning:1.0pt;} /* Page Definitions */ @page {mso-page-border-surround-header:no; mso-page-border-surround-footer:no;} @page Section1 {size:612.0pt 792.0pt; margin:72.0pt 90.0pt 72.0pt 90.0pt; mso-header-margin:36.0pt; mso-footer-margin:36.0pt; mso-paper-source:0;} div.Section1 {page:Section1;} -->

<!--[if gte mso 10]> <mce:style><! /* Style Definitions */ table.MsoNormalTable {mso-style-name:普通表格; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman"; mso-ansi-language:#0400; mso-fareast-language:#0400; mso-bidi-language:#0400;} --> <!--[endif]-->

AVG,即Adventure Game,可以直译为[冒险游戏]。但是通常情况下我们说AVG是指[文字冒险游戏],也有人更直白的解释成自己选择路线和结局的电子小说,与硬砍硬杀的RPG或者揉破键盘的ACT不同,AVG多以解谜或文字游戏等脑力攻关推动剧情发展。现在日本流行的ADV,可以看作是AVG英文全称的不同缩写方式,大体上讲,AVG == ADV

由于商业化需要,现代主流的AVG往往是GalGame,也就是少女游戏,或称少女恋爱游戏,但GalGame != AVG,只是下属分支中的一环罢了,AVG包含GalGame,但GalGame并不能完全代表AVG/ADV。另外关于GalGame的详细介绍,在若木民喜《只有神才知道的世界》中演绎的相当生动,有兴趣的可以自己去看看~

《只有神知道的世界》漫画图

就技术角度而言,AVG开发可以算得所有游戏类型中最容易的。一款简单AVG游戏的制作难度甚至在贪食蛇、俄罗斯方块之下。由于实现的简易性,导致AVG的开发重心往往着重于策划及美工,程序员的作用则微乎其微。同时也正因AVG开发的门坎约等于0,所以此类型的同人游戏之多即可堪称世界之冠。另外,AVG开发工具普及的也促进了AVG的量产化。利用工具,即始是小说作者、漫画家等非软件专业出身的人士,往往也能轻易制作出顶级的AVG大作。(顺便一提,目前我所见过最好的AVG制作工具是鬼子的livemaker,采用类似思维导图的方式构造整个游戏,很多轻小说作者乃至网络漫画家用它制作自己作品的宣传游戏。但就技术角度上说,livemaker的开发依旧没什么难度......

由于AVG的大泛滥,通常仅有文字、图片及语音的AVG往往无法满足用户需求(H除外-_-)。我们每每可在AVG游戏类型后发现个+号,比如《樱花大战》是AVG+SLG,《生化危机》是AVG+ACT。所以客观上说,AVG开发仅仅能进行字图的交互是不够的,还要解决多模块组件的协调问题。

Java桌面应用开发中,我们都知道绘图是极为简单的,有ImageGraphics两个对象就可以Paint一个图形,即使图形对象再多,最后它们也必须统一在一个Paint中,所以Java中不存在图像的交互问题。

但问题在于,图像的显示可以统一,但是触发图像变化的事件却是很难统一的。比如现在有需求如下,在AVG模式中,触发键盘事件上、下、左、右时为控制画面的前进、后退,切换模式到SLG模式后,设定上、下、左、右是光标移动,那么如果我要在程序中实现,就必须记录当前模式,而后根据不同模式调用事件,再反馈到图形上。如果只有几个事件的区别,我们当然可以很容易用分支来实现;问题是,随着游戏规模的加大,这些分支将成几何倍数增多,单纯的分支判定到最后只能忙于应付,落个费力不讨好。

其实在这时,我们大可以使用一些技巧来轻松解决问题。

示例如下:

首先,我们构造一个接口,命名为IControl,继承鼠标及键盘监听,并在其中设定两个抽象方法:

而后,再构造一个接口,命名为IAVG,同样继承鼠标及键盘监听,并在其中设定三个抽象方法,用以操作IControl接口:




再后,制作一个显示图像用组件,命名为AVGCanva,继承自Canvas。

这段代码中的paint方法中并没有现成的方法,而是调用了IAVG接口的draw。紧接着,我们再设定一个AVGFrame用以加载AVGCanvas。

我们可以看到,在本例鼠标键盘事件及图像绘制完全通过接口方式实现。此时,只要让不同组件统一实现IControl接口,便可以轻松转换事件及图像的绘制。也正是我们都再熟悉不过的MVC模式中,通过Event导致Controller改变ModelView的基本原理。

下一回,我们将具体讲解一个AVG游戏实现的基本流程。

示例代码界面如下图:

初始界面

人物对话

问题选择

小游戏切换

不同游戏模式切换

示例程序下载地址:http://download.csdn.net/source/999273(源码在jar内)


分享到:
评论

相关推荐

    Java版AVG游戏开发入门示例

    这是一个Java版的桌面AVG游戏入门示例程序(源码在Jar内),演示了一个AVG游戏需要的基本功能。

    魍魉校园(Java版AVG游戏开发入门)源码分析

    NULL 博文链接:https://xpenxpen.iteye.com/blog/2171032

    起司工具(avg游戏制作工具)v0.25.3.11中文官方安装版

    起司工具是一款非常好用且功能强大的avg游戏制作工具,不需要专业的编程能力就可以轻松的使用起司游戏制作工具制作各种文字冒险游戏,像玩游戏一样做游戏,只要你有编故事的能力都可以制作属于自己的游戏,欢迎有...

    免费杀毒软件——avg_free_stb免费版在线安装

    免费杀毒软件——avg_free_stb免费版在线安装

    AVG游戏演示程序

    本演示程序是使用VB+ViceScript 制作的AVG游戏。亦是ViceScript的一个使用实例。由于制作仓促,程序中不免有许多错误,还望见谅。 注:ViceScript 是由鄙人使用PowerBASIC 10 开发的一款脚本语言。

    易语言AVG游戏选择例程源码

    资源介绍:。易语言AVG游戏选择例程源码。资源作者:。@游戏开发。资源界面:。资源下载:。

    AVG游戏素材.rar

    版权在唤境引擎手中,用唤境引擎做avg游戏可以免费使用

    AVG游戏选择例程.rar

    AVG游戏选择例程.rar

    强大的unity3d集成Ink语言插件用于avg文字游戏

    强大的unity3d集成Ink语言插件用于avg文字游戏 Ink Objects是一个简单的包,可以让对C#和Unity有基本理解的开发人员采用面向对象的方法编写广受喜爱的Ink语言。在Unity编辑器中构建对象库并将其导出到Ink中,就可以...

    真正的AVG电脑防护软件官方卸载工具——感谢大家支持并评论

    今天被CCleaner摆了一道,强制安装了个AVG电脑防护软件,也让我重新审视了目前网上可以查到的卸载工具,很遗憾最终的结果都是卸载不了,不过从博文中也获得了不少信息,该流氓软件的确有卸载工具并曾在官网上发布过...

    AVG游戏演示程序 VB+ViceScript

    本演示程序是使用VB+ViceScript 制作的AVG游戏。亦是ViceScript的一个使用实例。开发时间3天。由于制作仓促,程序中不免有许多错误,还望见谅。 游戏中剧情、对话、图片均来自GBA游戏《逆转裁判》。 注:...

    C#全能速查宝典

    《C#全能速查宝典》共分为8章,分别介绍了C#语言基础、Windows窗体及常用控件、Windows高级控件、控件公共属性、方法及事件、数据库开发、文件、数据流与注册表、GDI+绘图技术和C#高级编程,共包含562个C#编程中常用...

    AVG游戏Android移植框架源码(吉里吉里与NS)

    AVG游戏Android移植框架源码(吉里吉里与NS),其中包含了ONS-Android与KAS两个Android开源项目,以及NS的打包与解包工具。

    AVG游戏引擎pyMO.zip

    pymo (Python Memories Off) 是一个针对手机设计的AVG游戏引擎。可以使您不用懂得编程也可以较为方便地制作出一款简单的AVG游戏。 pymo是由chen_xin_ming开发的开源软件。pymo遵循BSD许可证,欢迎任何人下载代码或对...

    易语言AVG游戏选择例程

    易语言AVG游戏选择例程源码,AVG游戏选择例程,程序,程序1,程序2,程序3,程序4,执行子程序,最近的输入虚拟键状态_

    AVG 游戏引擎

    一个演示程序,它可以用来制作《心跳回忆》类型的游戏,这些都不需要你修改程序的源代码。而且作者也提供程序的源代码给大家下载。作者网站:http://yahle.yeah.net

    Excel公式与函数大辞典.宋翔(带书签高清文字版).pdf

    5.4.12 PROPER——将文本中每个单词的首字母转换为大写 181 5.4.13 VALUE——将文本型数字转换为数值 182 5.4.14 TEXT——多样化格式设置函数 183 5.4.15 FIXED——将数字按指定的小数位数取整 184 5.5 查找与...

    AVG2013网络版密钥

    AVG 2013 网络版 密钥 是从某个论坛上找来的(10月31号的) 我不用AVG 你可以试试

Global site tag (gtag.js) - Google Analytics