import java.awt.*;
import java.awt.event.*;
import javax.sound.sampled.*;
import java.io.*;
import java.util.Random;
public class Wundermoorhuhn extends Frame implements Runnable{
// Anfang Attribute
Thread th = new Thread(this);
private Image dbImage;
private Graphics dbg;
Image CursorImage;
Cursor cursor;
Wunder[] wunder = new Wunder[10];
int[][] collision = new int[1000][700];
final int LINKS = 0;
final int RECHTS = 1;
final int OBEN = 2;
final int UNTEN = 3;
Wolke[] wolke = new Wolke[3];
Image Sonne;
Doktor[] doktor = new Doktor[3];
Random random = new Random();
SoundLib slib;
// Ende Attribute
public Wundermoorhuhn(String title) {
// Frame-Initialisierung
super(title);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent evt) { System.exit(0); }
});
int frameWidth = 1000;
int frameHeight = 700;
setSize(frameWidth, frameHeight);
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
int x = (d.width - getSize().width) / 2;
int y = (d.height - getSize().height) / 2;
setLocation(x, y);
// Anfang Komponenten
CursorImage = Toolkit.getDefaultToolkit().getImage("Fadenkreuz.gif");
cursor = Toolkit.getDefaultToolkit().createCustomCursor(CursorImage,new Point(15,15),"Fadenkreuz");
setCursor(cursor);
Sonne = Toolkit.getDefaultToolkit().getImage("Sonne.png");
for (int i = 0; i < 1000; i++)
{
for (int j = 0; j < 700; j++)
{
collision[i][j] = -1;
}
}
for (int i = 0; i < wunder.length; i++)
{
wunder[i] = null;
}
for (int i = 0; i < doktor.length; i++)
{
doktor[i] = null;
}
for (int i = 0; i < wolke.length; i++)
{
wolke[i] = new Wolke();
}
this.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent e) {
//hier wird die Maus abgefragt
getCollision();
if(collision[z1][z2]> -1)
{
if(collision[z1][z2]> 9)
{
doktor[collision[z1][z2]-10].setRichtung(UNTEN);
}
else
{
wunder[collision[z1][z2]] = null;
if(random.nextBoolean())
{
wunder[collision[z1][z2]] = new Wunder(-210,random.nextInt(360),RECHTS,random.nextInt(4)+6);
}
else
{
wunder[collision[z1][z2]] = new Wunder(1010,random.nextInt(360),LINKS,random.nextInt(4)+6);
}
}
}
slib.playSound("ding");
}
});
slib = new SoundLib();
slib.loadSound("ding","ding.wav");
// Ende Komponenten
setResizable(false);
setVisible(true);
initiateLevel(1);
}
// Anfang Methoden ===========================================
public void startAnimation()
{
th.start();
}
public void run()
{
while(true)
{
update(getGraphics());
try
{
Thread.sleep(25);//Verzögerung zwischen den Bildern
}catch (InterruptedException e)
{
//nichts
}
}
}
public void update(Graphics g)
{
// Initialisierung des DoubleBuffers
if (dbImage == null)
{
dbImage = createImage (this.getSize().width, this.getSize().height);
dbg = dbImage.getGraphics ();
}
// Bildschirm im Hintergrund löschen
dbg.setColor (getBackground ());
dbg.fillRect (0, 0, this.getSize().width, this.getSize().height);
// Auf gelöschten Hintergrund Vordergrund zeichnen
dbg.setColor (getForeground());
// BILD ERSTELLEN =================================
//Grüner Boden
dbg.setColor(new Color(20,185,20,255));
dbg.fillRect (0, 0, this.getSize().width, this.getSize().height);
//Blauer Himmel
dbg.setColor(new Color(65,65,255,255));
dbg.fillRect (0, 0, this.getSize().width, this.getSize().height*2/3);
//Gelbe Sonne
dbg.drawImage(Sonne,780,0,this);
//Wolken
for (int i = 0; i < wolke.length; i++)
{
wolke[i].zeichnen(dbg);
}
//Doktoren
for (int i = 0; i < doktor.length; i++)
{
if(doktor[i] != null)
{
doktor[i].zeichnen(dbg);
}
}
//Wundervögel
for (int i = 0; i < wunder.length; i++)
{
if(wunder[i] != null)
{
wunder[i].zeichnen(dbg);
}
}
//===============================================
g.drawImage (dbImage, 0, 0, this);
}
public void paint(Graphics g)
{
//nichts
}
public void getCollision()
{
for (int i = 0; i < 1000; i++)
{
for (int j = 0; j < 700; j++)
{
collision[i][j] = -1;
}
}
for (int i = 0; i < doktor.length; i++)
{
if(doktor[i] != null)
{
doktor[i].getCollision(collision,i,this);
}
}
for (int i = 0; i < wunder.length; i++)
{
if(wunder[i] != null)
{
wunder[i].getCollision(collision,i,this);
}
}
}
public void initiateLevel(int level)
{
System.out.println("initiateLevel wird aufgerufen");
for (int i = 0; i < wunder.length; i++)
{
wunder[i] = null;
}
switch (level) {
case 1 :
wunder[0] = new Wunder(50,50,LINKS,2);
wunder[1] = new Wunder(400,300,RECHTS,2);
doktor[0] = new Doktor(100);
break;
case 2 :
wunder[0] = new Wunder(400,50,LINKS,2);
wunder[1] = new Wunder(50,400,RECHTS,2);
break;
default:
System.out.println("Fehler beim initiieren des Levels");
}
}
// Ende Methoden ===========================================
public static void main(String[] args) {
Wundermoorhuhn wundermoorhuhn = new Wundermoorhuhn("Wundermoorhuhn");
wundermoorhuhn.startAnimation();
}
}