03. april 2008 - 12:13Der er
9 kommentarer og 1 løsning
Thread.sleep og sleep igen
Hej
jeg er helt ny til java, jeg er igang med at lave et lille spil, hvor der bliver slået med en terning. Engang imellem skal computeren slå flere gange slag. Men det går alt for stærkt, men det virker ikke ordenligt med Thread.sleep(). Den tegner ikke noget, før alle slag er slået. Hvad gør jeg?
private void redrawDices(int DiceNumberOne, int DiceNumberTwo) { switch (DiceNumberOne) { case 1: DiceOne = new ImageIcon("images/1.gif"); break; case 2: DiceOne = new ImageIcon("images/2.gif"); break; case 3: DiceOne = new ImageIcon("images/3.gif"); break; case 4: DiceOne = new ImageIcon("images/4.gif"); break; case 5: DiceOne = new ImageIcon("images/5.gif"); break; case 6: DiceOne = new ImageIcon("images/6.gif"); break; } switch (DiceNumberTwo) { case 1: DiceTwo = new ImageIcon("images/1.gif"); break; case 2: DiceTwo = new ImageIcon("images/2.gif"); break; case 3: DiceTwo = new ImageIcon("images/3.gif"); break; case 4: DiceTwo = new ImageIcon("images/4.gif"); break; case 5: DiceTwo = new ImageIcon("images/5.gif"); break; case 6: DiceTwo = new ImageIcon("images/6.gif"); break; } lblDiceOne = new JLabel(DiceOne); lblDiceTwo = new JLabel(DiceTwo); MainPanel.add(lblDiceOne, BorderLayout.SOUTH); MainPanel.add(lblDiceTwo, BorderLayout.SOUTH); MainPanel.add(new JLabel(new ImageIcon("images/seperator.gif"))); this.setContentPane(MainPanel); }
kort sagt så siger vi at vi ønsker at få 30 frames pr. sek. Det giver 1000ms (1 sek) / 30 = 34 ms (rough), så hvert loop må tage 34 millisekunder, og hvis det tager mindre, så venter vi (wait) forskellen mellem 34ms og den faktiske tid det tog for et gennemløb (elapsed), så vi KUN kører gennem while 30 gange i sekundet.
Kan du fortælle mig, hvorfor jeg ikke kan få den while løkke til at virke Arne? Havde det til at virke før, jeg flyttede det over i den anden klasse. Den skal bare springe ud af løkken når begge terninger slår 1
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.