import java.awt.*;
import java.util.Random;
@SuppressWarnings("serial")
public class Practice extends Frame implements Runnable {
int frameNumber;
int delay;
Thread animatorThread;
static int x1=128, y1=128, x2=384, y2=128, x3=256, y3=256;
Practice(int fps, String windowTitle) {
super(windowTitle);
delay = (fps > 0) ? (1000 / fps) : 100;
}
public void startAnimation() {
if (animatorThread == null) {
animatorThread = new Thread(this);
animatorThread.start();
}
}
public void stopAnimation() {
animatorThread = null;
}
public boolean mouseDown(Event e, int x, int y) {
if (animatorThread == null) {
startAnimation();
}
else {
stopAnimation();
}
this.dispose();
this.setVisible(false);
return false;
}
public void run() {
long startTime = System.currentTimeMillis();
Random moves = new Random();
int r1=0, r2=0, r3=0, r4=0, r5=0, r6=0;
while (Thread.currentThread() == animatorThread) {
repaint();
try {
startTime += delay;
Thread.sleep(Math.max(0,
startTime-System.currentTimeMillis()));
} catch (InterruptedException e) {
break;
}
frameNumber++;
// Start of application logic
//Code for x1
if(r1 == 0) {
r1 = moves.nextInt(100);
if (r1>49) {
r1 = -r1 + 50;
}
}
if(r1 != 0) {
if(r1>0) {
x1++;
r1--;
} else if(r1<0) {
x1--;
r1++;
}
}
if(x1==0) {
r1 = 50;
} else if(x1==512) {
r1 = -50;
}
//Code for x2
if(r2 == 0) {
r2 = moves.nextInt(100);
if (r2>49) {
r2 = -r2 + 50;
}
}
if(r2 != 0) {
if(r2>0) {
x2++;
r2--;
} else if(r2<0) {
x2--;
r2++;
}
}
if(x2==0) {
r2 = 50;
} else if(x2==512) {
r2 = -50;
}
//Code for x3
if(r3 == 0) {
r3 = moves.nextInt(100);
if (r3>49) {
r3 = -r3 + 50;
}
}
if(r3 != 0) {
if(r3>0) {
x3++;
r3--;
} else if(r3<0) {
x3--;
r3++;
}
}
if(x3==0) {
r3 = 50;
} else if(x3==512) {
r3 = -50;
}
//Code for y1
if(r4 == 0) {
r4 = moves.nextInt(100);
if (r4>49) {
r4 = -r4 + 50;
}
}
if(r4 != 0) {
if(r4>0) {
y1++;
r4--;
} else if(r4<0) {
y1--;
r4++;
}
}
if(y1==0) {
r4 = 50;
} else if(y1==384) {
r4 = -50;
}
//Code for y2
if(r5 == 0) {
r5 = moves.nextInt(100);
if (r5>49) {
r5 = -r5 + 50;
}
}
if(r5 != 0) {
if(r5>0) {
y2++;
r5--;
} else if(r5<0) {
y2--;
r5++;
}
}
if(y2==0) {
r5 = 50;
} else if(y2==384) {
r5 = -50;
}
//Code for y3
if(r6 == 0) {
r6 = moves.nextInt(100);
if (r6>49) {
r6 = -r6 + 50;
}
}
if(r6 != 0) {
if(r6>0) {
y3++;
r6--;
} else if(r6<0) {
y3--;
r6++;
}
}
if(y3==0) {
r6 = 50;
} else if(y3==384) {
r6 = -50;
}
}
}
public void paint(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
g2d.drawLine(512, 0, 512, 768);
g2d.drawLine(0, 384, 1024, 384);
//Original, Quadrant 2
g2d.drawLine(x1, y1, x2, y2);
g2d.drawLine(x2, y2, x3, y3);
g2d.drawLine(x3, y3, x1, y1);
//Quadrant 1
g2d.drawLine(x1+(1024-x1*2), y1, x2+(1024-x2*2), y2);
g2d.drawLine(x2+(1024-x2*2), y2, x3+(1024-x3*2), y3);
g2d.drawLine(x3+(1024-x3*2), y3, x1+(1024-x1*2), y1);
//Quadrant 3
g2d.drawLine(x1, y1+(768-y1*2), x2, y2+(768-y2*2));
g2d.drawLine(x2, y2+(768-y2*2), x3, y3+(768-y3*2));
g2d.drawLine(x3, y3+(768-y3*2), x1, y1+(768-y1*2));
//Quadrant 4
g2d.drawLine(x1+(1024-x1*2), y1+(768-y1*2), x2+(1024-x2*2), y2+(768-y2*2));
g2d.drawLine(x2+(1024-x2*2), y2+(768-y2*2), x3+(1024-x3*2), y3+(768-y3*2));
g2d.drawLine(x3+(1024-x3*2), y3+(768-y3*2), x1+(1024-x1*2), y1+(768-y1*2));
}
@SuppressWarnings("deprecation")
public static void main(String args[]) {
Practice animator = null;
int fps = 20;
// Get frames per second from the command line argument
if (args.length > 0) {
fps = Integer.parseInt(args[0]);
}
animator = new Practice(fps, "Animator");
animator.startAnimation();
animator.resize(200, 60);
animator.show();
animator.setSize(1024, 768);
animator.setTitle("Triangles 1.1 by Franz Sarmiento");
animator.setResizable(false);
animator.setLocationRelativeTo(null);
}
}