我做了一个主要课程,包括2名球员tic tac toe。 现在我创建了一个新类,它扩展了主类,但是人类反对简单的AI。 在新类中,我使用一个带有处理程序的线程来检查它是否是人的轮到,如果它不是它应该进行随机移动。问题是我的处理程序永远不会执行。
public class EasyAI extends MainActivity{
Thread thread;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
thread = new Thread(new moveAI());
thread.start();
}
class moveAI implements Runnable{
@Override
public void run()
{
Looper.prepare();
if(isMyTurn == false) //isMyTurn is a public variable in Main class
{
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
moveAI();
}
},500);
}
}
}
public void moveAI(){...}
} // end class
我知道我做错了什么。我希望你明白我的想法。但是我怎么能做到呢?
答案 0 :(得分:1)
我来问你一个问题。你为什么要使用并发?据我所知,你在不需要的地方增加了额外的复杂性。
接下来,此代码段不足以检测问题。它可能与并发相关(例如isMyTurn没有标记为volatile,并且线程执行moveAI正在处理器缓存中缓存虚假版本,因为编译器可以对其进行优化)
也许你的moveAI会提前退出。尝试添加一些调试输出。