Browse Source

Merge branch 'master' of github.com:earwig/goldfish

master
Josh Hofing 11 years ago
parent
commit
df8bd3a1ba
5 changed files with 151 additions and 164 deletions
  1. +10
    -2
      src/Grid.java
  2. +17
    -4
      src/Patch.java
  3. +119
    -37
      src/Render.java
  4. +0
    -120
      src/Renderer.java
  5. +5
    -1
      src/Screen.java

+ 10
- 2
src/Grid.java View File

@@ -18,11 +18,19 @@ public class Grid {
}
}

public Patch getPatch (int x, int y) {
public int getWidth() {
return _grid.length;
}

public int getHeight() {
return _grid[0].length;
}

public Patch getPatch(int x, int y) {
return _grid[x][y];
}

public void setPatch (int x, int y, Patch p) {
public void setPatch(int x, int y, Patch p) {
_grid[x][y] = p;
}



+ 17
- 4
src/Patch.java View File

@@ -1,18 +1,31 @@
package edu.stuy.goldfish;

public class Patch {
private int _pxcor, _pycor;
private int _pxcor, _pycor, _state;
private String _plabel;
private Grid _myGrid;

public Patch(Grid grid, int xcor, int ycor) {
public Patch(Grid grid, int xcor, int ycor, int state) {
_myGrid = grid;
_pxcor = xcor;
_pycor = ycor;
_state = state;
}

public Patch () {
this(new Grid(), 0, 0);
public Patch() {
this(new Grid(), 0, 0, 0);
}

public Grid getGrid() {
return _grid;
}

public int getX() {
return _pxcor;
}

public int getY() {
return _pycor;
}

public String toString() {


+ 119
- 37
src/Render.java View File

@@ -1,37 +1,119 @@
package edu.stuy.goldfish;


import java.awt.Color;

public class Render {
public Render (int width, int height) {
}

public Render () {
this(100,100);
}



/**
* Render a color to a position
*
* This should draw to a buffer, which should be
* rendered with render()
*
* @param x The x coordinate
* @param y The y coordinate
* @param c The color to draw
*/
public void draw (int x, int y, Color c) {

}

/**
* Renders the stored buffer to the screen.
*/
public void render () {
}

}
import java.awt.Canvas;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.image.BufferStrategy;
import java.awt.image.BufferedImage;
import java.awt.image.DataBufferInt;
import javax.swing.JFrame;
public class Renderer extends Canvas implements Runnable {
private static final long serialVersionUID = 1L;
public static int width = 320;
public static int height = 240;
public static int scale = 2;
public String title = "Title";
private Thread thread;
private JFrame frame;
private boolean running = false;
private Screen screen;
private BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
private int[] pixels = ((DataBufferInt) image.getRaster().getDataBuffer()).getData();
public Renderer(int width, int height) {
System.out.println(width);
}
public Renderer() {
Dimension size = new Dimension(width*scale, height*scale);
setPreferredSize(size);
screen = new Screen(width, height);
frame = new JFrame();
}
public synchronized void start() {
running = true;
thread = new Thread(this, "Display");
thread.start();
}
public synchronized void stop() {
running = false;
try {
thread.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public void run() {
long lastTime = System.nanoTime();
long timer = System.currentTimeMillis();
double delta = 0;
int frames = 0;
int updates = 0;
long now;
while (running) {
now = System.nanoTime();
delta += (now - lastTime) * 6.0 / 100000000.0;
lastTime = now;
while (delta >= 1) {
update();
updates++;
delta--;
render();
frames++;
}
if (System.currentTimeMillis() - timer > 1000) {
timer += 1000;
frame.setTitle(title + " | updates: " + updates + " | frames: "+ frames);
frames = 0;
updates = 0;
}
}
stop();
}
public void update() {
}
public void render() {
BufferStrategy bs = getBufferStrategy();
if (bs == null) {
createBufferStrategy(3);
return;
}
screen.clear();
screen.render();
for (int i = 0; i < pixels.length; i++) {
pixels[i] = screen.pixels[i];
}
Graphics g = bs.getDrawGraphics();
g.drawImage(image, 0, 0, getWidth(), getHeight(), null);
g.dispose();
bs.show();
}
public static void main(String[] args) {
Renderer render = new Renderer();
render.frame.setResizable(false);
render.frame.setTitle(render.title);
render.frame.add(render);
render.frame.pack();
render.frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
render.frame.setLocationRelativeTo(null);
render.frame.setVisible(true);
render.start();
}
}

+ 0
- 120
src/Renderer.java View File

@@ -1,120 +0,0 @@
import java.awt.Canvas;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.image.BufferStrategy;
import java.awt.image.BufferedImage;
import java.awt.image.DataBufferInt;
import javax.swing.JFrame;
public class Renderer extends Canvas implements Runnable {
private static final long serialVersionUID = 1L;
public static int width = 320;
public static int height = 240;
public static int scale = 2;
public String title = "Title";
private Thread thread;
private JFrame frame;
private boolean running = false;
private Screen screen;
private BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
private int[] pixels = ((DataBufferInt) image.getRaster().getDataBuffer()).getData();
public Renderer(int width, int height) {
System.out.println(width);
}
public Renderer() {
Dimension size = new Dimension(width*scale, height*scale);
setPreferredSize(size);
screen = new Screen(width, height);
frame = new JFrame();
}
public synchronized void start() {
running = true;
thread = new Thread(this, "Display");
thread.start();
}
public synchronized void stop() {
running = false;
try {
thread.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public void run() {
long lastTime = System.nanoTime();
long timer = System.currentTimeMillis();
double delta = 0;
int frames = 0;
int updates = 0;
long now;
while (running) {
now = System.nanoTime();
delta += (now - lastTime) * 6.0 / 100000000.0;
lastTime = now;
while (delta >= 1) {
update();
updates++;
delta--;
render();
frames++;
}
if (System.currentTimeMillis() - timer > 1000) {
timer += 1000;
frame.setTitle(title + " | updates: " + updates + " | frames: "+ frames);
frames = 0;
updates = 0;
}
}
stop();
}
public void update() {
}
public void render() {
BufferStrategy bs = getBufferStrategy();
if (bs == null) {
createBufferStrategy(3);
return;
}
screen.clear();
screen.render();
for (int i = 0; i < pixels.length; i++) {
pixels[i] = screen.pixels[i];
}
Graphics g = bs.getDrawGraphics();
g.drawImage(image, 0, 0, getWidth(), getHeight(), null);
g.dispose();
bs.show();
}
public static void main(String[] args) {
Renderer render = new Renderer();
render.frame.setResizable(false);
render.frame.setTitle(render.title);
render.frame.add(render);
render.frame.pack();
render.frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
render.frame.setLocationRelativeTo(null);
render.frame.setVisible(true);
render.start();
render.screen.draw(100,100,0xFFFFFF);
}
}

+ 5
- 1
src/Screen.java View File

@@ -1,3 +1,4 @@
import java.util.Random;
public class Screen {
@@ -5,6 +6,8 @@ public class Screen {
public int[] pixels;
private int[] _grid;
Random random = new Random();
public Screen(int width, int height) {
this.width = width;
this.height = height;
@@ -22,7 +25,8 @@ public class Screen {
public void render() {
for (int x = 0; x < width; x++) {
for (int y = 0; y < height; y++) {
pixels[x + y * width] = _grid[x + y * width];
pixels[x+y*width] = random.nextInt();
//pixels[x + y * width] = _grid[x + y * width];
}
}
}


Loading…
Cancel
Save