Code: /* Lights on, Lights off * * * Ashley Jones */ import java.applet.*; import java.lang.*; import java.awt.*; import java.net.*; public class AllLights extends Applet { final int ON = 1; final int OFF = -1; final int WIDTH = 200; protected int light[][]; protected int counterOn = 0; protected int counterOff = 0; int end = 0; public void init() { end = 0; light = new int[5][5]; for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { light[i][j] = OFF; } } countLight(); } public void start() { setBackground(Color.Black); init(); } public void paint(Graphics g) { g.setColor(Color.green); g.fill3DRect(210, 165, 60, 20, true); g.setColor(Color.white); g.drawString("Start Over", 214, 180); drawBoard(g); for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { if (light[i][j] != 0) { drawLight(i, j, g); } } } drawCountLight(g); } public void drawBoard(Graphics g) { g.setColor(Color.black); g.drawLine(0,0, 0,WIDTH); g.drawLine(WIDTH,0, WIDTH,WIDTH); g.drawLine(0,0, WIDTH,0); g.drawLine(0,WIDTH, WIDTH,WIDTH); for (int i = 1; i < 5; i++) { g.drawLine(WIDTH*i/5,0, WIDTH*i/5,WIDTH); g.drawLine(0,WIDTH*i/5, WIDTH,WIDTH*i/5); } } public void drawLight(int column, int row, Graphics g) { if (light[column][row] == ON) { g.setColor(Color.yellow); } else if (light[column][row] == OFF) { g.setColor(Color.gray); } g.fillRect(column * WIDTH / 5 + 2, row * WIDTH / 5 + 2, WIDTH / 5 - 3, WIDTH / 5 - 3); } void countLight() { counterOn = 0; counterOff = 0; for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { if(light[i][j] == ON) counterOn++; if(light[i][j] == OFF) counterOff++; } } if (counterOn == 25) { endGame(getGraphics()); } } public void endGame(Graphics g) { update(getGraphics()); for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { light[i][j] = OFF; update(getGraphics()); } } for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { light[i][j] = ON; update(getGraphics()); } } g.setColor(Color.yellow); g.fillRect(65, 98, 80, 10); g.setColor(Color.black); g.drawString("Congratz", 66, 106); g.setColor(Color.red); g.drawString("Congratz", 65, 105); end = 1; } void drawCountLight(Graphics g) { g.setColor(Color.white); g.fill3DRect(WIDTH+15, 50, 30,20, false); g.fill3DRect(WIDTH+15, 110, 30,20, false); g.setColor(Color.gray); g.fill3DRect(WIDTH+5, 85, 20,20, true); g.setColor(Color.yellow); g.fill3DRect(WIDTH+5, 20, 20,20, true); g.setColor(Color.black); g.drawString("LightOn", WIDTH+30, 35); g.drawString("LightOff", WIDTH+30, 100); g.drawString(Integer.toString(counterOn), WIDTH+20, 65); g.drawString(Integer.toString(counterOff), WIDTH+20, 125); } public boolean mouseUp(Event event, int x, int y) { if (end == 1) { init(); update(getGraphics()); } else { if (x > 210 && x < 270 && y > 165 && y < 185) { init(); update(getGraphics()); } int column = (int)(x / (WIDTH / 5)); int row = (int)(y / (WIDTH / 5)); light[column][row] = -light[column][row]; try { light[column+1][row] = -light[column+1][row]; } catch(Exception e) { } try { light[column-1][row] = -light[column-1][row]; } catch(Exception e) { } try { light[column][row+1] = -light[column][row+1]; } catch(Exception e) { } try { light[column][row-1] = -light[column][row-1]; } catch(Exception e) { } countLight(); if (end == 0) { update(getGraphics()); } } return true; } }
Nice question, converting applet to app ! :smile: I think this might work :wink: , not tested though. I've added a main func, see code below : Code: /* Lights on, Lights off * * * Ashley Jones */ // We no longer need to import java.applet.*; import java.lang.*; import java.awt.*; import java.net.*; public class AllLights extends Applet { final int ON = 1; final int OFF = -1; final int WIDTH = 200; protected int light[][]; protected int counterOn = 0; protected int counterOff = 0; int end = 0; // Added this : public static void main(String[] MArg) { Frame fr = new Frame(); fr.addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent e) { System.exit(0); }; }); AllLights AL = new AllLights(); AL.setSize(200,200); // enter size here, i saw width = 200, so entered the same for height ! fr.add(AL); fr.pack(); AL.init(); fr.setSize(200,200 + 20); // 20 for frame title, increase if you wish fr.show(); } // Code below is untouched. public void init() { end = 0; light = new int[5][5]; for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { light[i][j] = OFF; } } countLight(); } public void start() { setBackground(Color.Black); init(); } public void paint(Graphics g) { g.setColor(Color.green); g.fill3DRect(210, 165, 60, 20, true); g.setColor(Color.white); g.drawString("Start Over", 214, 180); drawBoard(g); for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { if (light[i][j] != 0) { drawLight(i, j, g); } } } drawCountLight(g); } public void drawBoard(Graphics g) { g.setColor(Color.black); g.drawLine(0,0, 0,WIDTH); g.drawLine(WIDTH,0, WIDTH,WIDTH); g.drawLine(0,0, WIDTH,0); g.drawLine(0,WIDTH, WIDTH,WIDTH); for (int i = 1; i < 5; i++) { g.drawLine(WIDTH*i/5,0, WIDTH*i/5,WIDTH); g.drawLine(0,WIDTH*i/5, WIDTH,WIDTH*i/5); } } public void drawLight(int column, int row, Graphics g) { if (light[column][row] == ON) { g.setColor(Color.yellow); } else if (light[column][row] == OFF) { g.setColor(Color.gray); } g.fillRect(column * WIDTH / 5 + 2, row * WIDTH / 5 + 2, WIDTH / 5 - 3, WIDTH / 5 - 3); } void countLight() { counterOn = 0; counterOff = 0; for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { if(light[i][j] == ON) counterOn++; if(light[i][j] == OFF) counterOff++; } } if (counterOn == 25) { endGame(getGraphics()); } } public void endGame(Graphics g) { update(getGraphics()); for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { light[i][j] = OFF; update(getGraphics()); } } for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { light[i][j] = ON; update(getGraphics()); } } g.setColor(Color.yellow); g.fillRect(65, 98, 80, 10); g.setColor(Color.black); g.drawString("Congratz", 66, 106); g.setColor(Color.red); g.drawString("Congratz", 65, 105); end = 1; } void drawCountLight(Graphics g) { g.setColor(Color.white); g.fill3DRect(WIDTH+15, 50, 30,20, false); g.fill3DRect(WIDTH+15, 110, 30,20, false); g.setColor(Color.gray); g.fill3DRect(WIDTH+5, 85, 20,20, true); g.setColor(Color.yellow); g.fill3DRect(WIDTH+5, 20, 20,20, true); g.setColor(Color.black); g.drawString("LightOn", WIDTH+30, 35); g.drawString("LightOff", WIDTH+30, 100); g.drawString(Integer.toString(counterOn), WIDTH+20, 65); g.drawString(Integer.toString(counterOff), WIDTH+20, 125); } public boolean mouseUp(Event event, int x, int y) { if (end == 1) { init(); update(getGraphics()); } else { if (x > 210 && x < 270 && y > 165 && y < 185) { init(); update(getGraphics()); } int column = (int)(x / (WIDTH / 5)); int row = (int)(y / (WIDTH / 5)); light[column][row] = -light[column][row]; try { light[column+1][row] = -light[column+1][row]; } catch(Exception e) { } try { light[column-1][row] = -light[column-1][row]; } catch(Exception e) { } try { light[column][row+1] = -light[column][row+1]; } catch(Exception e) { } try { light[column][row-1] = -light[column][row-1]; } catch(Exception e) { } countLight(); if (end == 0) { update(getGraphics()); } } return true; } }