/* A basic extension of the java.applet.Applet class */ import java.awt.*; import java.applet.*; public class swirlyMorph extends Applet implements Runnable { int[] xpos ={210,220,230,240,250,260,270,270,270,270,270,270,270,260,250,240,230,220,210,210,210,210,210}; int[] ypos ={120,120,120,120,120,120,120,130,140,150,160,170,170,170,170,170,170,170,170,170,160,150,140}; int points =23; Thread runner; int pause = 6; int gravity = 1; int bias = 1; int oldX; int oldY; int shiftX=0; int shiftY=0; boolean blurry = false; int redVal = (int)Math.floor((Math.random()*225)); int greenVal= (int)Math.floor((Math.random()*225)); int blueVal = (int)Math.floor((Math.random()*225)); Polygon morph = new Polygon(xpos,ypos,points); Image workspace; Graphics offscreen; public void init() { // Take out this line if you don't use symantec.itools.net.RelativeURL or symantec.itools.awt.util.StatusScroller symantec.itools.lang.Context.setApplet(this); // This code is automatically generated by Visual Cafe when you add // components to the visual environment. It instantiates and initializes // the components. To modify the code, only use code syntax that matches // what Visual Cafe can generate, or Visual Cafe may be unable to back // parse your Java file into its visual environment. //{{INIT_CONTROLS setLayout(null); setBackground(java.awt.Color.black); setForeground(java.awt.Color.white); setSize(492,350); workspace= createImage(getSize().width,getSize().height); offscreen=workspace.getGraphics(); add(textArea1); textArea1.setBounds(12,252,156,85); textArea1.append("Welcome to the new improved MorphinPoly.\nClick on the buttons to change speed and direction.\nClick on blur to produce a psychadelic swirl.\nClick and drag within the applet for rapid re positioning.\n\nIan Taylor 24.10.00 " ); gravDec.setLabel("North"); add(gravDec); gravDec.setBackground(java.awt.Color.black); gravDec.setForeground(java.awt.Color.white); gravDec.setBounds(216,252,48,22); biasDec.setLabel("West"); add(biasDec); biasDec.setBackground(java.awt.Color.black); biasDec.setForeground(java.awt.Color.white); biasDec.setBounds(192,276,48,22); biasInc.setLabel("East"); add(biasInc); biasInc.setBackground(java.awt.Color.black); biasInc.setForeground(java.awt.Color.white); biasInc.setBounds(240,276,48,22); gravInc.setLabel("South"); add(gravInc); gravInc.setBackground(java.awt.Color.black); gravInc.setForeground(java.awt.Color.white); gravInc.setBounds(216,300,48,22); speedDec.setLabel("Fast"); add(speedDec); speedDec.setBackground(java.awt.Color.black); speedDec.setForeground(java.awt.Color.white); speedDec.setBounds(396,252,48,22); stop.setLabel("Pause"); add(stop); stop.setBackground(java.awt.Color.black); stop.setForeground(java.awt.Color.white); stop.setBounds(372,276,48,22); go.setLabel("Go"); add(go); go.setBackground(java.awt.Color.black); go.setForeground(java.awt.Color.white); go.setBounds(420,276,48,22); speedInc.setLabel("Slow"); add(speedInc); speedInc.setBackground(java.awt.Color.black); speedInc.setForeground(java.awt.Color.white); speedInc.setBounds(396,300,48,22); blur.setLabel("Blur"); add(blur); blur.setBounds(300,252,65,22); //}} //{{REGISTER_LISTENERS SymItem lSymItem = new SymItem(); blur.addItemListener(lSymItem); SymMouse aSymMouse = new SymMouse(); speedDec.addMouseListener(aSymMouse); speedInc.addMouseListener(aSymMouse); stop.addMouseListener(aSymMouse); go.addMouseListener(aSymMouse); gravDec.addMouseListener(aSymMouse); gravInc.addMouseListener(aSymMouse); biasDec.addMouseListener(aSymMouse); biasInc.addMouseListener(aSymMouse); //runner.suspend(); this.addMouseListener(aSymMouse); SymMouseMotion aSymMouseMotion = new SymMouseMotion(); this.addMouseMotionListener(aSymMouseMotion); //}} } //{{DECLARE_CONTROLS java.awt.TextArea textArea1 = new java.awt.TextArea("",0,0,TextArea.SCROLLBARS_VERTICAL_ONLY); java.awt.Button gravDec = new java.awt.Button(); java.awt.Button biasDec = new java.awt.Button(); java.awt.Button biasInc = new java.awt.Button(); java.awt.Button gravInc = new java.awt.Button(); java.awt.Button speedDec = new java.awt.Button(); java.awt.Button stop = new java.awt.Button(); java.awt.Button go = new java.awt.Button(); java.awt.Button speedInc = new java.awt.Button(); java.awt.Checkbox blur = new java.awt.Checkbox(); //}} public void paint(Graphics screen){ offscreen.setColor(Color.black); if(blurry==false){ offscreen.fillRect(0,0,getSize().width,getSize().height); } offscreen.setColor(new Color(redVal,greenVal,blueVal)); offscreen.fillPolygon(xpos,ypos,points); screen.drawImage(workspace,0,0,this); } public void start(){ if (runner == null){ runner = new Thread(this); runner.start(); } } public void run(){ int redShift=1; int greenShift=3; int blueShift=5; try{Thread.sleep(2000);} catch(InterruptedException e){} while (true){ if((redVal>=254)||(redVal<=0))redShift*=-1; redVal+=redShift; if((greenVal>=252)||(greenVal<=2))greenShift*=-1; greenVal+=greenShift; if((blueVal>=250)||(blueVal<=5))blueShift*=-1; blueVal+=blueShift; movePoints(); repaint(); } } public void stop(){ if (runner!= null){ runner.stop(); runner = null; } } public void movePoints(){ for (int i = 0; igetSize().width) xpos[i]-= 50; ypos[i]=ypos[i]+(int)Math.floor((Math.random()*3)-gravity)+shiftY; if (ypos[i]<0)ypos[i] = ypos[i]+50; if (ypos[i]>(getSize().height)-100) ypos[i]-=50 ; try{Thread.sleep(pause);} catch(InterruptedException e){} } } public void update(Graphics screen){ paint(screen); } class SymItem implements java.awt.event.ItemListener { public void itemStateChanged(java.awt.event.ItemEvent event) { Object object = event.getSource(); if (object == blur) blur_ItemStateChanged(event); } } void blur_ItemStateChanged(java.awt.event.ItemEvent event) { // to do: code goes here. if(blur.getState()==false)blurry=false; if(blur.getState()==true)blurry=true; } class SymMouse extends java.awt.event.MouseAdapter { public void mouseReleased(java.awt.event.MouseEvent event) { Object object = event.getSource(); if (object == swirlyMorph.this) swirlyMorph_MouseReleased(event); } public void mousePressed(java.awt.event.MouseEvent event) { Object object = event.getSource(); if (object == swirlyMorph.this) swirlyMorph_MousePressed(event); } public void mouseClicked(java.awt.event.MouseEvent event) { Object object = event.getSource(); if (object == speedDec) speedDec_MouseClicked(event); else if (object == speedInc) speedInc_MouseClicked(event); else if (object == stop) stop_MouseClicked(event); else if (object == go) go_MouseClicked(event); else if (object == gravDec) gravDec_MouseClicked(event); else if (object == gravInc) gravInc_MouseClicked(event); else if (object == biasDec) biasDec_MouseClicked(event); else if (object == biasInc) biasInc_MouseClicked(event); } } void speedDec_MouseClicked(java.awt.event.MouseEvent event) { // to do: code goes here. pause--; if (pause < 1) pause=1; } void speedInc_MouseClicked(java.awt.event.MouseEvent event) { // to do: code goes here. pause++; } void stop_MouseClicked(java.awt.event.MouseEvent event) { // to do: code goes here. runner.suspend(); } void go_MouseClicked(java.awt.event.MouseEvent event) { // to do: code goes here. runner.resume(); } void gravDec_MouseClicked(java.awt.event.MouseEvent event) { // to do: code goes here. gravity++; } void gravInc_MouseClicked(java.awt.event.MouseEvent event) { // to do: code goes here. gravity--; } void biasDec_MouseClicked(java.awt.event.MouseEvent event) { // to do: code goes here. bias++; } void biasInc_MouseClicked(java.awt.event.MouseEvent event) { // to do: code goes here. bias--; } class SymMouseMotion extends java.awt.event.MouseMotionAdapter { public void mouseDragged(java.awt.event.MouseEvent event) { Object object = event.getSource(); if (object == swirlyMorph.this) swirlyMorph_MouseDragged(event); } } void swirlyMorph_MouseDragged(java.awt.event.MouseEvent event) { // to do: code goes here. shiftX=event.getX()-oldX; shiftY=event.getY()-oldY; } void swirlyMorph_MousePressed(java.awt.event.MouseEvent event) { // to do: code goes here. oldX=event.getX(); oldY=event.getY(); } void swirlyMorph_MouseReleased(java.awt.event.MouseEvent event) { // to do: code goes here. shiftX=0; shiftY=0; } }