我試圖做一個Simon game。 我是編程遊戲的中途,但我遇到了問題。 我希望程序從隊列以前一直在遊戲中,並打開所有值閃爍的顏色以正確的順序讀取(我選擇把他們的灰色和秒鐘後恢復正常),這是我的問題。如果你看看play()
的方法,你會看到我在那裏寫的評論。我怎麼做?延遲兩者之間 - 圖形
這是我的代碼:
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 one 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();
}
}
}
}
1)爲了更好地幫助越早,張貼[SSCCE](http://sscce.org/)。 2)請爲類使用明智的名稱,即使在測試代碼中也是如此。像「SimonGameTest」這樣的東西可能適合這個。 3)請學習常見的[Java命名約定](http://java.sun.com/docs/books/jls/second_edition/html/names.doc.html#73307)(具體用於名稱的情況) ,方法和屬性名稱並一致使用。 4)請爲代碼塊使用一致的邏輯縮進。 –