java - Delay between two lines of code - Graphics -


i'm trying make simon game. mid way in programing game got problem. want program read queue values had been in game , turn flash colors in right order (i chose turn them gray , on second later normal) , problem. if @ method play() see comment wrote there. how do that?

this code:

import java.awt.color; import java.awt.font; import java.awt.graphics; import java.awt.event.actionevent; import java.awt.event.actionlistener; import java.awt.event.mouseevent; import java.awt.event.mouselistener; import java.awt.geom.arc2d; import java.util.date;  import javax.swing.jpanel; import javax.swing.timer;  import unit4.collectionslib.queue;  public class window extends jpanel implements mouselistener , actionlistener{      queue <integer>data = new queue<integer> ();     queue <integer>temp = new queue<integer> ();     int random;     timer prestart;     int prestartcount;     color [] colors = {color.red,color.blue,color.yellow,color.green};        public window (){                prestart = new timer (1000,this);         int prestartcount=0;             prestart.start();            }      public void play (){                     random = (int)(math.random()*4);         data.insert(random);          int x=0;         color temp=color.black;          x = data.remove();         this.temp.insert(x);             temp = colors[x];         colors[x]=color.gray;         // delay of 1 second here         colors[x]=temp;     }         public void paintcomponent(graphics g) {         super.paintcomponent(g);          g.setcolor(colors[0]);         g.fillarc(80, 150, 250, 250, 0, 360);          g.setcolor(colors[1]);         g.fillarc(80, 150, 250, 250, 0, 270);          g.setcolor(colors[2]);         g.fillarc(80, 150, 250, 250, 0, 180);          g.setcolor(colors[3]);         g.fillarc(80, 150, 250, 250, 0, 90);                  g.drawstring(prestartcount+"", 0, 30);         repaint();     }      @override     public void mouseclicked(mouseevent arg0) {         arg0.getlocationonscreen();          }      @override     public void mouseentered(mouseevent arg0) {      }       @override     public void mouseexited(mouseevent arg0) {           }       @override     public void mousepressed(mouseevent arg0) {          }       @override     public void mousereleased(mouseevent arg0) {     }       @override     public void actionperformed(actionevent act) {         if (act.getsource()==prestart){             if (prestartcount<3)                 prestartcount++;             else{                 prestart.stop();                 play();                  }                            }            }    } 

use single shot swing based timer flip color , call repaint(). see using timers in swing applications details.


Comments

Popular posts from this blog

c# - SVN Error : "svnadmin: E205000: Too many arguments" -

c# - Copy ObservableCollection to another ObservableCollection -

All overlapping substrings matching a java regex -