From 03424ec4f4c2387e68cab07701f8b4b449e0ad9e Mon Sep 17 00:00:00 2001 From: Ben Kurtovic Date: Tue, 15 Jan 2013 19:20:12 -0500 Subject: [PATCH] Sleep code --- src/Render.java | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/Render.java b/src/Render.java index 46e1fc1..65849e2 100644 --- a/src/Render.java +++ b/src/Render.java @@ -1,5 +1,6 @@ package edu.stuy.goldfish; +import java.util.Date; import java.awt.Canvas; import java.awt.Dimension; import java.awt.Graphics; @@ -12,18 +13,17 @@ import javax.swing.JFrame; public class Render extends Canvas implements Runnable { private static final long serialVersionUID = 1L; + public static String title = "Goldfish"; public static int width; public static int height; public static int scale; - - private static int max_fps = 15; - - public String title = "Goldfish"; + public static int max_fps = 15; private JFrame _frame; private BufferedImage _image; private Grid _grid; private int[] _pixels; + private long _last_tick; public Render(int width, int height, Grid g) { Render.width = width; @@ -32,6 +32,7 @@ public class Render extends Canvas implements Runnable { _grid = g; _image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); _pixels = ((DataBufferInt) _image.getRaster().getDataBuffer()).getData(); + _last_tick = 0; Dimension size = new Dimension(width * scale, height * scale); setPreferredSize(size); setFrame(); @@ -98,7 +99,16 @@ public class Render extends Canvas implements Runnable { } public void sleep() { - + long since = (new Date()).getTime() - _last_tick; + if (since < 1000 / max_fps) { + try { + Thread.sleep(1000 / max_fps - since); + } + catch (InterruptedException e) { + return; + } + } + _last_tick = (new Date()).getTime(); } public void setGrid(Grid g) {