While, timer laten na bootsen ?

Status
Niet open voor verdere reacties.

estgoth

Gebruiker
Lid geworden
11 mrt 2007
Berichten
108
Goededag beste helpmijers

Ik heb een project gekregen van school uit waarbij ik een spel moet maken.

Bij mijn spel wil ik een knop laten schijnen voor 500 miliseconde, helaas mag ik geen gebruik maken van een timer omdat we dit nog niet hebben gezien.

dus ik tracht dit probleem zo op te lossen :

ImageIcon figuur = new ImageIcon(dummy + ".gif");
knopArray[dummy].setIcon(figuur);


Date date = new Date();
long timer1 = date.getTime() + 1000;

do {
date = new Date();
} while (date.getTime() < timer1);

setFiguurBack();


helaas werkt dit niet, heeft iemand nog een idee waarbij ik een loop kan maken die bv. 1 second tijd in beslag neemt.

alvast bedankt
 
Ik weet niet goed wat je fout doet met je code want dat zou moeten werken, maar kijk eens na wat er verschillend is met mijn code
Code:
import java.util.Date;


public class Pauze {

	int sleeptime = 5000;

	public void firstPauzeMethod() {
		try {
			System.out.println("Pauze.firstPauzeMethod() 1");
			Thread.sleep(sleeptime);
			System.out.println("Pauze.firstPauzeMethod() 2");
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
	}

	public void secondPauzeMethod() {
		long stopTime = new Date().getTime()+sleeptime;
		System.out.println("Pauze.secondPauzeMethod() 1");
		while (new Date().getTime()<stopTime) {
			// DO NOTHING
		}
		System.out.println("Pauze.secondPauzeMethod() 2");
	}
	public static void main(String[] args) {
		Pauze pause = new Pauze();
		pause.firstPauzeMethod();
		pause.secondPauzeMethod();
	}

}
 
Als ik de delay doe met mijn Do While vertraagt hij de system.out.print wel maar niets op de applet zelf.

Zelf een timer maken, zou wel moeten lukken, maar ik mag alleen gebruik maken van events die ik nog maar gezien heb.
 
Ik ga even heel men code posten zodat jullie misschien een beter overzicht hebben van de hele werking van programma

Ik ben aan het proberen om een variatie van "Simon" te maken. De volgende code is totaal nog niet af, maar de bedoeling is om een knop te laten schijnen voor 1 seconde.
Code:
package MastercodeAp;

import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
import javax.swing.JApplet;
import java.util.*;

public class MastercodeAp extends JApplet implements ActionListener {

    private Container content;
    private JPanel panel1, panel2;
    private JLabel label1;
    private JButton knopArray[] = new JButton[9];
    private JButton knopStart;
    private String[] letters = {"1", "2", "3", "4", "5", "6", "7", "8", "9"};
    private int[][] controleArray = new int[30][1];
    private int hoofdteller = 0, controleteller, level = 0, leven, dummy, getal2;

    public MastercodeAp() {
        content = getContentPane();
        content.setLayout(new BorderLayout());

        panel1 = new JPanel();
        panel1.setLayout(new GridLayout(3, 3, 3, 3));
        panel2 = new JPanel();
        panel2.setLayout(new GridLayout(2, 2, 3, 3));

        knopStart = new JButton("Start");
        knopStart.addActionListener(this);
        panel2.add(knopStart);

        label1 = new JLabel("");
        panel2.add(label1);

        content.add(panel1, BorderLayout.NORTH);
        content.add(panel2, BorderLayout.SOUTH);

        int k = 0;
        for (int i = 0; i < 9; i++) {
            knopArray[i] = new JButton();
            ImageIcon figuur = new ImageIcon("images/" + letters[k] + ".gif");
            knopArray[i].setIcon(figuur);
            knopArray[i].addActionListener(this);
            knopArray[i].setBorderPainted(false);
            knopArray[i].setContentAreaFilled(false);
            panel1.add(knopArray[i]);
            k++;
        }
    }

    @Override
    public void init() {
        resize(400, 500);
    }

    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == knopStart) {
            level = 1;
            setNextGetal();
            showKnoppen();

        }

        for (int i = 0; i < 8; i++) {
            if (e.getSource() == knopArray[i]) {
                controleArray[hoofdteller][1] = i;
            }
        }
    }

    public void setNextGetal() {
        Random r = new Random();
        controleArray[hoofdteller][0] = r.nextInt(8) + 1;
    }

    public void showKnoppen() {

        for (int i = 0; i < level; i++) {

            dummy = controleArray[i][0];


            ImageIcon figuur = new ImageIcon(dummy + ".gif");
            knopArray[dummy].setIcon(figuur);

            int teller = 0;

            System.out.print(dummy);
            System.out.print("loldxdx");


            int sleeptime = 5000;
            long stopTime = new Date().getTime()+sleeptime;
		System.out.println("Pauze.secondPauzeMethod() 1");
		while (new Date().getTime()<stopTime) {
			// DO NOTHING
		}

//                        Date date = new Date();
//            long timer1 = date.getTime() + 1000;
//
//            do {
//                date = new Date();
//            } while (date.getTime() < timer1);

                setFiguurBack();
        }
    }

    public void setFiguurBack() {
        for (int i = 0; i < 9; i++) {
            ImageIcon figuur = new ImageIcon("images/" + letters[i] + ".gif");
            knopArray[i].setIcon(figuur);
        }
    }
    //----------------------------------------------
    //  for(int i = 0; i < 8; i++)
    //  {
    //      if(controleArray[i][1] == controleArray[i][0])
    //      {
    //         nik = true;
    //     }
    //     else
    //    {
    //    }
    // }
    //----------------------------------------------
//}
}
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan