Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当用户与代码的不同部分交互时,我是否需要一个线程来实时跟踪某些内容?_Java_Multithreading_Game Engine - Fatal编程技术网

Java 当用户与代码的不同部分交互时,我是否需要一个线程来实时跟踪某些内容?

Java 当用户与代码的不同部分交互时,我是否需要一个线程来实时跟踪某些内容?,java,multithreading,game-engine,Java,Multithreading,Game Engine,我正在用Java制作一个开放世界的基于文本的僵尸生存RPG,我希望能够在游戏中有实时事件,例如,当僵尸追在玩家身后时,玩家会在游戏中有一个垃圾空间,直到玩家到达某种检查点,比如房子的门或其他东西 首先,我想让玩家通过打开发电机来控制建筑物中的电力,发电机以燃料为动力。我希望燃料在大约7个比赛日后用完,每个比赛日都有6个实时小时 我从来没有使用过线程,所以我不确定这是否是我需要使用的,但是如果是,有人能告诉我如何编程我的示例吗?如果没有,那么谁能告诉我怎么做 谢谢! PS 有些人告诉我,他们不明白

我正在用Java制作一个开放世界的基于文本的僵尸生存RPG,我希望能够在游戏中有实时事件,例如,当僵尸追在玩家身后时,玩家会在游戏中有一个垃圾空间,直到玩家到达某种检查点,比如房子的门或其他东西

首先,我想让玩家通过打开发电机来控制建筑物中的电力,发电机以燃料为动力。我希望燃料在大约7个比赛日后用完,每个比赛日都有6个实时小时

我从来没有使用过线程,所以我不确定这是否是我需要使用的,但是如果是,有人能告诉我如何编程我的示例吗?如果没有,那么谁能告诉我怎么做

谢谢! PS 有些人告诉我,他们不明白我所说的“基于文本的游戏”是什么意思。这是一款游戏,除了文字之外没有任何图形,有时还有一张角色填充的附近环境地图

----编辑---- WorldObject是游戏中的一个对象,可以放置在房间对象的ArrayList中。可以使用主控制台类访问的静态RoomViewer类“查看”房间对象


Generator类扩展了WorldObject类,它应该有一些额外的方法,可以返回当前42个点中的燃油量(我可以自己做),以增量方式重新补充燃油(我可以自己做),并每实时小时释放1个点(我需要这部分的帮助)。

是。如果没有关于代码的更多细节,我无法给出详细的答案,但是任何时候,如果需要在独立于UI代码的时间线上进行处理,则需要在自己的线程中运行该处理。在您的情况下,您可能需要使用自动为您处理后台线程的解决方案。

不,您不需要使用基于线程的解决方案。但这是实现这一目标的可能途径。你应该首先学习基础知识,这样你才能做出明智的决定,如果这是适合你具体情况的最佳解决方案

对于一个游戏,你通常不需要使用不同的线程。大多数游戏在主游戏循环中运行,完成游戏中需要的所有操作,例如捕获输入事件(检查当前按下的键)、操纵世界状态、处理KI移动、处理用户操作、绘制所有内容。主游戏循环将以小时间单位运行,您可以称之为滴答声。你会在每次滴答声中操纵每个游戏对象一定数量。例如,您可以在循环的某个阶段对所有发电机进行迭代,并将每个正在运行的发电机的剩余燃油量减少一定量

如果刻度表示的时间跨度足够小,看起来像是实时的——事实上,在基于线程的解决方案中,这并没有什么不同,您只需拆分工作即可。除非您需要并行执行复杂的计算工作,否则这是没有用的——线程大部分时间都会休眠

使用主循环解决方案更容易实现和控制游戏世界。在您描述的场景中,通常不需要使用基于线程(或代理)的解决方案


如果它是基于文本的,您可能甚至不需要(隐式)线程来进行动画或事件处理。但是,要为您的具体案例做出决定,您需要首先了解这些工具。

如果您需要有关现有代码的信息,请让我知道。谢谢,伙计,这可能就是我想要的。我还将添加有关我的代码的更多信息。@TonyTerminator如果您还有其他问题,最好写一篇新文章,而不是中途更改问题。大多数游戏都是多线程的。循环通常仅用于基本游戏设计。如果任何游戏真的值得玩,它将使用多个线程。人们玩的大多数游戏(大多数不值得玩,但这是另一个方面——值得玩的游戏是棋盘游戏或真正的运动)都使用动画图形。请再看一下这个问题。这是一个基本的游戏设计。实际上,每个游戏都使用一个主游戏循环设计。当然,线程用于某些任务,如动画,但问题的焦点是游戏对象。在那里它是不需要的,也不是典型的。