import java.applet.Applet;
import java.applet.AudioClip;
import java.net.MalformedURLException;
import java.net.URL;
import java.awt.*;
import java.awt.event.*;
/**
*
* Zeichenflaeche zur Demnonstraion der grundlegenden 2d-Graphik
*
* @version fn_1.1 vom 01.03.2012
* @author Felix Koch & Nick Rauter
* ©by henry.freye@mcgym.de
*/
public class Zeichenflaeche extends Canvas {
int x, d, b, s;
MainFrame mf;
int hoehe, breite;
Color c;
Ball ball;
private AudioClip clip;
public void zeichne(int s){
Graphics pinsel=this.getGraphics();
hoehe = this.getHeight();
breite = this.getWidth();
if(!ball.isAlive()){
ball = new Ball(this, s);
ball.start();
}
pinsel.setColor(Color.BLUE);
pinsel.fillRect(x,hoehe-20,b,d);
}
public void meldung(int x){ //Absturzmeldung
Graphics pinsel=this.getGraphics();
hoehe = this.getHeight();
breite = this.getWidth();
int fontSize = 50;
while(x<3){
x++;
pinsel.setFont(new Font("TimesRoman", Font.PLAIN, fontSize));
pinsel.setColor(Color.BLUE);
pinsel.drawString("You lose!",230,270);
this.pause(90);
pinsel.setFont(new Font("TimesRoman", Font.PLAIN, fontSize));
pinsel.setColor(Color.WHITE);
pinsel.drawString("You lose!",230,270);
this.pause(30);
}
}
public void youLose() { //Absturzton
try {
URL u = new URL("file:/D:/INFO/INWO_JANUAER/Breakout003_meins/Game_Over.wav");
//URL u = new URL("Breakout003_meins/Game_Over.wav");
clip = Applet.newAudioClip(u);
clip.play();
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
public void levelUp(int l) { //Signal bei Erreichen des naechsten Levels
if(l<1){
l++;
try {
URL u = new URL("file:/D:/INFO/INWO_JANUAER/Breakout003_meins/Power_Up.wav");
clip = Applet.newAudioClip(u);
clip.play();
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
}
public void pongSchlaeger() { //Geraeusch wenn der Ball den Schlaeger beruehrt
try {
URL u = new URL("file:/D:/INFO/INWO_JANUAER/Breakout003_meins/PONG_Schlaeger.wav");
clip = Applet.newAudioClip(u);
clip.play();
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
public void pongBande() { //Geraeusch wenn der Ball die Bande beruehrt
try {
URL u = new URL("file:/D:/INFO/INWO_JANUAER/Breakout003_meins/pong_Bande.wav");
clip = Applet.newAudioClip(u);
clip.play();
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
public Zeichenflaeche(MainFrame mf){
x=200; //x-Wert bei dem der Schlaeger beim Start gezeichnet wird
d=10; //Höhe vom Schlaeger
b=200; //Schlaegerbreite
s=30; //Schlaeger bewegt sich pro Tastendruck s-Pixel nach links/rechts
this.mf=mf;
int frameWidth = 600;
int frameHeight = 580;
setSize(frameWidth, frameHeight);
ball = new Ball ();
}
public void paint(Graphics pinsel){ //tuerkises Hindernis
pinsel.setColor(Color.CYAN);
pinsel.fillRect(150,150,350,30);
pinsel.setColor(Color.BLACK);
pinsel.drawRect(150,150,350,30);
}
public void nachRechts(){ //Schlaeger nach rechts bewegen
Graphics pinsel = getGraphics();
int hoehe = getHeight();
int breite = getWidth();
if(x+b<breite){ //wenn Schlaeger nicht am rechten Rand weiter zeichnen sonst stopp
pinsel.setColor(Color.WHITE);
pinsel.fillRect(x,hoehe-20,b,d);
if(ball.zaehler>=10&&ball.zaehler<20){ //wenn 10 Punkte erreicht erhöht sich die Schlaeger-Geschwindigkeit
x +=s+10;}else{x +=s;}
if(ball.zaehler>=20&&ball.zaehler<30){ //wenn 20 Punkte erreicht erhöht sich die Schlaeger-Geschwindigkeit
x +=s+30;
}
if(ball.zaehler>=30&&ball.zaehler<40){ //wenn 30 Punkte erreicht erhöht sich die Schlaeger-Geschwindigkeit
x +=s+30;
}
if(ball.zaehler>=40){ //wenn 40 Punkte erreicht erhöht sich die Schlaeger-Geschwindigkeit
x +=s+40;
}
//x +=s;
pinsel.setColor(Color.RED);
pinsel.fillRect(x,hoehe-20,b,d);
}
}
public void nachLinks(){ //Schlaeger nach links bewegen
Graphics pinsel = getGraphics();
int hoehe = getHeight();
int breite = getWidth();
if(x>0){ //wenn Schlaeger nicht am linken Rand weiter zeichnen sonst stopp
pinsel.setColor(Color.WHITE);
pinsel.fillRect(x,hoehe-20,b,d);
if(ball.zaehler>=10&&ball.zaehler<20){ //wenn 10 Punkte erreicht erhöht sich die Schlaeger-Geschwindigkeit
x -=s+10;}else{x -=s;}
if(ball.zaehler>=20&&ball.zaehler<30){ //wenn 20 Punkte erreicht erhöht sich die Schlaeger-Geschwindigkeit
x -=s+20;
}
if(ball.zaehler>=30&&ball.zaehler<40){ //wenn 30 Punkte erreicht erhöht sich die Schlaeger-Geschwindigkeit
x -=s+30;
}
if(ball.zaehler>=40){ //wenn 40 Punkte erreicht erhöht sich die Schlaeger-Geschwindigkeit
x -=s+40;
}
//x -=s;
pinsel.setColor(Color.BLUE);
pinsel.fillRect(x,hoehe-20,b,d);
}
}
public void pause(int i) {
try {
int l = 5;
if(ball.zaehler>=10&&ball.zaehler<20){ //wenn 10 Punkte erreicht erhöht sich die Ballgeschwindigkeit
l = l-1;
}
if(ball.zaehler>=20&&ball.zaehler<30){ //wenn 20 Punkte erreicht erhöht sich die Ballgeschwindigkeit
l = l-2;
}
if(ball.zaehler>=30&&ball.zaehler<40){ //wenn 30 Punkte erreicht erhöht sich die Ballgeschwindigkeit
l = l-3;
}
if(ball.zaehler>=40){ //wenn 40 Punkte erreicht erhöht sich die Ballgeschwindigkeit
l = l-4;
}
Thread.sleep(i*l); //Pause-->Ballgeschwindigkeit
} catch (InterruptedException e) {
e.printStackTrace();
}
Thread.yield();
}
//Zufallszahl 0..e
public int zufall(int e){
return (int) Math.floor(Math.random()*e);
}
//Zufallszahl a..e
public int zufall(int a, int e){
return (int) Math.floor(Math.random()*(e-a+1)+a);
}
//Zufallsfarbe
public Color zufallsColor(){
return new Color(zufall(255),zufall(255),zufall(255));
}
}