游戏制作日记 -1_3《东方六弹幕说》游戏系统小更改 + 界面切换系统的制作

本贴最后更新于 2446 天前,其中的信息可能已经时过境迁

对不起最近一周都没有发帖。

我这几天在游戏系统上磨蹭了很久,主要是因为自己对回合制游戏特有的较慢的战斗节奏开始感到嫌弃,非觉得让玩家体验不上有速度感的战斗是个大缺口,于是逼着自己要一个特殊系统来突破,结果还真的想到了一个方案。

我本来想用传统的 WASD 键或十字键移动,但,这个废除了。移动靠鼠标右键,点击一下就可以让角色往那个方向跳跃,一个回合可以跳三次,不准正常走路和跑步。

跳跃可以在空中进行(这叫空中跳跃?日文叫二段跳跃或 aerial-step),横向跳跃最大距离预计达 5m 左右,机动性非常高。

攻击选择是数字键,或左键按角色打开技能表(能设定 6 个),发动也是左键,往想要发射的方向点击。攻击可以在自己的回合内的任何时候进行一次(也就是说,先移动或后移动都可以)。

新手可以一步一步地按右键达到目的地位置,站稳的情况下左键选择技能/攻击,然后还剩移动次数就再按右键跳回去。

老手可以在跳跃动作中进行攻击,比如还在开场一两回合的时候,一下子连按右键让角色跳的很高,同时按数字键选技能,在自身不稳当的空中强行远距离阻击。这样,即便是直线攻击的魔法,瞄准也要看技术了!

这样看来,我觉得操作感就比以前计划的样式要好多了,而且有更多花样好像可以专研。

WASD+ 鼠标确实是经典的射击动作游戏的操作法,因为操作很稳,动作敏锐,两手又不受空间冲突。

但在我的回合制游戏中,自己的回合里既不会有敌人的子弹出现,也不要求很强的反应能力。所以可以把动作权集中到鼠标上,在回合制游戏中体验有速度感的战斗。

当然,“完全可以用鼠标玩”也是一个重要的优势。

好了,我要该说我的编程的事情了,不然这个帖子要羊头狗肉了。


我设计了怎么去实现界面切换。

好像 JAVA 里面有很多 Library 支持 GUI 所需的很多功能,但我偏偏想要尽量自己做。

界面切换也是其中一个(虽然我不知道有没有存在一种 Class 可以管理界面切换)。

首先,我在我的 Class 里这样写了一下。

int mainEvent; //现在的界面,里边装着界面ID final int //界面ID定数 OPENING = 1000, TITLE = 2000, LOAD = 3000, SAVE = 4000, OPTION = 5000,OPTION_SOUND = 5001,OPTION_GRAPHIC = 5002, PAUSE = 6000, BATTLE = 7000;

我从以前就喜欢用 int 值的一个特殊用法,就是故意让 int 定数提高位数而增加额外的使用价值。

比如,上面的 OPTION(设定),如果有更多的界面分支,就可以在更小的位数写它们的界面 ID。而当在绘画界面,需判断 mainEvent 的内容时,可以这样写。

switch(mainEvent){ case OPENING: //这里写游戏启动时的OP动画 break; case TITLE: //这里写游戏主界面的内容 break; case OPTION_SOUND: case OPTION_GRAPHIC: //这里写全OPTION界面的共同点,比如背景图像 switch(mainEvent){ case OPTION_SOUND: //音频设定 break; case OPTION_GRAPHIC: //视频设定 break; } ... }

之后,就是怎么切换界面。当一个按钮被按时,比如是返回标题的按钮,就写

mainEvent = TITLE;

一行即可。

实际上,上面的 OPTION = 5000 定数没有任何使用场面,只是为了让这个界面定数宣言的地方,同时达成目录的效果。这样,就可以看透游戏中有哪些界面和它的分支,并一查这些定数就可以知道关联的代码在哪里。

我不知道这个写法会不会有什么漏洞,如果有的话希望指点。

1_3 以上为止。

P.S.第一次学 Markdown,感觉挺有意思!

  • 独立开发者
    16 引用 • 82 回帖 • 1 关注
  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3203 引用 • 8217 回帖
  • 兴趣爱好
    11 引用 • 88 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
bluelaserpointer
日本生的游戏编程爱好者,使用Java语言。做这个账号的时候是高中生。 上海

推荐标签 标签

  • 外包

    有空闲时间是接外包好呢还是学习好呢?

    26 引用 • 234 回帖 • 3 关注
  • Ant-Design

    Ant Design 是服务于企业级产品的设计体系,基于确定和自然的设计价值观上的模块化解决方案,让设计者和开发者专注于更好的用户体验。

    17 引用 • 23 回帖 • 13 关注
  • Mac

    Mac 是苹果公司自 1984 年起以“Macintosh”开始开发的个人消费型计算机,如:iMac、Mac mini、Macbook Air、Macbook Pro、Macbook、Mac Pro 等计算机。

    167 引用 • 597 回帖 • 1 关注
  • 音乐

    你听到信仰的声音了么?

    62 引用 • 512 回帖
  • webpack

    webpack 是一个用于前端开发的模块加载器和打包工具,它能把各种资源,例如 JS、CSS(less/sass)、图片等都作为模块来使用和处理。

    42 引用 • 130 回帖 • 253 关注
  • Ngui

    Ngui 是一个 GUI 的排版显示引擎和跨平台的 GUI 应用程序开发框架,基于
    Node.js / OpenGL。目标是在此基础上开发 GUI 应用程序可拥有开发 WEB 应用般简单与速度同时兼顾 Native 应用程序的性能与体验。

    7 引用 • 9 回帖 • 412 关注
  • 资讯

    资讯是用户因为及时地获得它并利用它而能够在相对短的时间内给自己带来价值的信息,资讯有时效性和地域性。

    56 引用 • 85 回帖 • 4 关注
  • WebClipper

    Web Clipper 是一款浏览器剪藏扩展,它可以帮助你把网页内容剪藏到本地。

    3 引用 • 9 回帖
  • 服务器

    服务器,也称伺服器,是提供计算服务的设备。由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务的能力。

    125 引用 • 585 回帖
  • 黑曜石

    黑曜石是一款强大的知识库工具,支持本地 Markdown 文件编辑,支持双向链接和关系图。

    A second brain, for you, forever.

    26 引用 • 264 回帖
  • 宕机

    宕机,多指一些网站、游戏、网络应用等服务器一种区别于正常运行的状态,也叫“Down 机”、“当机”或“死机”。宕机状态不仅仅是指服务器“挂掉了”、“死机了”状态,也包括服务器假死、停用、关闭等一些原因而导致出现的不能够正常运行的状态。

    13 引用 • 82 回帖 • 74 关注
  • Typecho

    Typecho 是一款博客程序,它在 GPLv2 许可证下发行,基于 PHP 构建,可以运行在各种平台上,支持多种数据库(MySQL、PostgreSQL、SQLite)。

    12 引用 • 67 回帖 • 448 关注
  • 分享

    有什么新发现就分享给大家吧!

    248 引用 • 1795 回帖
  • JWT

    JWT(JSON Web Token)是一种用于双方之间传递信息的简洁的、安全的表述性声明规范。JWT 作为一个开放的标准(RFC 7519),定义了一种简洁的,自包含的方法用于通信双方之间以 JSON 的形式安全的传递信息。

    20 引用 • 15 回帖 • 26 关注
  • CentOS

    CentOS(Community Enterprise Operating System)是 Linux 发行版之一,它是来自于 Red Hat Enterprise Linux 依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定的服务器以 CentOS 替代商业版的 Red Hat Enterprise Linux 使用。两者的不同在于 CentOS 并不包含封闭源代码软件。

    240 引用 • 224 回帖
  • gRpc
    11 引用 • 9 回帖 • 103 关注
  • Google

    Google(Google Inc.,NASDAQ:GOOG)是一家美国上市公司(公有股份公司),于 1998 年 9 月 7 日以私有股份公司的形式创立,设计并管理一个互联网搜索引擎。Google 公司的总部称作“Googleplex”,它位于加利福尼亚山景城。Google 目前被公认为是全球规模最大的搜索引擎,它提供了简单易用的免费服务。不作恶(Don't be evil)是谷歌公司的一项非正式的公司口号。

    49 引用 • 192 回帖
  • LeetCode

    LeetCode(力扣)是一个全球极客挚爱的高质量技术成长平台,想要学习和提升专业能力从这里开始,充足技术干货等你来啃,轻松拿下 Dream Offer!

    209 引用 • 72 回帖
  • Unity

    Unity 是由 Unity Technologies 开发的一个让开发者可以轻松创建诸如 2D、3D 多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。

    25 引用 • 7 回帖 • 117 关注
  • Dubbo

    Dubbo 是一个分布式服务框架,致力于提供高性能和透明化的 RPC 远程服务调用方案,是 [阿里巴巴] SOA 服务化治理方案的核心框架,每天为 2,000+ 个服务提供 3,000,000,000+ 次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点。

    60 引用 • 82 回帖 • 621 关注
  • 正则表达式

    正则表达式(Regular Expression)使用单个字符串来描述、匹配一系列遵循某个句法规则的字符串。

    31 引用 • 94 回帖 • 1 关注
  • 反馈

    Communication channel for makers and users.

    120 引用 • 906 回帖 • 279 关注
  • Maven

    Maven 是基于项目对象模型(POM)、通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。

    188 引用 • 319 回帖 • 237 关注
  • 快应用

    快应用 是基于手机硬件平台的新型应用形态;标准是由主流手机厂商组成的快应用联盟联合制定;快应用标准的诞生将在研发接口、能力接入、开发者服务等层面建设标准平台;以平台化的生态模式对个人开发者和企业开发者全品类开放。

    15 引用 • 127 回帖
  • WiFiDog

    WiFiDog 是一套开源的无线热点认证管理工具,主要功能包括:位置相关的内容递送;用户认证和授权;集中式网络监控。

    1 引用 • 7 回帖 • 612 关注
  • 深度学习

    深度学习(Deep Learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。

    43 引用 • 44 回帖 • 1 关注
  • DevOps

    DevOps(Development 和 Operations 的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。

    59 引用 • 25 回帖 • 1 关注