2014-06-19 4 views
0

J'essaye de faire bouger mon cercle pour que je puisse continuer à dévoler mon petit jeu d'applet pour l'école, mais pour une raison quelconque, ça ne bouge pas et je n'arrive pas à comprendre pourquoi.Cercle ne bouge pas applet Java

public class StartingPonit extends Applet implements Runnable{ 

    int x = 0; 
    int y = 0; 
    int dx = 1; 
    int dy = 1; 
    int radis = 20; 
    private Image i; 
    private Graphics doubleG; 

    @Override 
    public void init() { 
     setSize(800,600); 

    } 
     @Override 
    public void start() { 
     Thread thread = new Thread(this); 
     thread.start(); // thread info; 
    } 
     @Override 
    public void run() { 
     x =+ dx; 
     y =+ dy; 
     //thread info 
     while (true){ 
     repaint(); 
     try { 
      Thread.sleep(17); 
     } catch (InterruptedException ex) { 
      Logger.getLogger(StartingPonit.class.getName()).log(Level.SEVERE, null, ex); 
     } 
     } 
    } 
     @Override 
    public void stop() { 

    } 
    public void destory() { 

    } 
    @Override 
    public void update(Graphics g) { 
     if(i == null){ 
      i = createImage(this.getSize().width,getSize().height); //double bbuffering 
      doubleG = i.getGraphics(); 
     } 
     doubleG.setColor(getBackground()); 
     doubleG.fillRect(0,0, this.getSize().width,this.getSize().height); 

     doubleG.setColor(getForeground()); 
     paint(doubleG); 

     g.drawImage(i, 0, 0, this); 
    } 
    @Override 
     public void paint(Graphics g) { 
      g.setColor(Color.BLACK); 
      g.fillOval(x-radis, y-radis, radis*2, radis*2); //size of object 

    } 

} 
+2

Je ne sais pas ce que votre l'intention est - mais vous déplacez le cercle une fois et ensuite commencez votre boucle, donc il ne bougera qu'une seule fois –

+0

Pour que le cercle bouge, x et y doivent changer. Cela ne signifie-t-il pas que le code pour modifier x et y devrait être à un endroit légèrement différent dans votre code? – fvu

+1

1) Pourquoi coder une applet? Si cela est dû à spec. Par l'enseignant, veuillez les référer à [Pourquoi les enseignants CS devraient cesser d'enseigner des applets Java] (http://programmers.blogoverflow.com/2013/05/why-cs-teachers-should-stop-teaching-java-applets/). 2) Pourquoi AWT plutôt que Swing? Voir ma réponse sur [Swing extras sur AWT] (http://stackoverflow.com/a/6255978/418556) pour de nombreuses bonnes raisons d'abandonner l'utilisation des composants AWT. –

Répondre

0

Vous n'êtes pas mise à jour à x et y dans votre boucle

//thread info 
while (true){ 
    repaint(); 
    x += dx; 
    y += dy; 
    //rest the same 
} 
+0

Merci, il semble que j'ai aussi eu le = + mélangé avec + = – Rune

+0

oh vous avez raison. J'ai corrigé ma réponse pour la corriger. Désolé simplement copié et collé votre code, je ne l'ai pas compilé. – dkatzel

0

Vous avez également mispelt destroy() - public void destory() - devrait être public void destroy()