Why am I getting this error message? - java

Exception in thread "main" java.lang.IllegalArgumentException: n must be positive
at java.util.Random.nextInt(Unknown Source)
at net.survival_instincts.src.main.screenClass.<init>(screenClass.java:21)
at net.survival_instincts.src.main.windowClass.<init>(windowClass.java:28)
at net.survival_instincts.src.main.windowClass.main(windowClass.java:104)
CODE:
windowClass:
package net.survival_instincts.src.main;
import java.awt.Canvas;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import javax.swing.JFrame;
import net.survival_instincts.src.graphics.renderClass;
import java.awt.image.*;
public class windowClass extends Canvas implements Runnable {
public static int WIDTH = 854;
public static int HEIGHT = 480;
private Thread thread;
private screenClass screen;
private BufferedImage img;
private boolean running = false;
private renderClass render;
private int[] pixels;
public windowClass() {
screen = new screenClass(WIDTH, HEIGHT);
img = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);
pixels = ((DataBufferInt) img.getRaster().getDataBuffer()).getData();
}
private void start() {
if (running)
return;
running = true;
thread = new Thread(this);
thread.start();
System.out.println("Starting...");
}
#SuppressWarnings("unused")
private void stop() {
if (!running)
return;
running = false;
try {
thread.join();
} catch (Exception e) {
e.printStackTrace();
System.exit(0);
}
}
public void run() {
while (running) {
tick();
render();
}
}
private void tick() {
}
private void render() {
BufferStrategy bs = this.getBufferStrategy();
if (bs == null) {
createBufferStrategy(3);
return;
}
screen.render();
for (int i = 0; i < WIDTH * HEIGHT; i++) {
pixels[i] = screen.pixels[i];
}
Graphics g = bs.getDrawGraphics();
g.drawImage(img, 0 , 0, WIDTH , HEIGHT, null);
g.dispose();
bs.show();
}
// Generates The Main Window
public static void main(String[] args) {
windowClass game = new windowClass();
JFrame frame = new JFrame();
frame.pack();
frame.setTitle("Survival Instincts v.0.01");
frame.setSize(WIDTH, HEIGHT);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(game);
frame.setLocationRelativeTo(null);
frame.setResizable(true);
frame.setVisible(true);
System.out.println("Initializing Startup...");
game.start();
}
public renderClass getRender() {
return render;
}
public void setRender(renderClass render) {
this.render = render;
}
}
renderClass:
package net.survival_instincts.src.graphics;
public class renderClass {
public static int width;
public static int height;
public final int[] pixels;
public renderClass(int width, int height) {
renderClass.width = width;
renderClass.height = height;
pixels = new int[width * height];
}
public void draw(renderClass render, int xOffset, int yOffset) {
for (int y = 0; y < renderClass.height; y++) {
int yPix = y + yOffset;
for (int x = 0; x < renderClass.width; x++) {
int xPix = x + xOffset;
pixels[xPix + yPix * width] = render.pixels[x + y * renderClass.width];
}
}
}
}
screenClass:
package net.survival_instincts.src.main;
import java.util.Random;
import net.survival_instincts.src.graphics.renderClass;
public class screenClass extends renderClass {
public renderClass test;
public screenClass(int width, int height){
super(width, height);
Random random = new Random();
test = new renderClass(256, 256);
for (int i = 0; i <65536; i++){
test.pixels[i] = random.nextInt(i);
}
}
public void render(){
draw(test, width, height);
}
}

Your are getting this error because Random.nextInt(0) will throw an exception. The value passed to nextInt() must be positive.
To correct this, you'll need to start your loop at i = 1.

Random.nextInt() needs a number that is positive, and in this for loop you are calling it with 0:
for (int i = 0; i <65536; i++){
test.pixels[i] = random.nextInt(i); // it will call random.nextInt(0)
}

Related

Java 3D Engine Pixel Drawing Problems

my 3 programs seem to work alone but when I try to run them together It seems to give me an out of bounds error but I cant tell where exactly if anyone can tell me where exactly it is and how to fix the error that would be great, I wanted to use a debugger but im having some problems getting it to work.
Here is my Code for the 3 Classes :
Render.java
package com.mime.Game.graphics;
public class Render {
public final int width;
public final int height;
public final int[] pixels;
public Render(int width, int height) {
this.width = width;
this.height = height;
pixels = new int[width * height];
}
public void draw(Render render, int xOffset, int yOffset) {
for(int x = 0; x < this.height; x++) {
int yPix = x + yOffset;
for(int y = 0; y < this.width; y++) {
int xPix = y + xOffset;
pixels[xPix + yPix * width] = render.pixels[x + y *
render.width];
}
}
}
}
Display.java
package com.mime.Game;
import java.awt.Canvas;
import java.awt.Graphics;
import java.awt.image.BufferStrategy;
import java.awt.image.BufferedImage;
import javax.swing.JFrame;
import com.mime.Game.graphics.Render;
import com.mime.Game.graphics.Screen;
import java.awt.image.DataBufferInt;
public class Display extends Canvas implements Runnable{
public static final long serialVersionUID = 1L;
public static final int WIDTH = 800;
public static final int HEIGHT = 600;
private Thread thread;
private Screen screen;
private BufferedImage img;
private boolean running = false;
private Render render;
private int[] pixels;
public Display() {
screen = new Screen(WIDTH, HEIGHT);
img = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);
pixels = ((DataBufferInt)img.getRaster().getDataBuffer()).getData();
}
private void start() {
if(running)
return;
running = true;
thread = new Thread(this);
thread.start();
System.out.println("Working");
}
public void stop() {
if(!running)
return;
running = false;
try{
thread.join();
}catch(Exception e) {
e.printStackTrace();
System.exit(0);
}
}
public void run() {
while(running) {
tick();
render();
}
}
private void tick() {
}
private void render() {
BufferStrategy bs = this.getBufferStrategy();
if(bs == null) {
createBufferStrategy(3);
return;
}
screen.render();
for(int i = 0; i < WIDTH * HEIGHT; i++) {
pixels[i] = screen.pixels[i];
}
Graphics g = bs.getDrawGraphics();
g.drawImage(img, 0, 0, WIDTH, HEIGHT, null);
g.dispose();
bs.show();
}
public static void main(String[] args) {
Display game = new Display();
JFrame frame = new JFrame();
frame.setResizable(false);
frame.setSize(WIDTH, HEIGHT);
frame.add(game);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setTitle("Chronicles of Walshy Alpha 0.01");
game.start();
}
}
screen.java :
package com.mime.Game.graphics;
import java.util.Random;
public class Screen extends Render{
private Render test;
public Screen(int width, int height) {
super(width, height);
Random random = new Random();
test = new Render(256, 256);
for(int i = 0; i < 256*256; i++) {
test.pixels[i] = random.nextInt();
}
}
public void render() {
draw(test, 0, 0);
}
}
In your Render.draw method you copy pixels from another Render object and you use this.width and this.height to access those pixels. This will fail when the other Render object's pixel size is smaller, which is the case in your code. You get an ArrayOutOfBoundsException when reading from render.pixels[x + y * render.width] because you're trying to read pixels from a 256*256 array as if it was a 800*600 array.
Additionally if you ever call draw with offset values, you will get another ArrayOutOfBoundsException, because you're simply adding the offsets to your x and y values without checking if the resulting index is too big when writing to pixels[xPix + yPix * width].
To fix this, you have to skip any value that goes beyond the width or height of either pixels array:
if (xPix > this.width || yPix > this.height || x > render.width || y > render.height)
{
continue;
}

How do I solve this array out of bounds exception? [duplicate]

This question already has answers here:
What causes a java.lang.ArrayIndexOutOfBoundsException and how do I prevent it?
(26 answers)
Closed 6 years ago.
Hello fellow hydrogen based life form. I learning how to make 3-Dimensional gaems from a top secret website (www.youtube.com) and I was learning from a very nice Youtuber. My project looks like this:
There are 3 classes: Main, Screen and Render
I get this exception :( :
Exception in thread "Thread-2" java.lang.ArrayIndexOutOfBoundsException: 65600
at Render.Draw(Render.java:20)
at Screen.render(Screen.java:19)
at Main.render(Main.java:74)
at Main.run(Main.java:59)
at java.lang.Thread.run(Unknown Source)
I shall upload my code here too below this. Please help me become good at this.
Main class:
import java.awt.Canvas;
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 Main extends Canvas implements Runnable {
private static final long serialVersionUID = 1L;
public static final int WIDTH = 800;
public static final int HEIGHT = 600;
public static final String TITLE = "Nexus Overload";
private Thread t;
private boolean Running = false;
#SuppressWarnings("unused")
private Render ren;
private Screen s;
private BufferedImage img;
private BufferStrategy bs;
private int[] pixels;
public Main() {
s = new Screen(WIDTH, HEIGHT);
img = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);
pixels = ((DataBufferInt) img.getRaster().getDataBuffer()).getData();
}
private void start() {
if (Running)
return;
Running = true;
t = new Thread(this);
t.start();
}
#SuppressWarnings("unused")
private void stop() {
if (!Running)
return;
Running = false;
try {
t.join();
} catch (Exception e) {
e.printStackTrace();
System.exit(0);
}
}
public void run() {
while (Running) {
tick();
render();
}
}
private void tick() {
}
private void render() {
bs = this.getBufferStrategy();
if (bs == null) {
createBufferStrategy(3);
return;
}
s.render();
for (int i = 0; i < WIDTH * HEIGHT; i++) {
pixels[i] = s.pixels[i];
}
Graphics g = bs.getDrawGraphics();
g.drawImage(img, WIDTH, HEIGHT, null);
g.dispose();
bs.show();
}
public static void main(String[] args) {
Main m = new Main();
JFrame frame = new JFrame();
frame.getContentPane().add(m);
frame.setResizable(false);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setBounds(350, 100, WIDTH, HEIGHT);
frame.setTitle(TITLE);
frame.setVisible(true);
m.start();
}
}
Render class:
public class Render {
public final int width;
public final int height;
public final int[] pixels;
public Render(int width, int height) {
this.width = width;
this.height = height;
this.pixels = new int[width * height];
}
public void Draw (Render ren, int xOffset, int yOffset) {
for (int y = 0; y < ren.height; y++) {
int yPix = y + yOffset;
for (int x = 0; x < ren.width; x++) {
int xPix = x + xOffset;
pixels[xPix + yPix * width] = ren.pixels[xPix + yPix * width];
}
}
}
}
Screen class:
import java.util.Random;
public class Screen extends Render{
private Render ren;
public Screen(int width, int height) {
super(width, height);
Random r = new Random();
ren = new Render(256, 256);
for (int i = 0; i < 256 * 256; i++) {
ren.pixels[i] = r.nextInt();
}
}
public void render() {
Draw(ren, 0, 0);
}
}
For those who want image with eclipse debugging, here:
With variables tab selected:
Your exception is pointing us to the Draw method in the Render class (NB: Java conventions state that method names should be lower case so this method should actually be called draw(Render ren, int xOffset, int yOffset). I would first try and set the int y in the outer for loop to 1 to see if that helps, you may also been to do the same for int x in the inner for loop...

Minecraft clone on java eclipse error

I watched a Youtube video of someone making a MineCraft clone, which compiled and ran without error. But when I copied it completely, I got an error.
The error is in the Render class: int pixels = new int(width * height);
Render:
package com.mads.minecraft.graphics;
public class Render {
public final int width;
public final int height;
public int[] pixels;
public Render(int width, int height){
this.width = width;
this.height = height;
int pixels = new int(width * height);
}
public void draw(Render render, int xOffset, int yOffset){
for (int y = 0; y < render.height; y++){
int yPix = y + yOffset;
if(yPix < 0 || yPix >= height) continue;
for (int x = 0; y < render.width; x++){
int xPix = x + xOffset;
if(xPix < 0 || xPix >= width) continue;
pixels[xPix + yPix + width] = render.pixels[x + y * render.width];
}
}
}
}
Display:
package com.mads.minecraft;
import java.awt.Canvas;
import java.awt.Graphics;
import java.awt.image.BufferStrategy;
import java.awt.image.BufferedImage;
import java.awt.image.DataBufferInt;
import javax.swing.JFrame;
import com.mads.minecraft.graphics.Screen;
public class Display extends Canvas implements Runnable{
static final long serialVersionUID = 1L;
public static final int WIDTH = 800;
public static final int HEIGHT = 600;
public static final String TITLE = "Minecraft Alpha";
private Thread thread;
private boolean running = false;
private BufferedImage img;
private Screen screen;
private int[] pixels;
public Display(){
screen = new Screen(WIDTH, HEIGHT);
img = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);
pixels = ((DataBufferInt) img.getRaster().getDataBuffer()).getData();
}
public void start(){
if(running) return;
running = true;
thread = new Thread(this);
thread.start();
}
public void stop(){
if(!running) return;
running = false;
try {
thread.join();
} catch (Exception e){
e.printStackTrace();
System.exit(0);
}
}
public void run(){
while(running){
tick();
render();
}
}
public void tick(){}
public void render(){
BufferStrategy bs = getBufferStrategy();
if(bs == null){
createBufferStrategy(3);
return;
}
screen.render();
for (int i = 0; i < WIDTH * HEIGHT; i++){
pixels[i] = screen.pixels[i];
}
Graphics g = bs.getDrawGraphics();
g.drawImage(img, WIDTH, HEIGHT, null);
g.dispose();
bs.show();
}
public static void main(String []args){
Display game = new Display();
JFrame frame = new JFrame();
frame.add(game);
frame.pack();
frame.setTitle(TITLE);
frame.setSize(WIDTH, HEIGHT);
frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setResizable(false);
frame.setVisible(true);
game.start();
}
}
Screen:
package com.mads.minecraft.graphics;
import java.util.Random;
public class Screen extends Render{
private Render test;
public Screen(int width, int height) {
super(width, height);
Random random = new Random();
test = new Render(256, 256);
for(int i = 0; i < 256 * 256; i++) {
test.pixels[i] = random.nextInt();
}
}
public void render(){
draw(test, 0, 0);
}
}
Following is an invalid statement which you need to replace:
int pixels = new int(width * height); (int is a primitive data type not reference type, so you can not create an object)
by
pixels = new int[width * height]; (You can create an array of int. You have already declared the variable pixels at the instance level as int[], so no need to declare again)
Hope, this helps.
Apparently you're trying to initialize an array in Render. All you have to do is to replace int pixels = new int(width * height) in Renders constructor with this:
pixels = new int[width * height];

I am creating a 2d game, i am trying to import some fonts but i keep getting the error

package aaron.game;
import java.awt.BorderLayout;
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 java.awt.*;
import javax.swing.JFrame;
import aaron.game.gfx.Colours;
import aaron.game.gfx.Font;
import aaron.game.gfx.Screen;
import aaron.game.gfx.SpriteSheet;
public class Game extends Canvas implements Runnable{
private static final long serialVersionUID = 1L;
public static final int WIDTH = 160;
public static final int HEIGHT = WIDTH / 12 * 9;
public static final int SCALE = 3;
public static final String NAME = "Game";
private JFrame frame;
public boolean running = false;
public int tickCount = 0;
private BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);
private int[] pixels = ((DataBufferInt) image.getRaster().getDataBuffer()).getData();
private int[] colours = new int[6*6*6];
private Screen screen;
public InputHandler input;
public Game(){
setMinimumSize(new Dimension(WIDTH*SCALE, HEIGHT*SCALE));
setMaximumSize(new Dimension(WIDTH*SCALE, HEIGHT*SCALE));
setPreferredSize(new Dimension(WIDTH*SCALE, HEIGHT*SCALE));
frame = new JFrame(NAME);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
frame.add(this, BorderLayout.CENTER);
frame.pack();
frame.setResizable(false);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public void init(){
int index = 0;
for(int r = 0;r<6;r++){
for(int g = 0;g<6;g++){
for(int b = 0;b<6;b++){
int rr= (r*255/5);
int gg= (g*255/5);
int bb= (b*255/5);
colours[index++] = rr<<16| gg<<8 | bb;
}
}
}
screen = new Screen(WIDTH, HEIGHT, new SpriteSheet("/sprite_sheet.png"));
input = new InputHandler(this);
}
public synchronized void start() {
running = true;
new Thread(this).start();
}
public synchronized void stop() {
running = false;
}
public void run() {
long lastTime = System.nanoTime();
double nsPerTick = 1000000000D/60D;
int frames = 0;
int ticks = 0;
long lastTimer = System.currentTimeMillis();
double delta = 0;
init();
while (running){
long now = System.nanoTime();
delta += (now - lastTime) / nsPerTick;
lastTime = now;
boolean shouldRender = true;
while(delta >= 1){
ticks++;
tick();
delta -= 1;
shouldRender = true;}
try {
Thread.sleep(2);
} catch (InterruptedException e) {
e.printStackTrace();
}
if (shouldRender){
frames++;
render();
}
if(System.currentTimeMillis() - lastTimer >= 1000){
lastTimer += 1000;
System.out.println(ticks + " ticks, " + frames + " frames");
frames = 0;
ticks = 0;
}
}
}
public void tick(){
tickCount++;
if(input.up.isPressed()){screen.yOffset--;}
if(input.down.isPressed()){screen.yOffset++;}
if(input.left.isPressed()){screen.xOffset--;}
if(input.right.isPressed()){screen.xOffset++;}
for (int i = 0; i < pixels.length; i++){
pixels[i] = i + tickCount;
}
}
public void render(){
BufferStrategy bs = getBufferStrategy();
if (bs == null){
createBufferStrategy(3);
return;
}
for(int y=0;y<32;y++){
for(int x=0;x<32;x++){
boolean flipX = x%2==1;
boolean flipY = y%2==1;
screen.render(x<<3, y<<3, 0, Colours.get(555,505,055,550), flipX, flipY);
}
}
// Font.render("Hello Wolrd! 0157", screen, 0, 0, Colours.get(000, -1, -1, 555));
for(int y=0;y<screen.height;y++){
for(int x=0;x<screen.width;x++){
int colourCode=screen.pixels[x+y*screen.width];
if(colourCode<255)pixels[x+y*WIDTH]=colours[colourCode];
}
}
Graphics g = bs.getDrawGraphics();
//g.setColor(Color.BLACK);
//g.fillRect(0, 0, getWidth(), getHeight());
g.drawImage(image, 0, 0, getWidth(), getHeight(), null);
g.dispose();
bs.show();
}
public static void main(String[] args){
new Game().start();
}
}
^This is my main class [ // Font.render("Hello Wolrd! 0157", screen, 0, 0, Colours.get(000, -1, -1, 555));] < this is where i am getting the error...
package aaron.game.gfx;
public class Font {
private static String chars = "" + "ABCDEFGHIJKLMNOPQRSTUVWXYZ " + "0123456789.,:;'\"!?$%()-=+/ ";
public static void render(String msg, Screen screen, int x, int y, int colour, int scale) {
msg = msg.toUpperCase();
for (int i = 0; i < msg.length(); i++) {
int charIndex = chars.indexOf(msg.charAt(i));
if (charIndex >= 0) screen.render(x + (i * 8), y, charIndex + 30 * 32, colour, false, false);
}
}
}
This is the class for reading my fonts
package aaron.game.gfx;
public class Screen {
public static final int MAP_WIDTH = 64;
public static final int MAP_WIDTH_MASK = MAP_WIDTH - 1;
public int[]pixels;
public int xOffset = 0;
public int yOffset = 0;
public int width;
public int height;
public SpriteSheet sheet;
public Screen(int width, int height, SpriteSheet sheet){
this.width = width;
this.height = height;
this.sheet = sheet;
pixels=new int[width * height];
}
public void render(int xPos, int yPos, int tile, int colour){
render(xPos, yPos, tile, colour, false, false);
}
public void render(int xPos, int yPos, int tile, int colour, boolean mirrorX, boolean mirrorY){
xPos -= xOffset;
yPos -= yOffset;
int xTile = tile %32;
int yTile = tile /32;
int tileOffset=(xTile<<3)+(yTile<<3)*sheet.width;
for(int y=0;y<8;y++){
if(y+yPos<0 || y+yPos>=height)continue;
int ySheet = y;
if(mirrorY) ySheet = 7 - y;
for(int x=0;x<8;x++){
if(x+xPos<0 || x+xPos>=width)continue;
int xSheet = x;
if(mirrorX) xSheet = 7 - x;
int col=(colour>>(sheet.pixels[xSheet+ySheet*sheet.width+tileOffset]*8))&255;
if(col<255) pixels[(x+xPos)+(y+yPos)*width]=col;
}
}
}
}
This is my display class, anyway this error is killing me and i hae no idea how to fix it whatsoever, I have looked all over the place bot a single place, the error i am getting is
The method render(String, Screen, int, int, int, int) in the type Font is not applicable for the arguments (String, Screen, int, int, int)
Try cleaning and rebuilding the project. It seems like an older version of the program is being run...

NullPointerException - I don't understand

what is wrong with this code?
I keep getting the error
Exception in thread "Thread-2" java.lang.NullPointerException
at GUI.render(GUI.java:68)
at GUI.run(GUI.java:51)
please help
import graphics.*;
import javax.swing.*;
import java.awt.*;
import java.awt.Canvas;
import java.awt.image.BufferStrategy;
import java.awt.image.BufferedImage;
import java.awt.image.DataBufferInt;
public class GUI extends Canvas implements Runnable {
private static final long serialVersionUID = 1L;
final static String LABEL_TEXT = "Game";
public static final int Width = 1020;
public static final int Height = 680;
private Thread thread;
private Screen screen;
private Render render;
private BufferedImage img;
private boolean running = false;
private int[] pixels;
public void display() {
screen = new Screen(Height, Width);
vimg = new BufferedImage(Width, Height, BufferedImage.TYPE_INT_RGB);
pixels = ((DataBufferInt)img.getRaster().getDataBuffer()).getData();
}
private void start() {
if(running)
return;
running = true;
thread = new Thread(this);
thread.start();
}
private void stop() {
if(!running)
return;
running = false;
try {
thread.join();
} catch (Exception e) {
e.printStackTrace();
System.exit(0);
}
}
public void run() {
while (running){
tick();
render();
}
}
public void tick() {
}
private void render() {
BufferStrategy bs = this.getBufferStrategy();;
if(bs == null) {
createBufferStrategy(3);
return;
}
screen.render();
for (int i = 0; i <Width*Height; i++){
pixels[i] = screen.pixels[i];
}
Graphics g = bs.getDrawGraphics();
g.drawImage(img, 0, 0, Width, Height, null);
g.dispose();
bs.show();
}
/**
* Create and show the GUI.
*/
public static void main(String[] args) {
/*Create Canvas*/
GUI game = new GUI();
/*Create and set up the frame*/
JFrame frame = new JFrame("GUI");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
/*Add content pane to frame*/
frame.add(game);
/*Size and then display the frame.*/
frame.setSize(Width, Height);
frame.setVisible(true);
frame.setLocationRelativeTo(null);
game.start();
}
}
package graphics;
public class Render {
public final int width;
public final int height;
public int[] pixels;
public Render(int height, int width) {
this.width = width;
this.height = height;
pixels = new int[width*height];
}
public void draw(Render render, int xOffset, int yOffset) {
for (int y =0; y<height; y++) {
int yPix = y + yOffset;
for (int x =0; x<width; x++) {
int xPix = x + xOffset;
pixels[xPix+yPix*width] = pixels[x+y*width];
}
}
}
}
package graphics;
import java.util.Random;
import graphics.Render;
public class Screen extends Render{
private Render test;
public Screen(int width, int height) {
super(width, height);
Random rand = new Random();
test = new Render(256, 256);
for (int i =0; i< 256*256; i++){
test.pixels[i] = rand.nextInt();
}
}
public void render() {
draw(test, 0, 0);
}
}
You haven't called display() to initialize your variables before you use them.

Categories