【问题标题】:Run a program in a program在程序中运行程序
【发布时间】:2017-01-30 22:38:19
【问题描述】:

所以,我想知道是否有一种方法可以让我在 c 中运行一个程序,并在它完成后立即调用并运行第二个程序。

基本上,这是一个文本冒险的东西,我希望它分段运行,部分原因是代码不会因大量 if 语句和所有这些而变得庞大,部分原因是我可以有一个假检查站系统,这样你就可以从你离开的地方继续。

那个,或者以某种方式保存您的进度的方法。我想不出具体如何做到这一点,但我知道这是可能的。我只是还不知道我在做什么。如果上述问题真的很简单,请见谅。

【问题讨论】:

  • 他们不是简单的问题;不过,它们是非常广泛的问题。您是否编写了任何冒险代码?您将如何保持细分市场之间的一致性?据推测,当你从一个段过渡到另一个段时,玩家不会丢失他们的分数或找到的货物等。所以你需要知道如何在段之间传递这些数据。数据库?文件?任何一个都可以工作。您一次只与一个用户打交道,还是可能有多个用户?在 POSIX 环境中,您可以使用 exec*() 系列函数之一来执行新程序。
  • 一次一个用户,我想如果我要处理多个片段,我会使用一个文件而不是一个数组来保存玩家数据,我可能会使用如果我坚持一个巨大的文件。
  • 当您的用户重新开始游戏时,您将如何决定从哪个片段开始?
  • 我曾想过某种巨型系统,您可以在“检查点”获得密码,例如,在每一个或两个段之后,您会获得一个密码,您可以将其输入到主要起点这将跳转到您离开的片段的开头。我认为这是可行的。
  • 不同之处在于exec*()用一个新程序替换了当前进程——启动了不同的程序(或重新启动了同一个程序)——而system()暂时挂起当前程序而另一个程序运行,仅在第二个完成时恢复。在幕后,system() 通常在 POSIX 系统上实现,fork()exec*() 进行了艰苦的工作。

标签: c save state progress continue


【解决方案1】:

您可以在 C 中使用 system 调用来执行其他程序。

见: How do I execute external program within C code in linux with arguments?

但出于安全原因,我不建议这样做。相反,我认为您应该编写几个包含关卡信息的文本文件。然后编写一个根据用户输入导航这些文件的通用程序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-07
    • 2013-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-15
    • 2013-12-14
    相关资源
    最近更新 更多