code-archive/java-move_test/hello.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) {}
}
}
}