标签: roguelike

什么编程语言最适合创建roguelike游戏?

有兴趣创建一个roguelike RPG(如Nethack,Rogue和ADOM),哪种编程语言最合适,为什么?

使用您选择的语言,请务必列出使其特别适合的语言库或方面.

roguelike

15
推荐指数
4
解决办法
2万
查看次数

将地图约束表示为ADT

这是一个玩具问题:

(roguelike)2D地图由方形单元组成,每个单元都有一种材料(岩石或空气).

每个单元具有四个边界(N,S,E和W).每个边界由两个单元共享.

只有当一侧是岩石而另一侧是空气时,边界可以选择性地包含"墙特征".

(墙壁功能可以是杠杆,图片,按钮等)

只有当一边是岩石而另一边是空气时,代数数据类型设计才能有一个存储墙特征的地方?即,数据结构不能代表两个气囊或两个岩石细胞之间的边界上的壁特征.

我尝试过的一种方法是对单元格值进行XORing棋盘图案,反转变化并且不变.

我不断得知自己在细胞之间存在多条等效路线的事实 - SSW与SWS相同(这个问题的1D版本是微不足道的).

(我认识到ADT表示不会特别'可查询'.)


更新失败的尝试:

称东边界E和南边界S.让每个边界为Same或者Diff Feature.这种方法的问题在于它允许存在不一致的路由,例如:

E<0,0> Same
S<1,0> Same
S<0,0> Same
E<0,1> Diff
Run Code Online (Sandbox Code Playgroud)

是否有一个数学名称,说不同的路线必须汇总到相同的总数?

您可以说Same为1且Diff为-1,并且任何两个单元格之间的每条路径上的乘积必须相等(1或-1).

haskell algebraic-data-types roguelike

10
推荐指数
1
解决办法
797
查看次数

用于roguelike游戏的纯Java文本界面

好吧,这听起来像是一个疯狂的想法 - 但我有兴趣用纯Java 模仿20世纪80年代风格的roguelike游戏文本界面,即使用Swing或类似的东西.

这大致是它需要做的事情:

  • 提供固定大小字符的固定大小网格作为"屏幕"(例如100*75)
  • 使用适当的等宽字体,理想情况下有许多有趣的符号
  • 允许单独设置每个字符位置的前景色和背景色
  • 允许在屏幕中的任何位置打印字符串或单个字符(这应该覆盖这些位置中屏幕缓冲区中已有的内容)

任何人都知道一个好的现有解决方案,可以实现这一点 或者我是不是从头开始一起黑客攻击?

ps我想要纯Java的原因是它可以在沙盒applet中运行.所以像jcurses这样的JNI解决方案被遗憾地排除了......

java swing roguelike

9
推荐指数
1
解决办法
5314
查看次数

scala中基于组件的实体系统

我正在搜索一些库,它实现了在多个游戏中使用的基于组件的实体系统(ECS)框架,并在许多游戏引擎中实现(unity,libgdx等)

我正在scala(ECS roguelike)开始一个小游戏项目,此时我只找到一个名为ashley的java库.

你知道是否存在其他ECS库(在Scala中),或者唯一的方法是在scala(ashley)中使用或重新实现这个库吗?

另一个相关的问题,演员范式和基于组件的实体系统并不是那么遥远,有什么区别?

architecture scala game-engine roguelike component-based

9
推荐指数
1
解决办法
630
查看次数

非常简单的F#中的RogueLike,使其更具"功能性"

我有一些现有的C#代码,用于非常非常简单的RogueLike引擎.故意天真,因为我试图尽可能简单地做到最低限度.它所做的只是使用箭头键和System.Console在硬编码的地图上移动@符号:

//define the map
var map = new List<string>{
  "                                        ",
  "                                        ",
  "                                        ",
  "                                        ",
  "    ###############################     ",
  "    #                             #     ",
  "    #         ######              #     ",
  "    #         #    #              #     ",
  "    #### #### #    #              #     ",
  "       # #  # #    #              #     ",
  "       # #  # #    #              #     ",
  "    #### #### ######              #     ",
  "    #              =              #     ",
  "    #              =              #     ",
  "    ###############################     ",
  "                                        ",
  " …
Run Code Online (Sandbox Code Playgroud)

f# functional-programming roguelike

7
推荐指数
1
解决办法
1428
查看次数

使用Java在面板中显示ASCII的最佳方法是什么?

我没有太多的Java经验,但我试图编写一个简单的类似流氓的游戏来熟悉它,我只是想知道我将如何创建这样的界面:

来自Thomas Biskup的JADE屏幕 有没有明显的方法可以让你这样做?作为Java新手,我真的不知道最好的方法是什么.

抱歉要模糊!

谢谢

java roguelike

5
推荐指数
1
解决办法
5054
查看次数

我可以将项目及其属性存储在外部文件中,并在需要时调用它吗?(在Python中编写Roguelike时)

我刚刚完成了本教程,用Python编写了一个Roguelike,我现在非常想知道去哪里以及接下来要做什么.

我的困境在于代码的混乱.我想在某个地方存储元素,例如项目; 生物; 技能; 任何可能存在大量具有众多属性的东西.

目前,所有这些代码都在一个变得非常大的单个文件中,这是最基本的.在一个级别放置项目的功能目前看起来很像:(生成级别时调用此函数)

def place_objects(room):

    #Maximum number of items per room
    max_items = from_dungeon_level([[1, 1], [2, 4]])

    #Chance of each item (by default they have a chance of 0 at level 1, which then goes up)
    item_chances = {}
    item_chances['heal'] = 35
    item_chances['lightning'] = from_dungeon_level([[25, 4]])
    item_chances['fireball'] = from_dungeon_level([[25, 6]])
    item_chances['confuse'] = from_dungeon_level([[10, 2]])
    item_chances['sword'] = from_dungeon_level([[5, 4]])
    item_chances['shield'] = from_dungeon_level([[15, 8]])

    #Choose a random number of items
    num_items = libtcod.random_get_int(0, 0, max_items)

    for i …
Run Code Online (Sandbox Code Playgroud)

python roguelike python-2.7 libtcod

5
推荐指数
1
解决办法
382
查看次数

在游戏引擎中使用F#

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

再说一次,我看了一下F#,这个语言看起来很酷......我现在正在考虑使用F#作为游戏引擎,我认为这将是代码行的90%(一个roguelike有一个非常'精益'的ASCII-UI).

你认为,F#比C#更适合编写程序内容生成,复杂AI和游戏逻辑的编码吗?你看到任何陷阱(除此之外,我当然要先掌握这门语言)吗?

如果F#不仅仅是一个研究项目并且将被微软抛弃,还是有声称它现在是一种主要的.NET语言,我有些担忧?

感谢您的输入.

f# roguelike

4
推荐指数
1
解决办法
1319
查看次数

如何在控制台上检测按键?

我正在斯卡拉写一个roguelike.我需要能够看到用户何时按下箭头键.我找到的所有解决方案都要求玩家按下回车键.

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

scala getch roguelike

4
推荐指数
2
解决办法
4025
查看次数

Java和Swing与游戏循环

(不是这样)这里的简短问题.我正在制作一个简单的roguelike,使用Swing作为UI而不是控制台(这使得它更容易在Eclipse中工作,除其他外)但我似乎遇到了障碍.

我遇到的麻烦是,当我进入游戏循环时,UI将无法正常显示.我得到一个丑陋的窗框,在整个过程中给我"单人纸牌"的效果,而在运行它时,它的RAM使用量会迅速增长.

我在这里错过了一些关于Swing的批评吗?我是否必须使用Swing的并发设置来执行此操作?如果是这样,最好的方法是什么?

完整代码如下:

package roguelike;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.LinkedList;

import javax.swing.*;
import javax.swing.text.*;

public class roguelike {
    Color c_black = new Color(0x000000);
    Color c_white = new Color(0xffffff);
    Color c_red = new Color(0xff0000);
    Color c_blue = new Color(0x0000ff);
    Color c_green = new Color(0x00ff00);

    UI ui = null;
    Player me = null;
    Map gamemap = null;
    LinkedList<Character> keyqueue = new LinkedList<Character>();

    int charheight = 20;
    int charwidth = 80;

    public static …
Run Code Online (Sandbox Code Playgroud)

java swing game-loop roguelike

2
推荐指数
1
解决办法
2183
查看次数

如何在C中创建一个struct数组?

我正在做一个roguelike游戏.我想将地图表示为结构数组,例如在数组中有256个结构.地图是一个16*16的图块网格,每个图块都有属性,例如它上面是否有项目.

所以说我想要一个256个结构的数组tiles:

struct tiles {
        char type; /* e.g. dirt, door, wall, etc... */
        char item; /* item on top of it, if any */
        char enty; /* entity on top of it, e.g. player, orc if any */
}
Run Code Online (Sandbox Code Playgroud)

然后,我需要访问这样的结构数组:

int main(void)
{
        unsigned short int i;
        struct tiles[256];

        for (i = 1; i <= 256; i++) {
                struct tiles[i].type = stuff;
                struct tiles[i].item = morestuff;
                struct tiles[i].enty = evenmorestuff;
        }
}
Run Code Online (Sandbox Code Playgroud)

c arrays struct roguelike

2
推荐指数
3
解决办法
2万
查看次数