180 lines
5.3 KiB
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) {}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
} |