/* Nicola 1st Java Program */ /* Hi I am Nik Saturday 16 November 1996 Nicola Zordan See contact information on: http://www.mclink.it/personal/MC2074/Nik/contact.htm Nicola.Zordan@bigfoot.com Nicola.Zordan@mclink.it 100333.1132@compuserve.com http://www.bigfoot.com/~Nicola.Zordan http://www.mclink.it/personal/MC2074 http://www.ourworld.compuserve.com/homepages/Nicola_Zordan Nicola A. G. Zordan via Tegnan 11, I-36078, Valdagno, VI, Italy Tel: +39 445 402484 */ import java.awt.*; public class NikSign extends java.applet.Applet implements Runnable { Thread signature; String label; Font font; int speed, mouseX, mouseY; boolean showLabel, help; Polygon name[]; Image sign; public void init() { font = new java.awt.Font("TimesRoman", Font.PLAIN, 24); String parameter = getParameter("speed"); speed = (parameter == null) ? 400 : (1000 / Integer.valueOf(parameter).intValue()); parameter = getParameter("label"); label = (parameter == null) ? "Nicola.Zordan@mclink.it" : parameter; parameter = getParameter("seconds"); speed = (parameter == null) ? speed : (1000 * Integer.valueOf(parameter).intValue()); parameter = getParameter("sign"); parameter = (parameter == null) ? "nz.jpg" : parameter; sign = getImage(getDocumentBase(), parameter); /* "nz.jpg" */ mouseX=size().width/2; mouseY=size().height/2; showLabel=false; help=false; play(getDocumentBase(), "train.au"); }; public boolean handleEvent(Event e) { switch (e.id) { case Event.MOUSE_DOWN: mouseX=e.x; mouseY=e.y; showLabel=true; // showLabel= !showLabel; repaint(); return true; case Event.MOUSE_UP: showLabel=false; repaint(); return true; case Event.MOUSE_DRAG: mouseX=e.x; mouseY=e.y; repaint(); return true; case Event.WINDOW_DESTROY: System.exit(0); return true; // case Event.F1: // help= ! help; // repaint(); // return true; case Event.KEY_PRESS: // if (e.key==Event.F1) help= ! help; help= ! help; repaint(); return true; // case Event.MOUSE_MOVE: // case Event.MOUSE_ENTER: // case Event.MOUSE_EXIT: default: return false; }; }; public void paint(Graphics g) { Dimension d = size(); int space; g.setColor(Color.black); g.setFont(font); FontMetrics fm = g.getFontMetrics(); space = fm.stringWidth(" "); SetNamePolygons(); if (Math.random() > 0.6) RandomlyChangeName(); if (showLabel | (Math.random() > 0.92)) showSign(g); FitName(d.width, d.height, 0, 0); DrawNameRandomlyColoured(g); // try {signature.sleep(1000);} // catch (InterruptedException e){}; //if (showLabel) // showSign(g); if (help) showHelp(g); }; public void showSign(Graphics g) { int counter; g.drawImage(sign, mouseX, mouseY, this); g.drawString(label, mouseX, mouseY); if (showLabel) play(getDocumentBase(), "computer.au"); }; public void showHelp(Graphics g) { int counter; g.drawString("HELP",50,50); }; public void FitName(int xSize, int ySize, int xOffset, int yOffset) { int counter; for (counter = 0;counter < 7;counter++) { FitPolygon(name[counter], xSize, ySize, xOffset, yOffset); }; }; public void FitPolygon(Polygon p, int xSize, int ySize, int xOffset, int yOffset) // { int xModel = 26, { int xModel = 33, yModel = 11; ScalePolygon (p, xSize / xModel, ySize / yModel); TranslatePolygon (p, xOffset, yOffset); }; public void ScalePolygon(Polygon p, int xScale, int yScale) { int counter; for (counter = 0;counter < p.npoints;counter++) { p.xpoints[counter] = p.xpoints[counter] * xScale; p.ypoints[counter] = p.ypoints[counter] * yScale; }; }; public void TranslatePolygon(Polygon p, int xOffset, int yOffset) {int counter; for (counter = 0;counter < p.npoints;counter++) { p.xpoints[counter] = p.xpoints[counter] + xOffset; p.ypoints[counter] = p.ypoints[counter] + yOffset; }; }; public void SetNamePolygons() { Polygon N,i,c,o,l,a, iDot, Start; N = new java.awt.Polygon(); N.addPoint(2, 9); N.addPoint(2, 2); N.addPoint(8, 7); N.addPoint(8, 2); N.addPoint(9, 2); N.addPoint(9, 9); N.addPoint(3, 4); N.addPoint(3, 9); N.addPoint(2, 9); // N = new java.awt.Polygon(); // N.addPoint(2, 6); // N.addPoint(2, 2); // N.addPoint(6, 6); // N.addPoint(6, 2); i = new java.awt.Polygon(); i.addPoint(10, 9); i.addPoint(10, 5); i.addPoint(11, 5); i.addPoint(11, 9); i.addPoint(10, 9); iDot = new java.awt.Polygon(); iDot.addPoint(10, 4); iDot.addPoint(10, 3); iDot.addPoint(11, 3); iDot.addPoint(11, 4); iDot.addPoint(10, 4); // i = new java.awt.Polygon(); // i.addPoint(8, 4); // i.addPoint(8, 6); // iDot = new java.awt.Polygon(); // iDot.addPoint(8, 2); // iDot.addPoint(8, 3); c = new java.awt.Polygon(); c.addPoint(12, 9); c.addPoint(12, 5); c.addPoint(16, 5); c.addPoint(16, 6); c.addPoint(13, 6); c.addPoint(13, 8); c.addPoint(16, 8); c.addPoint(16, 9); c.addPoint(12, 9); // c = new java.awt.Polygon(); // c.addPoint(12, 4); // c.addPoint(10, 4); // c.addPoint(10, 6); // c.addPoint(12, 6); o = new java.awt.Polygon(); o.addPoint(19, 9); o.addPoint(17, 7); o.addPoint(19, 5); o.addPoint(21, 7); o.addPoint(19, 9); o.addPoint(19, 8); o.addPoint(20, 7); o.addPoint(19, 6); o.addPoint(18, 7); o.addPoint(19, 8); o.addPoint(19, 9); // o = new java.awt.Polygon(); // o.addPoint(15, 4); // o.addPoint(14, 5); // o.addPoint(15, 6); // o.addPoint(16, 5); // o.addPoint(15, 4); l = new java.awt.Polygon(); l.addPoint(22, 9); l.addPoint(22, 5); l.addPoint(23, 5); l.addPoint(23, 8); l.addPoint(26, 8); l.addPoint(26, 9); l.addPoint(22, 9); // l = new java.awt.Polygon(); // l.addPoint(18, 4); // l.addPoint(18, 6); // l.addPoint(20, 6); a = new java.awt.Polygon(); a.addPoint(27, 9); a.addPoint(29, 5); a.addPoint(31, 9); a.addPoint(30, 9); a.addPoint(29, 7); a.addPoint(28, 9); a.addPoint(27, 9); // a = new java.awt.Polygon(); // a.addPoint(22, 6); // a.addPoint(23, 4); // a.addPoint(24, 6); name = new Polygon[7]; name[0]=N; name[1]=i; name[2]=c; name[3]=o; name[4]=l; name[5]=a; name[6]=iDot; }; public void DrawName(Graphics g) { int counter; for (counter=0;counter < 7;counter++) {g.drawPolygon(name[counter]); g.fillPolygon(name[counter]); }; }; public void DrawNameRandomlyColoured(Graphics g) { int counter; for (counter=0;counter < 7;counter++) { g.setColor(new java.awt.Color((int)(Math.random() * 257) % 256, (int)(Math.random() * 257) % 256, (int)(Math.random() * 257) % 256)); g.drawPolygon(name[counter]); g.fillPolygon(name[counter]); }; }; public void start() { signature = new Thread(this); signature.start(); }; public void stop() { signature.stop(); }; public void run() { while (true) { try {Thread.currentThread().sleep(speed);} catch (InterruptedException e){} repaint(); }; }; public void RandomlyChangePolygon(Polygon p) { int point, displacement=2; boolean xOrY, plusOrMinus; point = (int)(Math.random() * p.npoints); xOrY = (Math.random() > 0.5); plusOrMinus = (Math.random() > 0.5); displacement = (int)(Math.random() * (displacement+1)); if (plusOrMinus) displacement = displacement * -1; // if (xOrY) p.xpoints[point]=p.xpoints[point]+displacement; // else p.ypoints[point]=p.ypoints[point]+displacement; if (Math.random() > 0.5) p.xpoints[point]=p.xpoints[point]+displacement; plusOrMinus = (Math.random() > 0.5); displacement = 2; displacement = (int)(Math.random() * (displacement+1)); if (plusOrMinus) displacement = displacement * -1; if (Math.random() > 0.5) p.ypoints[point]=p.ypoints[point]+displacement; /* Change another point */ displacement = 2; point = (int)(Math.random() * p.npoints); xOrY = (Math.random() > 0.5); plusOrMinus = (Math.random() > 0.5); displacement = (int)(Math.random() * (displacement+1)); if (plusOrMinus) displacement = displacement * -1; // if (xOrY) p.xpoints[point]=p.xpoints[point]+displacement; // else p.ypoints[point]=p.ypoints[point]+displacement; if (Math.random() > 0.5) p.xpoints[point]=p.xpoints[point]+displacement; plusOrMinus = (Math.random() > 0.5); displacement = 2; displacement = (int)(Math.random() * (displacement+1)); if (plusOrMinus) displacement = displacement * -1; if (Math.random() > 0.5) p.ypoints[point]=p.ypoints[point]+displacement; }; public void RandomlyChangeName() {int letter=(int)(Math.random() * 7); RandomlyChangePolygon(name[letter]); for (letter=0;letter < 7;letter++) { RandomlyChangePolygon(name[letter]);}; /* Change for the o to have the same start and stop point */ name[3].xpoints[name[3].npoints - 1]=name[3].xpoints[0]; name[3].ypoints[name[3].npoints - 1]=name[3].ypoints[0]; }; };