带处理程序的简单AI?

时间:2015-12-23 11:39:21

标签: java android

我做了一个主要课程,包括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 

我知道我做错了什么。我希望你明白我的想法。但是我怎么能做到呢?

1 个答案:

答案 0 :(得分:1)

我来问你一个问题。你为什么要使用并发?据我所知,你在不需要的地方增加了额外的复杂性。

接下来,此代码段不足以检测问题。它可能与并发相关(例如isMyTurn没有标记为volatile,并且线程执行moveAI正在处理器缓存中缓存虚假版本,因为编译器可以对其进行优化)

也许你的moveAI会提前退出。尝试添加一些调试输出。