回合制战斗逻辑循环与多线程单线程选择
正做一款回合制小游戏,遇到了多线程和单线程的选择问题:
战斗逻辑循环很明了,如下:
for(所有战斗单位)
{
当前单位:
{
if(当前单位属电脑控制)
{
计算行动方式;
}
else(当前单位属玩家控制)
{
等待玩家输入行动方式;
}
行动;
}
设置下个单位为当前单位;
}
如果选择多线程(把以上战斗逻辑循环放在一个单独的线程中):
优点:战斗逻辑循环可直接使用,无需更改,代码清晰。
缺点:与界面显示之间大量的同步代码,极易出错,调试困难,难于维护。
如果选择单线程:
优点:单一线程,无同步代码,调试简单,易于维护。
缺点:战斗逻辑循环无法直接使用,因为程序无法同时运行两个循环(主界面消息循环和战斗逻辑循环)。需使用状态机等方式将战斗逻辑循环拆解执行,代码支离破碎。
望高手支招,多谢。