/*****************************************************/ /* Java Rendition Merlin */ /* Joe Harvey */ /* */ /* Version 1.0 Adapted from a Shell Script from Jim */ /* Corder on 9/5/1997. */ /* Version 1.1 Added Restart Button and repaired */ /* some of the objects on 9/10/1997. */ /*****************************************************/ import java.awt.*; import java.util.*; //import java.applet.*; public class Merlin extends Frame { static final int width=470; static final int height=323; private static Merlin window; static int sx=18; static int sy=38; static final int bsize=75; static final int on=250; static final int off=50; static int status[]= new int[9]; static int check=1; public Merlin() { setTitle("Merlin"); setLayout(new GridLayout(15,5)); resize(width,height); setCursor(Frame.DEFAULT_CURSOR); setBackground(new Color(0,0,0)); show(); Merlin.initalize(); repaint(); } static public void initalize() { int TMP=0; int SCREEN=0; float tmpnum; Random rnum = new Random(); int item; for(item=0; item<9; item++) status[item] = off; check=0; tmpnum=rnum.nextFloat(); SCREEN = (int)(tmpnum*10)+1; while(TMP <= SCREEN) { TMP++; tmpnum=rnum.nextFloat(); SCREEN = (int)(tmpnum*10)+1; Merlin.boxClick(SCREEN); } check = 1; } static public void boxClick(int i) { int modify[]= new int[5]; int block=0; switch(i) { case 1: modify[0]=1; modify[1]=2; modify[2]=4; modify[3]=5; break; case 2: modify[0]=1; modify[1]=2; modify[2]=3; break; case 3: modify[0]=2; modify[1]=3; modify[2]=5; modify[3]=6; break; case 4: modify[0]=1; modify[1]=4; modify[2]=7; break; case 5: modify[0]=2; modify[1]=4; modify[2]=5; modify[3]=6; modify[4]=8; break; case 6: modify[0]=3; modify[1]=6; modify[2]=9; break; case 7: modify[0]=4; modify[1]=5; modify[2]=7; modify[3]=8; break; case 8: modify[0]=7; modify[1]=8; modify[2]=9; break; case 9: modify[0]=5; modify[1]=6; modify[2]=8; modify[3]=9; break; } for(block=0; block sx)&&(y < sy+(bsize*3)+40)&&(y > sy+(bsize*3)+15)) { hide(); dispose(); repaint(); System.exit(0); } if((x < sx+225)&&(x > sx+113)&&(y < sy+(bsize*3)+40)&&(y > sy+(bsize*3)+15)) { Merlin.initalize(); repaint(); } if(check != 0) { if((x < sx+(bsize*3))&&(x > sx)&&(y < sy+(bsize*3))&&(y > sy)) { xblock=x-sx; yblock=y-sy; block=(yblock/bsize)*3+(xblock/bsize); for(check=0; check sx)&&(y < sy+(bsize*3))&&(y > sy))&&(check != 0))|| ((x < sx+112)&&(x > sx)&&(y < sy+(bsize*3)+40)&&(y > sy+(bsize*3)+15))|| ((x < sx+225)&&(x > sx+113)&&(y < sy+(bsize*3)+40)&&(y > sy+(bsize*3)+15))) setCursor(Frame.HAND_CURSOR); else setCursor(Frame.DEFAULT_CURSOR); return true; } public void paint(Graphics g) { int a,b; int color=0; for(a=0; a<3; a++) { for(b=0; b<3; b++) { g.setColor(new Color(status[b*3+a],off,off)); g.fillRect(sx+(bsize*a)+1,sy+(bsize*b)+1,bsize-1,bsize-1); } } // Quit Button g.setColor(new Color(125,0,0)); g.drawRect(sx,sy+(bsize*3)+15,112,25); g.drawRect(sx+1,sy+(bsize*3)+16,110,23); g.setColor(new Color(255,0,0)); g.drawString("QUIT",63,sy+(bsize*3)+33); // Restart Button g.setColor(new Color(0,125,0)); g.drawRect(sx+113,sy+(bsize*3)+15,112,25); g.drawRect(sx+114,sy+(bsize*3)+16,110,23); g.setColor(new Color(0,255,0)); g.drawString("Restart",168,sy+(bsize*3)+33); // Title Information g.setColor(new Color(0,255,0)); g.drawString("Jr Merlin Ver 1.1",sx+(bsize*3)+25,sy+15); g.drawLine(sx+(bsize*3)+25,sy+17,sx+(bsize*3)+112,sy+17); g.setColor(new Color(200,200,200)); g.drawString("Explorer Post 369",sx+(bsize*3)+25,sy+30); g.drawString("Written By Joe Harvey",sx+(bsize*3)+25,sy+45); // Instructions g.setColor(new Color(255,255,0)); g.drawString("Instructions:",sx+(bsize*3)+25,sy+80); g.setColor(new Color(200,200,200)); g.drawString("To play Java Rendition Merlin",sx+(bsize*3)+25,sy+95); g.drawString("click the squares on the left.",sx+(bsize*3)+25,sy+110); g.drawString("Each square will light up a group",sx+(bsize*3)+25,sy+125); g.drawString("of squares. To win you must light",sx+(bsize*3)+25,sy+140); g.drawString("up all the outside squares and",sx+(bsize*3)+25,sy+155); g.drawString("turn off the center square.",sx+(bsize*3)+25,sy+170); if(check == 0) { setCursor(Frame.DEFAULT_CURSOR); for(color=on; color>off; color--) { for(a=0; a<3; a++) { for(b=0; b<3; b++) { if((a!=1)||(b!=1)) { g.setColor(new Color(color,off,off)); g.fillRect(sx+(bsize*a)+1,sy+(bsize*b)+1,bsize-1,bsize-1); } } } } for(color=off; color>0; color--) { for(a=0; a<3; a++) { for(b=0; b<3; b++) { g.setColor(new Color(color,color,color)); g.fillRect(sx+(bsize*a)+1,sy+(bsize*b)+1,bsize-1,bsize-1); } } } g.setColor(new Color(255,255,255)); g.drawString("YOU WIN!",sx+(bsize)+10,sy+(bsize*2)-25); } } public static void main(String argv[]) { System.out.println("Loading..."); window = new Merlin(); System.out.println("Running..."); } }