问题标签 [roguelike]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
388 浏览

c++ - 有一个实例化的派生类将指向自身的指针放入数组中?

好的,这是一个非常混乱的问题——我什至不完全知道要搜索什么。

我在这里问了一个问题,与游戏的实体处理系统有关:Initiating a derived class with specific variable values

到目前为止,这对我来说很好,但对于一件事。我想让小怪不只是相互碰撞,而是互动。

如何通过坐标查找派生类的特定实例?

例如,找到位于 22,22 的 baseObject:Enemy() 并从中获取“nType”的值

想到的是在数组中放置某种指向实例的指针,并在所述实体移动时移动它......但是如何让派生类将指向自身的指针添加到数组中?然后我如何从该实例的变量中提取一些东西?

唷。希望这是有道理的。

0 投票
3 回答
1497 浏览

f# - 在游戏引擎中使用 F#

我目前正在创建一个roguelike游戏,并且已经开始使用 C# 进行编码,但到目前为止还没有编写太多代码(<1000 行)......

现在,我再次查看了 F#,这种语言似乎很酷……我现在正在考虑将 F# 用于游戏引擎,我认为这将是代码线的 90%(roguelike 有一个非常“精简”的 ASCII-UI)。

你认为在为程序内容生成、复杂的 AI 和游戏逻辑编写编码方面,F# 会比 C# 更适合吗?你有没有看到任何陷阱(当然,除了我必须先掌握语言)?

如果 F# 不仅仅是一个研究项目并且会被 Microsoft 放弃,或者是否有声明说它现在是主要的 .NET 语言,我有些担心?

感谢您的输入。

0 投票
1 回答
319 浏览

c++ - 使用 ncurses 在 C++ 中进行运动绑定

我无法让这个运动绑定工作。我正在使用 ncurses 库,update_ch 和 oldch 是全局变量。KEYERR 是一个设置为-120 的宏(我只是不处理那些按键)。我试图限制玩家,让他不能上下左右,但他必须不断按压他们才能移动。它不起作用,您仍然可以按住键并移动。有什么建议么?我的逻辑一定是错误的。

0 投票
2 回答
2647 浏览

python - libtcod 和 python 中的击键/控件?

在Roguebasin上的Python/Libtcod 教程,用于控制角色的基本代码使用上下左右键。有没有办法让它使用 WSAD 或任何其他键?Libtcod 只允许我使用“特殊”键,例如箭头键、PGDN/PGUP、F1 F2 F3,但不能使用常规的字母数字键。

0 投票
2 回答
373 浏览

ruby - Ruby 中更复杂的终端 I/O

我正在尝试使用 Ruby 制作一个在终端内运行的 roguelike 游戏,但我不确定如何去做。我希望能够单独处理和更新标准 80*24 终端窗口中的每个单元格。我可以使用标准库来做到这一点,还是有什么好的宝石可以做到这一点?

0 投票
1 回答
266 浏览

ruby - 在浏览器中运行的 JRuby 的 ncurses 类似物?

我想在浏览器中运行一个使用 ncurses 的 ruby​​ 应用程序。为此,我可以使用 JRuby;但是我用什么替换 ncurses ?

我正在考虑将 JRuby 作为此处描述的小程序运行。我还发现了一些类似 ncurses 的界面的 Jave 代码1,但我不知道如何将它与 JRuby 集成。

0 投票
3 回答
176 浏览

c++ - 重绘屏幕并擦除已经存在的内容

我需要一些帮助 - 我正在尝试使用 C++ 创建一个 roguelike,目前,我有一个非常简单的小屏幕,带有一个生成地图的 void(),使用“#”表示墙壁和“。” 地板。它可以通过比较一些映射玩家的 X 和 Y 值的整数来绘制玩家。我什至有一个小HUD,它会显示玩家的统计数据。

但是,问题是,这一切都是使用典型的命令控制台窗口设计的,我开始认为我做错了。

我希望玩家通过使用数字键盘在我拥有的这个空旷的大房间中移动——这很有效。通过使用 Switch,我调整了 X 和 Y 玩家值,然后再次重绘屏幕。

这就是问题所在。这实际上重新绘制了屏幕:每次我移动时,它都会重新添加 20 多条线。几次移动后,我有一个命令控制台窗口,其中包含数百行的文本。

那么我做错了什么?是否有我不知道的清除屏幕的命令?
还是我从一开始就做错了——例如,你必须按“回车”来输入你的命令,这在任何其他 roguelike 中都没有。我是一个新手程序员,所以任何和所有的帮助表示赞赏!

谢谢!

编辑:好的,谢谢大家,我现在正在使用 PDCurses 并搜索文档来弄清楚如何使用这个东西!再次非常感谢!有人请给提出这个建议的人打勾!:D

0 投票
5 回答
4838 浏览

scala - 如何检测控制台上的按键?

我正在用 Scala 写一个 roguelike。例如,我需要能够看到用户何时按下箭头键。我发现的所有解决方案都需要玩家按回车键。

有没有办法以与 C 中的 getch() 类似的方式检测控制台应用程序中的按键?

0 投票
1 回答
245 浏览

python - 为地牢创建一个房间会给出错误的尺寸/没有墙壁

我正在使用 Python 2.7 libtcod制作 Roguelike,目前正在尝试获取一个函数来根据给定的楼层号、x1、x2、y1 和 y2 坐标集创建一个单独的房间。预期的行为是我应该得到一个以墙壁为界的房间,否则将充满空虚。例如, makeRoom(0, 1, 1, 10, 10) 应该给出:

然而,相反,我得到了一个与地牢地板一样宽的房间,只考虑高度,而侧面的墙壁永远不会到达。所以相反,我得到了一个更像这样的安排:

更改地牢地板的总可用宽度会导致房间缩小或水平增长,无论我要求它具有什么尺寸。无论我如何调整范围、调整它们的位置、评论或取消评论,侧壁都不会出现。简而言之,无论我尝试什么,都只遵循高度和顶部/底部。

base.py(主游戏循环):

dungeon.py(完成工作):

我已经消除了图形的问题;地牢本身肯定有问题,而不是它在屏幕上的显示方式。不过,我找不到任何理由该算法应该以这种方式出错。

编辑:给出上图的代码的原始版本在构成墙壁的部分下方有“内部区域”部分;像我一样把它放在上面,结果整个房间都是由墙壁组成的,但仍然太宽了。据我所知,他们应该给出相同的结果;他们不。

0 投票
1 回答
271 浏览

client-server - 去中心化 Roguelike 的最佳 IPC 形式?

我有一个项目来创建一个,它以某种方式从引擎中抽象出用户界面,从地图创建、站点线等中抽象出引擎。为了缩小焦点,我首先想要获取用户界面(玩家的客户端)和引擎工作。

我目前的想法是让客户端基本上是一个程序,它决定一个角色(玩家,怪物)轮到它做什么,并等待它再次移动。所以每个怪物都有一个客户,玩家也是如此。玩家的客户端打印地图,等待输入,将其发送到引擎,然后告诉玩家发生了什么。怪物的客户端除了不打印地图和使用 AI 代替键盘输入外,也是一样的。

在我走得更远之前,如果这似乎是一种模糊的做事方式,我的目标是学习,而不是写一个 roguelike。这是旅程,而不是目的地。

所以我需要选择哪种形式的最适合这个模型。

  1. 我第一次尝试使用管道,因为它们最简单,我为播放器编写了一个 UI,并编写了一个程序来输入指令,例如放置地图和播放器的位置。虽然这可行,但它只允许一个客户端通过标准输入和输出进行通信。
  2. 我考虑过让引擎成为一个守护进程,它在一个假脱机中查找,客户端在启动时创建每个客户端唯一的临时文件,以向引擎提供指令并接收反馈。
  3. 最后,我用套接字做了一些介绍性的编程。他们似乎可能是要走的路,并且可能有一天会在网上运行游戏。如果可能的话,我想使用一个更简单的解决方案,因为我不熟悉它们,所以更容易出错。
  4. 我总是乐于接受建议。