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) {} } } }