下面是一段代码,点击播放器将通过放置X计数器进行移动,然后计算机将通过放置O计数器进行移动。该 目前只有这个代码的问题是,当玩家放置他们的X计数器时,O计数器也会同时放置。所以它看起来都是玩家 并且计算机同时进行了移动,并且每当玩家移动时就会发生这种情况。
我想问的是,是否有可能包括2秒的时间延迟以便玩家放置他们的X然后在2秒后计算机将放置他们的O?
提前致谢
@Override
public void onClick(View v) {
if (!((Button) v).getText().toString().equals("")) {
return;
}
if (playerOneMove) {
((Button) v).setText("X");
((Button) v).setTextColor(playerX);
computerMove();
}
}
private void computerMove() {
String[][] field = new String[3][3];
Random random = new Random(); //you may want to declare this as a class field
List<Button> emptyButtons = new ArrayList<>();
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
field[i][j] = buttons[i][j].getText().toString();
if (field[i][j].equals("")) {
emptyButtons.add(buttons[i][j]);
}
}
}
Button selectButton;
for (int i = 0; i < 3; i++) {
if (field[i][0].equals(field[i][1])
&& field[i][2].equals("")){
//prevent win/win on rows by selecting the correct button here
}
else if (field[i][0].equals(field[i][2])
&& field[i][1].equals("")){
//prevent win/win on rows by selecting the correct button here
}
else if (field[i][1].equals(field[i][2])
&& field[i][0].equals("")){
//prevent win/win on rows by selecting the correct button here
}
else {
selectButton = emptyButtons.get(random.nextInt(emptyButtons.size()));
}
selectButton.setText("O");
selectButton.setTextColor(playerO);
}
答案 0 :(得分:2)
您可以将计算机逻辑放在处理程序或计时器任务中:How to call a method after a delay in Android
但是你还需要一些标志,这会阻止用户在等待计算机移动时放置X.
答案 1 :(得分:2)
我编辑你的onclick有延迟,我想你需要某种阻止用户的旗帜直到电脑移动!
{{1}}
我觉得最好在1秒到3秒之间使用一些随机数来延迟,而不是不断延迟,这会为用户带来更好的体验
答案 2 :(得分:1)
您可以在Android中查看处理程序和 Runnable 类。您可以根据需要延迟方法的时间。
TypeError at /account/
unorderable types: DeferredAttribute() < datetime.datetime()