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

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

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

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

我本来想用传统的 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,感觉挺有意思!

  • 独立开发者
    15 引用 • 78 回帖 • 1 关注
  • Java

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

    3190 引用 • 8214 回帖
  • 兴趣爱好
    11 引用 • 88 回帖

相关帖子

欢迎来到这里!

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

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

推荐标签 标签

  • 游戏

    沉迷游戏伤身,强撸灰飞烟灭。

    177 引用 • 816 回帖 • 2 关注
  • JWT

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

    20 引用 • 15 回帖 • 7 关注
  • IDEA

    IDEA 全称 IntelliJ IDEA,是一款 Java 语言开发的集成环境,在业界被公认为最好的 Java 开发工具之一。IDEA 是 JetBrains 公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。

    181 引用 • 400 回帖 • 1 关注
  • 音乐

    你听到信仰的声音了么?

    61 引用 • 511 回帖 • 1 关注
  • 持续集成

    持续集成(Continuous Integration)是一种软件开发实践,即团队开发成员经常集成他们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。

    15 引用 • 7 回帖
  • 倾城之链
    23 引用 • 66 回帖 • 138 关注
  • Sandbox

    如果帖子标签含有 Sandbox ,则该帖子会被视为“测试帖”,主要用于测试社区功能,排查 bug 等,该标签下内容不定期进行清理。

    410 引用 • 1246 回帖 • 587 关注
  • OnlyOffice
    4 引用 • 3 关注
  • Solo

    Solo 是一款小而美的开源博客系统,专为程序员设计。Solo 有着非常活跃的社区,可将文章作为帖子推送到社区,来自社区的回帖将作为博客评论进行联动(具体细节请浏览 B3log 构思 - 分布式社区网络)。

    这是一种全新的网络社区体验,让热爱记录和分享的你不再感到孤单!

    1436 引用 • 10056 回帖 • 491 关注
  • Wide

    Wide 是一款基于 Web 的 Go 语言 IDE。通过浏览器就可以进行 Go 开发,并有代码自动完成、查看表达式、编译反馈、Lint、实时结果输出等功能。

    欢迎访问我们运维的实例: https://wide.b3log.org

    30 引用 • 218 回帖 • 635 关注
  • 职场

    找到自己的位置,萌新烦恼少。

    127 引用 • 1706 回帖
  • 以太坊

    以太坊(Ethereum)并不是一个机构,而是一款能够在区块链上实现智能合约、开源的底层系统。以太坊是一个平台和一种编程语言 Solidity,使开发人员能够建立和发布下一代去中心化应用。 以太坊可以用来编程、分散、担保和交易任何事物:投票、域名、金融交易所、众筹、公司管理、合同和知识产权等等。

    34 引用 • 367 回帖 • 2 关注
  • CongSec

    本标签主要用于分享网络空间安全专业的学习笔记

    1 引用 • 1 回帖 • 18 关注
  • 脑图

    脑图又叫思维导图,是表达发散性思维的有效图形思维工具 ,它简单却又很有效,是一种实用性的思维工具。

    30 引用 • 96 回帖 • 1 关注
  • V2EX

    V2EX 是创意工作者们的社区。这里目前汇聚了超过 400,000 名主要来自互联网行业、游戏行业和媒体行业的创意工作者。V2EX 希望能够成为创意工作者们的生活和事业的一部分。

    17 引用 • 236 回帖 • 316 关注
  • JRebel

    JRebel 是一款 Java 虚拟机插件,它使得 Java 程序员能在不进行重部署的情况下,即时看到代码的改变对一个应用程序带来的影响。

    26 引用 • 78 回帖 • 675 关注
  • Unity

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

    25 引用 • 7 回帖 • 160 关注
  • 新人

    让我们欢迎这对新人。哦,不好意思说错了,让我们欢迎这位新人!
    新手上路,请谨慎驾驶!

    52 引用 • 228 回帖
  • 黑曜石

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

    A second brain, for you, forever.

    16 引用 • 130 回帖
  • Bootstrap

    Bootstrap 是 Twitter 推出的一个用于前端开发的开源工具包。它由 Twitter 的设计师 Mark Otto 和 Jacob Thornton 合作开发,是一个 CSS / HTML 框架。

    18 引用 • 33 回帖 • 668 关注
  • WebClipper

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

    3 引用 • 9 回帖 • 7 关注
  • 一些有用的避坑指南。

    69 引用 • 93 回帖
  • 负能量

    上帝为你关上了一扇门,然后就去睡觉了....努力不一定能成功,但不努力一定很轻松 (° ー °〃)

    88 引用 • 1235 回帖 • 408 关注
  • 30Seconds

    📙 前端知识精选集,包含 HTML、CSS、JavaScript、React、Node、安全等方面,每天仅需 30 秒。

    • 精选常见面试题,帮助您准备下一次面试
    • 精选常见交互,帮助您拥有简洁酷炫的站点
    • 精选有用的 React 片段,帮助你获取最佳实践
    • 精选常见代码集,帮助您提高打码效率
    • 整理前端界的最新资讯,邀您一同探索新世界
    488 引用 • 384 回帖
  • OpenResty

    OpenResty 是一个基于 NGINX 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。

    17 引用 • 40 关注
  • Sphinx

    Sphinx 是一个基于 SQL 的全文检索引擎,可以结合 MySQL、PostgreSQL 做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。

    1 引用 • 222 关注
  • SpaceVim

    SpaceVim 是一个社区驱动的模块化 vim/neovim 配置集合,以模块的方式组织管理插件以
    及相关配置,为不同的语言开发量身定制了相关的开发模块,该模块提供代码自动补全,
    语法检查、格式化、调试、REPL 等特性。用户仅需载入相关语言的模块即可得到一个开箱
    即用的 Vim-IDE。

    3 引用 • 31 回帖 • 104 关注