Как заставить бота делать паузу каждые несколько секунд в игре java ping pong? - PullRequest
0 голосов
/ 08 июня 2019

Я использовал правое весло в качестве бота, и я пытаюсь останавливать его каждые несколько секунд.Я пробовал несколько способов.

This is the code I tried:
 float time = System.currentTimeMillis();

 if (time >= 1000) {
        rPad.bot(theBall);
        time = System.currentTimeMillis();
 }

Я также пытался использовать нить:

   PongMain run = new PongMain();
    Thread thread = new Thread(run);
    thread.start();

 @Override
public void run() {
    rPad.bot(theBall);
    // TODO Auto-generated method stub  
 }

Я также пытался уснуть весло:

 try {
        Thread.sleep(1000);
        } catch (InterruptedException e) {
        e.printStackTrace();
        }

Ни один из них не сработал, хотя ошибок нет.Весло должно останавливаться на 0,5 или 1 секунду каждые несколько секунд.

1 Ответ

0 голосов
/ 08 июня 2019

Да, здесь вы можете использовать Thread.sleep и таймер.

Для этого Вы можете использовать Таймер для приостановки и возобновления своей задачи, я вставил ниже пример, где вы можете иметь небольшое представление о работе таймера и задачи таймера.

import java.util.Timer;
import java.util.TimerTask;

class MyTask extends TimerTask {
  int counter;

  public MyTask() {
    counter = 0;
  }
  public void run() {
    counter++;
    System.out.println("Ring " + counter);
  }
  public int getCount() {
    return counter;
  }
}

public class Main {
  private boolean running;
  private MyTask task;
  private Timer timer;
  public Main() {
    timer = new Timer(true);
  }

  public boolean isRinging() {
    return running;
  }

  public void startRinging() {
    running = true;
    task = new MyTask();
    timer.scheduleAtFixedRate(task, 0, 3000);
  }

  public void doIt() {
    running = false;
    System.out.println(task.getCount() + " times");
    task.cancel();
  }

  public static void main(String[] args) {
    Main phone = new Main();
    phone.startRinging();
    try {
      System.out.println("started running...");
      Thread.sleep(20000);
    } catch (InterruptedException e) {
    }
    phone.doIt();
  }
}

=> вывод:

started running...
Ring 1
Ring 2
Ring 3
Ring 4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...