import awb.*; import java.awt.*; import java.awt.event.*; public class Plague extends java.applet.Applet implements ActionListener { TextField boardF; IntField InfF, ImmF, rateF; Button setup, go; LifeForm population[]; int popnum, i, j, m, size, Inf, Imm, rate, iInc, first, day; String board, wellness; String A[]; public void init() { InfF = new IntField(10); ImmF = new IntField(10); rateF = new IntField(10); boardF = new TextField(70); // specify a monospaced font. (proportional spacing is bad here) boardF.setFont(new Font("Monospaced", Font.BOLD, 12)); A = new String[60]; setup = new Button("Setup"); go = new Button("Next Day"); population = new LifeForm[60]; add(setup); add(InfF); add(ImmF); add(rateF); add(go); add(boardF); go.addActionListener(this); setup.addActionListener(this); size = 60; } public void actionPerformed(ActionEvent event) { Object cause = event.getSource(); if (cause == setup) { Inf = InfF.getInt(); Imm = ImmF.getInt(); rate = rateF.getInt(); i = 0; while (i < size) { population[i] = new LifeForm(Inf,Imm); i = i + 1; } population[30].infect(); day = 1; board = "day " + day + " "; i = 0; while (i < size) { wellness = population[i].query(); board = board + wellness; i = i + 1; } boardF.setText(board); } if (cause == go) { i = 0; while (i < size) { A[i] = "0"; i = i + 1; } i = 0; iInc = 2; while (i < size) { wellness = population[i].query(); if (wellness.equals("*")) { j = 0; while (j < rate) { iInc = ((iInc * 23) % 31); m = i + iInc - 13; if ((m >= 0) && (m < size)) { A[m] = "*"; } j = j + 1; } } i = i + 1; } i = 0; while (i < size) { population[i].update(); i = i + 1; } i = 0; while (i < size) { wellness = population[i].query(); if ((wellness.equals("0")) && (A[i].equals("*"))) { population[i].infect(); } i = i + 1; } i = 0; day = day + 1; board = "day " + day + " "; while (i < size) { wellness = population[i].query(); board = board + wellness; i = i + 1; } boardF.setText(board); } } }