public class AI extends AppCompatActivity {
public static Game gameAI = new Game();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
DrawGameAI view = new DrawGameAI(this);
setContentView(view);
}
}
class DrawGameAI extends View {
public DrawGameAI(Context context){
super(context);
}
protected void onDraw(Canvas canvas){
....
}
public boolean onTouchEvent(MotionEvent e){
if(gameAI.getBlackTurn() == true) {
gameAI.move((int) ((xPos - 7.0 / 1080.0 * width) / gridSize), (int) ((yPos - 7.0 / 1080.0 * width) / gridSize));
invalidate();
break;
}
else if(gameAI.getBlackTurn() == false){
gameAI.AI();
invalidate();
break;
}
}
return true;
}
}
}
我的想法是我是黑人,AI是白人。每次我点击我的板子,它都会在位置上画一块黑色的东西。然后我希望我的AI能够自动响应。 (当AI转动时,gameAI.AI()将在棋盘上放一块,gameAI.move()将转动转弯并将我的黑棋子放在棋盘上) 我的问题是每次我必须在AI转动时点击屏幕,这会触发ontouchEvent以使其绘制。 我尝试将if(gameAI.getBlackTurn()== false)更改为if(gameAI.getBlackTurn()== false),这样,在第一个if语句之后,轮到我完成并且程序将执行第二个if语句,看起来像
if(gameAI.getBlackTurn() == true) {
gameAI.move((int) ((xPos - 7.0 / 1080.0 * width) / gridSize), (int)
((yPos - 7.0 / 1080.0 * width) / gridSize));
}
if(gameAI.getBlackTurn() == false){
gameAI.AI();
}
invalidate();
break;
这一次,在每个ontouchEvent之后,棋盘上有两块,然后onDraw将被调用并同时绘制我的棋子和AI棋子。 但是,我的AI真的很慢。我必须等待一段时间才能同时绘制两件。 因此,我想要的是在轮到我之后,立即在板上涂上黑色片,然后在AI转动时我不必触摸屏幕,在AI移动后,将AI片涂在板上。
我该怎么做?谢谢!