在c中实现线程化



我目前正在制作一个迷你游戏项目,我对这个特定机制有一个问题:

void monsterMove(){
//monster moves randomly
}
void playerMove(){
//accepting input as player movement using W, A, S, D
}

然而,该项目要求怪物始终保持移动,即使玩家没有移动。

经过一些研究,我发现需要多线程来实现这个机制,因为monsterMove()playerMove()需要并发运行,即使playerMove()没有收到用户的任何输入。

具体来说,我想回答两个问题:

  1. 哪个函数需要作为线程?
  2. 如何构建线程?

遗憾的是,我没有找到专门针对这类问题的资源,因为互联网上的一切似乎都指出了多线程如何在某种程度上作为并行工作,而不是在这样的实现中。

我认为monsterMove()将递归运行,而playerMove()将作为线程,因为monsterMove()将需要运行每n秒,即使playerMove()线程尚未完成(尚未输入)。虽然我可能大部分是错的。

提前感谢!

(注:为了避免误解,我特别问的是线程和多线程是如何工作的,而不是机械的逻辑。

编辑:程序正在工作!但是,任何与该程序如何使用多线程完成相关的答案/代码都非常感谢。:)

你不需要多线程:

以下伪代码描述了基本结构:
while (1)
{
check if input is available using kbhit
if (input available)
read user input using getch
move player depending on user input
move monsters
}

可以使用CreatdThread函数使用多线程,但是你的代码会变得过于复杂。

最新更新