2017-10-15 5 views
0

J'étudie actuellement les classes et l'héritage en Java. J'ai fait un jeu RPG simple. et maintenant j'essaie d'utiliser le multithreading, mais cela ne fonctionne pas. Je veux que la sortie sorte toutes les 30 secondes. "Cela fait 30 secondes que le jeu a commencé." comme ceci .. Les nombres augmenteront avec le temps. Que dois-je faire? En fait, je ne parle pas bien l'anglais et ça peut être gênant .. Je vais attendre votre réponse. Je vous remercie!Comment utiliser timer multithread

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

public class Timer extends Thread { 

    int count = 0; 

    Timer m_timer = new Timer(); 
    TimerTask m_task = new TimerTask() { 

     public void run() { 
      count++; 
      System.out.println("It's been 30 seconds since the game started."); 
     } 

    }; 

    m_timer.schedule(m_task, 1000, 1000); 
}; 

principal:

public class Main { 

    public static void main(String[] args) { 
     Timer m_timer = new Timer(); 
     m_timer.start(); 
    } 

} 
+1

Je pense que si vous étudiez les classes et l'héritage pour la première fois, je pense qu'un jeu RPG est trop compliqué pour un débutant. Pourquoi avez-vous besoin de multi-thread? Fait-il partie d'une mission scolaire? – markspace

+0

Vous ne devriez jamais compter ** sur le calendrier de la minuterie étant précis **, ce n'est pas **. Utilisez une comparaison difficile à la place, 'long start = System.currentTimeMillis();', 'long current = System.currentTimeMillis;' et 'longue durée = current - start;'. N'utilisez pas de threads parallèles dans un environnement aussi incontrôlé. Vous devez d'abord organiser une structure de puits avec une méthode ** logique ** (souvent appelée 'tick') et ** render **. Là, vous pouvez compter le temps de jeu et déclencher d'autres calculs. – Zabuza

+0

oui ... affectation scolaire. Je n'ai pas rendu le jeu trop difficile. jeu simple. J'ajoute le multithreading ici.Il est très difficile .... :( –

Répondre

0

Si vous êtes intéressé à apprendre sur vous pourriez commencer concurrency en lisant le Java Tutorial. Je réalise que vous avez dit que l'anglais n'est pas votre langue maternelle, mais peut-être que vous pouvez suivre le code présenté dans ces tutoriels.

Il semble que vous êtes juste essayer de mettre en œuvre un exemple simple, donc je vais offrir le code suivant:

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

public class TimerMain { 

    public static void main(String[] args) { 
     Timer timer = new Timer(); 
     TimerTask task = new TimerTask(){ 
      private int count = 0; 

      @Override 
      public void run() { 
       count++; 
       System.out.println("Program has been running for " + count + " seconds."); 
      } 
     }; 
     timer.schedule(task, 1000, 1000); 

     //Make the main thread wait a while so we see some output. 
     try { 
      Thread.sleep(5500); 
     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } 
     //Stop the timer. 
     timer.cancel(); 
    } 

} 

Comme d'autres l'ont souligné, si vous avez besoin d'un haut degré de précision, vous devriez probablement utiliser une approche différente. J'ai trouvé this question concernant la précision de synchronisation.