import java.applet.*; // Don't forget these import statements! import java.awt.*; import java.awt.Rectangle; import java.lang.*; import java.util.Random; public class hello extends Applet implements Runnable { Thread t; Random generator = new Random(); Image Buffer; Graphics gBuffer; // for Baddies int baddies_number = 30; int baddies_teams_number = 2; int baddies_angle[][] = new int[baddies_number][3]; int baddies_size = 10; Rectangle[] baddies = new Rectangle[baddies_number]; Image dirt = Toolkit.getDefaultToolkit().getImage(getClass().getResource("dirt.jpg")); public void init() { Buffer=createImage(size().width,size().height); gBuffer=Buffer.getGraphics(); for (int i = 0; i < baddies_number; i++){ baddies[i] = new Rectangle(generator.nextInt(size().width - baddies_size), generator.nextInt(size().height - baddies_size), baddies_size, baddies_size); if (collisiontest(i) == -1){ baddies_angle[i][0] = generator.nextInt(31) - 16; baddies_angle[i][1] = generator.nextInt(31) - 16; if (i <= baddies_number/2 - 1) baddies_angle[i][2] = 0; else baddies_angle[i][2] = 1; } else i--; } t=new Thread(this); t.start(); } public int collisiontest(int currentball_number){ for(int i = 0; i < currentball_number; i++){ if (i != currentball_number && baddies[currentball_number].intersects(baddies[i]) == true) return i; } return -1; } public void battle(int ball1, int ball2) { if (ball1 == -1) return; // balls are same colour if (baddies_angle[ball1][2] == baddies_angle[ball2][2]){ if (baddies[ball1].width > baddies[ball2].width) {baddies[ball2].width = 0; baddies[ball1].height += 5; baddies[ball1].width += 5;} if (baddies[ball1].width < baddies[ball2].width) {baddies[ball1].width = 0; baddies[ball2].height += 5; baddies[ball2].width += 5;} if (baddies[ball1].width == baddies[ball2].width) {baddies_angle[ball1][0] *= -1; baddies_angle[ball1][1] *= -1; baddies_angle[ball2][0] *= -1; baddies_angle[ball2][1] *= -1;} } // balls are different colours else { if(baddies[ball1].width > baddies[ball2].width) {baddies[ball1].width += 5; baddies[ball1].height += 5; baddies[ball2].width = 0;} if(baddies[ball2].width > baddies[ball1].width) {baddies[ball2].width += 5; baddies[ball2].height += 5; baddies[ball1].width = 0;} } if(baddies[ball1].width == baddies[ball2].width) {baddies_angle[ball1][0] *= -1; baddies_angle[ball1][1] *= -1; baddies_angle[ball2][0] *= -1; baddies_angle[ball2][1] *= -1;} } public void drawstuff() { gBuffer.drawImage(dirt, 0, 0, this); for (int i = 0; i < baddies_number; i++){ if (baddies[i].width != 0){ if (baddies_angle[i][2] == 0) gBuffer.setColor(Color.red); if (baddies_angle[i][2] == 1) gBuffer.setColor(Color.blue); gBuffer.fillRect(baddies[i].x,baddies[i].y,baddies[i].width,baddies[i].height); } } } public void paint(Graphics g) { drawstuff(); g.drawImage(Buffer,0,0,this); } public void update(Graphics g) { paint(g); } public void run(){ while(true) { for(int i = 0; i < baddies_number; i++){ if(baddies[i].width != 0){ if(baddies_angle[i][0] > 0) {baddies[i].x += baddies_angle[i][0]; if (baddies[i].x >= size().width - baddies[i].width){ baddies[i].x = size().width - baddies[i].width; baddies_angle[i][0] *= -1; } battle(collisiontest(i), i); } if(baddies_angle[i][0] < 0) {baddies[i].x += baddies_angle[i][0]; if (baddies[i].x < 0){ baddies[i].x = 0; baddies_angle[i][0] *= -1; } battle(collisiontest(i), i); } if(baddies_angle[i][1] > 0) {baddies[i].y += baddies_angle[i][1]; if (baddies[i].y >= size().height - baddies[i].height){ baddies[i].y = size().height - baddies[i].height; baddies_angle[i][1] *= -1; } battle(collisiontest(i), i); } if(baddies_angle[i][1] < 0) {baddies[i].y += baddies_angle[i][1]; if (baddies[i].y < 0){ baddies[i].y = 0; baddies_angle[i][1] *= -1; } battle(collisiontest(i), i); } } } repaint(); // for(int i = 0; i < baddies_number; i++) // {if (baddies[i].intersects(chickenpos) == true) return; // } try { t.sleep(300); } catch (InterruptedException e) {} } } }