153 lines
4.6 KiB
Java
153 lines
4.6 KiB
Java
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) {}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
} |