code-archive/java-move_test/old.hello.java

180 lines
5.3 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;
boolean pressedLeft, pressedRight, pressedUp, pressedDown;
// for Chicken
Rectangle chickenpos = new Rectangle(5,5,25,25);
int boxsize = 25;
// for Baddies
int baddies_number = 5;
int baddies_angle[][] = new int[baddies_number][2];
int baddies_size = 35;
Rectangle[] baddies = new Rectangle[10];
// for Walls
int walls_number = 3;
int walls_size = 75;
Rectangle[] walls = new Rectangle[walls_number];
Rectangle goal = new Rectangle(0,0,40,40);
Image dirt = Toolkit.getDefaultToolkit().getImage(getClass().getResource("dirt.jpg"));
Image chicken = Toolkit.getDefaultToolkit().getImage(getClass().getResource("chicken.gif"));
Image baddyimg = Toolkit.getDefaultToolkit().getImage(getClass().getResource("ball.gif"));
public void init() {
Buffer=createImage(size().width,size().height);
gBuffer=Buffer.getGraphics();
goal.x = generator.nextInt(size().width - 70) + 30;
goal.y = generator.nextInt(size().height - 70) + 30;
for (int i = 0; i < baddies_number; i++){
baddies[i] = new Rectangle(generator.nextInt(size().width - 30 - baddies_size) + 30, generator.nextInt(size().height - 30 - baddies_size) + 30, 35, 35);
baddies_angle[i][0] = generator.nextInt(31) - 16;
baddies_angle[i][1] = generator.nextInt(31) - 16;
}
for (int i = 0; i < walls_number; i++){
walls[i] = new Rectangle(generator.nextInt(size().width), generator.nextInt(size().height), walls_size, walls_size);
if (walls[i].intersects(chickenpos) == true || walls[i].intersects(goal) == true) i--;
}
// for (int i= 0; i < walls_number; i++){
// if (int(generator.nextInt(2)) == 0) walls[i] = new Rectangle(generator.nextInt);
// }
t=new Thread(this);
t.start();
}
public boolean collisiontest(int x, int y){
for(int i = 0; i < walls_number; i++){
if (new Rectangle(x,y,boxsize,boxsize).intersects(walls[i]) == true) return true;
}
return false;
}
public boolean keyDown(Event e, int key) {
if(key==Event.LEFT && chickenpos.x - 5 >= 0 && collisiontest(chickenpos.x - 5, chickenpos.y) != true)
// pressedLeft=true;
chickenpos.x = chickenpos.x - 5;
if(key==Event.RIGHT && chickenpos.x + boxsize + 5 <= size().width && collisiontest(chickenpos.x + 5, chickenpos.y) != true)
// pressedRight=true;
chickenpos.x = chickenpos.x + 5;
if(key==Event.UP && chickenpos.y - 5 >= 0 && collisiontest(chickenpos.x, chickenpos.y - 5) != true)
// pressedUp=true;
chickenpos.y = chickenpos.y - 5;
if(key==Event.DOWN && chickenpos.y + boxsize + 5 <= size().height && collisiontest(chickenpos.x, chickenpos.y + 5) != true)
// pressedDown=true;
chickenpos.y = chickenpos.y + 5;
repaint();
return true;
}
public boolean keyUp(Event e, int key)
{
pressedLeft=pressedRight=pressedUp=pressedDown=false;
repaint();
return true;
}
public void drawstuff() {
gBuffer.drawImage(dirt, 0, 0, this);
gBuffer.setColor(Color.black);
gBuffer.fillRect(goal.x, goal.y, goal.width, goal.height);
gBuffer.setColor(Color.green);
for (int i = 0; i < walls_number; i++){
gBuffer.fillRect(walls[i].x, walls[i].y, walls[i].width, walls[i].height);
}
gBuffer.drawImage(chicken, chickenpos.x, chickenpos.y, this);
for (int i = 0; i < baddies_number; i++){
gBuffer.drawImage(baddyimg, baddies[i].x, baddies[i].y, this);
}
}
public void paint(Graphics g) {
drawstuff();
g.drawImage(Buffer,0,0,this);
}
public void update(Graphics g) {
paint(g);
}
public void run(){
while(true)
{
if (goal.contains(new Rectangle(chickenpos.x,chickenpos.y,chickenpos.width,chickenpos.height))) return;
for(int i = 0; i < baddies_number; i++){
if(baddies_angle[i][0] > 0) {baddies[i].x += baddies_angle[i][0];
if (baddies[i].x >= size().width - baddies_size){
baddies[i].x = size().width - baddies_size;
baddies_angle[i][0] *= -1;
}
}
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;
}
}
if(baddies_angle[i][1] > 0) {baddies[i].y += baddies_angle[i][1];
if (baddies[i].y >= size().height - baddies_size){
baddies[i].y = size().height - baddies_size;
baddies_angle[i][1] *= -1;
}
}
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;
}
}
}
repaint();
for(int i = 0; i < baddies_number; i++)
{if (baddies[i].intersects(chickenpos) == true) return;
}
try {
t.sleep(300);
}
catch (InterruptedException e) {}
}
}
}