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
Post a Comment