import javax.swing.JApplet;
import java.awt.Graphics;
public class Snow extends JApplet {
public void paint (Graphics canvas) {
// variables
int eyeY = 50;
int eyeHeight = 7;
int eyeWidth = 10;
int buttonHeight = 7;
// The head of the snowman
canvas.drawOval(65,35,60,50); // head
canvas.fillRect(69,35,50,10); // brim of had
canvas.fillRect(80, 15, 28, 20); // bucket of hat
// the face
canvas.fillOval(78,eyeY,eyeWidth,eyeHeight); // left eye
canvas.fillOval(100,eyeY,eyeWidth,eyeHeight); // right eye
canvas.fillOval(90,60,buttonHeight,buttonHeight); // nose
canvas.drawArc(78,67,32,10,180,180);
// the body
canvas.drawOval(57,86,78,65); // second snowball
canvas.fillOval(90,95,10,buttonHeight); // 1st button
canvas.fillOval(90, 110, 10, buttonHeight); // 2nd button
canvas.fillOval(90,125,10,buttonHeight); // 3rd button
canvas.drawOval(52,150,90,65); // last snowball
// arms
Leftarm la;
la = new Leftarm(canvas);
System.out.println("start LA");
la.start();
System.out.println("start RA");
RightArm ra;
ra = new RightArm(canvas);
ra.start();
System.out.println("Both arms started\n"+canvas);
}
}
import java.awt.Color;
import java.awt.Graphics;
import java.util.Random;
class RightArm extends Thread{
private Graphics canvas;
public RightArm(Graphics canvas) {
this.canvas = canvas;
}
public void run() {
Random generator = new Random();
int flag =0;
int random = generator.nextInt(150);
int x = 110;
canvas.drawLine(134,110,170,x);
do
{
if (x >= random)
{
x = minus(random,canvas,x);
flag++;
}else
{
x = plus(random,canvas,x);
flag++;
}
random = generator.nextInt(150);
}while (flag != 1000);
}
private int minus(int random,Graphics canvas,int count) {
for (int x = count; x>=random; x--)
{
canvas.setColor(Color.black);
canvas.drawLine(134,110,170,x);
try{Thread.sleep(10);}catch(Exception e){};
canvas.setColor(Color.white);
canvas.drawLine(134,110,170,x);
if (x== 50)
{
canvas.setColor(Color.black);
canvas.drawLine(134,110,170,x);
random = 50;
break;
}
}
return random;
}
private int plus(int random, Graphics canvas,int count) {
for (int x = count; x<=random; x++)
{
canvas.setColor(Color.black);
canvas.drawLine(134,110,170,x);
try{Thread.sleep(10);}catch(Exception e){};
canvas.setColor(Color.white);
canvas.drawLine(134,110,170,x);
}
return random;
}
}
import java.awt.Color;
import java.awt.Graphics;
import java.util.Random;
class Leftarm extends Thread {
private Graphics canvas;
public Leftarm(Graphics canvas) {
this.canvas=canvas;
}
public void run() {
Random generator = new Random();
int flag =0;
int random = generator.nextInt(150);
int x = 110;
canvas.drawLine(20,x,57,110);
System.out.println("running LA");
do
{
if (x >= random)
{
x = minus(random,x);
flag++;
}else
{
x = plus(random,x);
flag++;
}
random = generator.nextInt(150);
}while (flag != 1000);
}
private int minus(int random,int count) {
System.out.println("up "+random+" " + canvas);
for (int x = count; x>=random; x--)
{
canvas.setColor(Color.blue);
canvas.drawLine(20,x,57,110);
System.out.print('.');
try{Thread.sleep(10);}catch(Exception e){};
canvas.setColor(Color.white);
canvas.drawLine(20,x,57,110);
if (x== 50)
{
canvas.setColor(Color.black);
canvas.drawLine(20,x,57,110);
random = 50;
break;
}
}
return random;
}
private int plus(int random, int count) {
System.out.println("down");
for (int x = count; x<=random; x++)
{
canvas.setColor(Color.black);
canvas.drawLine(20,x,57,110);
try{Thread.sleep(10);}catch(Exception e){};
canvas.setColor(Color.white);
canvas.drawLine(20,x,57,110);
}
return random;
}
}
One idea that I had was that while the threads were running parallel to one another, the changing of color to white may overlap can cause the color to be white the whole time.

New Topic/Question
Reply



MultiQuote





|