/**
* pascal.java - Draws Pascal's triangle (mod n).
* @version 1.00; 24 April 2000
* @author James Yolkowski (yolk4870@mach1.wlu.ca)
*
* This program is Copyright (C) 2000, James Yolkowski.
* This program is free and open software; you may use, modify, and
* distribute this program and any modified variants in any way you
* wish, provided you do not restrict others from doing the same.
* (Therefore, any redistribution of the class file must include this
* file.)
*/
import java.applet.*;
import java.awt.*;
import java.lang.*;
public class pascal extends Applet {
Color colorArray[] = new Color[16];
TextField tModulus;
Label lModulus;
Button computeIt;
int modulus;
Color colorArray[] = new Color[16];
public void init() {
// resize window and add fields.
resize(320,380);
tModulus = new TextField("2");
lModulus = new Label("Modulus: ");
computeIt = new Button("Compute");
modulus = 2;
add(lModulus);
add(tModulus);
add(computeIt);
//Initialise colours.
int i;
for (i = 0; i < 16; i++) {
int j;
int c[] = new int[3];
for (j = 0; j < 3; j++)
c[j] = (int) ((i & (int) Math.pow(2,j))/Math.pow(2,j)) * 170;
if (i == 6) c[1] = 85;
if (i < 8) colorArray[i] = new Color(c[2], c[1], c[0]);
else colorArray[i] = new Color(c[2]+85, c[1]+85, c[0]+85);
}
}
public void paint(Graphics g) {
//
String tempstring;
tempstring = "0";
tempstring = tempstring.concat(tModulus.getText());
modulus = Integer.parseInt(tempstring);
int points[][] = new int[320][320];
int x, y;
for (y = 0; y < 320; y++) {
for (x = 0; x <= y; x++) {
if ((y==x) || (x==0)) points[x][y] = 1;
else points[x][y] = (points[x][y-1] + points[x-1][y-1]) % modulus;
g.setColor(colorArray[points[x][y]]);
g.drawLine(x,y+60,x,y+60);
}
}
}
public boolean action (Event e, Object O) {
if(e.target instanceof Button) /* only one button currently */
repaint();
return true;
}
}