Hmm...ich kann es zwar ohne Fehler meldung einfügen...doch tun will sich da immer noch nichts :-(
Ich poste einfach noch mal die 3 Klassen die damit zu tun haben weil mir will und will einfach der Fehler nich auffalen :-( Villeicht fällt euch ja was auf
[Java]
import java.awt.*;
import java.awt.event.*;
public class UfoFrame extends Frame implements Runnable, KeyListener{
// Anfang Variablen
Ufo ufo; Plattform plattform; Alien alien; Map map;
// Spielthread
private Thread th;
private int speed=25;
// Variablen für die Doppelpufferung
private Image dbImage;
private Graphics dbg;
private boolean laufen=true;
private Button button1 = new Button();
private Button button2 = new Button();
// Ende Variablen
public UfoFrame(String title) {
// Frame-Initialisierung
super(title);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent evt) { System.exit(0); }
});
int frameWidth = 1280;
int frameHeight = 668;
setSize(frameWidth, frameHeight);
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
int x = (d.width - getSize().width) / 2;
//int y =-50+ (d.height - getSize().height) / 2;
int y=10;
setLocation(x, y);
this.setLayout(null);
this.setBackground(Color.lightGray);
// Ende Komponenten
setResizable(false);
setVisible(true);
addKeyListener(this);
ufo=new Ufo();
plattform=new Plattform();
alien=new Alien();
map=new Map();
start();
}
public void start()
{
// Schaffen eines neuen Threads, in dem das Spiel läuft
th = new Thread(this);
// Starten des Threads
th.start ();
}
public void run()
{
// Erniedrigen der ThreadPriority um zeichnen zu erleichtern
Thread.currentThread().setPriority(Thread.MIN_PRIORITY);
// Solange true ist läuft der Thread weiter
while (laufen){
try
{
if(ufo.zustand==0)
{
ufo.fliegen();
update(getGraphics());
}
// Stoppen des Threads für in Klammern angegebene Millisekunden
Thread.sleep(speed);
}
catch (InterruptedException ex)
{
// do nothing
}
// Zurücksetzen der ThreadPriority auf Maximalwert
Thread.currentThread().setPriority(Thread.MAX_PRIORITY);
}
}
public void update (Graphics g)
{
paint(g);
}
public void paint(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());
// Nun fertig gezeichnetes Bild Offscreen auf dem richtigen Bildschirm anzeigen
map.zeichnen(dbg);
ufo.zeichnen(dbg);
plattform.zeichnen1(dbg);
alien.zeichnen(dbg);
g.drawImage (dbImage, 0, 0, this);
}
public void keyPressed(KeyEvent e)
{
System.out.println("User pressed key " + e.getKeyCode());
if(e.getKeyCode()==37) ufo.schubRechts();
if(e.getKeyCode()==38) ufo.schubHoch();
if(e.getKeyCode()==39) ufo.schubLinks();
if(e.getKeyCode()==40) ufo.schubRunter();
}
public void keyReleased(KeyEvent e)
{
System.out.println("User released key " + e.getKeyCode());
}
public void keyTyped(KeyEvent e)
{
System.out.println("User typed key " + e.getKeyCode());
}
// Ende Ereignisprozeduren
public static void main(String[] args) {
new UfoFrame("UfoFrame");
}
}
[/Java]
[Java]
import java.awt.Graphics;
import java.awt.Color;
import java.awt.Font;
public class Ufo extends Plattform {
int posx;
int posy;
int zustand;
boolean up = false;
boolean down = false;
boolean left = false;
boolean right = false;
double grav=0.01;
double speedx =0; //Geschwindigkeit in x-Richtung
double speedy =0; //Geschwindigkeit in y-Richtung
public Ufo() {
posx = (int)(800*Math.random()+100);
posy = (int)(100*Math.random()+10);
zustand=0; //fliegt
}
public void zeichnen(Graphics g) {
g.translate(posx,posy);
g.setColor(Color.DARK_GRAY);
g.fillOval(0,0,50,75);
g.setColor(Color.DARK_GRAY);
g.fillOval(0,0,150,75);
g.setColor(Color.DARK_GRAY);
g.fillOval(100,0,50,75);
g.setColor(Color.DARK_GRAY);
g.fillOval(45,-30,60,100);
g.setColor(Color.green);
g.fillOval(40,30,75,25);
g.translate(-posx,-posy);
if (posx>=90 && posx<=120 && posy>=425 && posy<=430) {
g.drawString("Bin Gelandet - LEVEL ABGESCHLOSSEN",400,400);
}
if (posx>=725 && posx<=775 && posy>=215 && posy<=230) {
g.drawString("Bin Gelandet - LEVEL ABGESCHLOSSEN",400,400);
}
if (posy>=590 && posy<=600) {
g.drawString("BRUCHLANDUNG - GAME OVER",400,400);
g.setColor(Color.orange);
g.fillOval(posx-100,590,400,400);
g.setColor(Color.orange);
g.fillOval(posx-150,550,300,350);
g.setColor(Color.yellow);
g.fillOval(posx-50,580,150,200);
}
}
public void fliegen(){
System.out.println("px="+posx+" py="+posy);
// Landen auf Plattform 1
if (posx>=90 && posx<=120 && posy>=425 && posy<=430){
System.out.println("Bin gelandet!!!");
grav=0;
speedx=0;
speedy=0;
zustand=1;// Zustand: Gelandet
}
else {
up = false;
down = false;
left = false;
right = false;
posy=posy+(int)speedy;
posx=posx+(int)speedx;
//Gravitation
speedy=speedy+grav;
}
// Landen auf Plattform 2
if (posx>=725 && posx<=775 && posy>=215 && posy<=230){
System.out.println("Bin gelandet!!!");
grav=0;
speedx=0;
speedy=0;
zustand=1;// Zustand: Gelandet
setLevel2();
}
else {
up = false;
down = false;
left = false;
right = false;
posy=posy+(int)speedy;
posx=posx+(int)speedx;
//Gravitation
speedy=speedy+grav;
}
// Game Over, weil Bruchlandung
if (posy>=590 && posy<=600){
System.out.println("Bruchlandung");
grav=0;
speedx=0;
speedy=0;
zustand=2;// Zustand: Kaputt
}
else {
up = false;
down = false;
left = false;
right = false;
posy=posy+(int)speedy;
posx=posx+(int)speedx;
//Gravitation
speedy=speedy+grav;
}
}
public void schubRechts(){
speedx = speedx-0.5;
}
public void schubLinks(){
speedx = speedx+0.5;
}
public void schubHoch(){
speedy=speedy-0.5;
}
public void schubRunter(){
speedy = speedy+0.5;
}
}
[/Java]
[Java]
import java.awt.*;
import java.awt.event.*;
import java.awt.Graphics.*;
public class Plattform {
int level=1; // Zeigt an in welchen Level man sich befindet
public Plattform(){
}
public void setLevel1() {
level=1;
System.out.println("Nächstes LEVEL");
}
public void setLevel2() {
level=2;
System.out.println("Nächstes LEVEL");
}
public void zeichnen1(Graphics g) {
if (level==1) {
g.setColor(Color.MAGENTA);
g.fillRect(100,500,150,45);
g.setColor(Color.MAGENTA);
g.fillRect(750,300,150,45);
g.setColor(Color.orange);
g.fillRect(750,345,15,30);
g.setColor(Color.orange);
g.fillRect(885,345,15,30);
g.setColor(Color.orange);
g.fillRect(100,545,15,30);
g.setColor(Color.orange);
g.fillRect(235,545,15,30);
}
else {
g.setColor(Color.MAGENTA);
g.fillRect(100,500,150,45);
g.setColor(Color.MAGENTA);
g.fillRect(750,300,150,45);
g.setColor(Color.MAGENTA);
g.fillRect(450,100,150,45);
g.setColor(Color.orange);
g.fillRect(750,345,15,30);
g.setColor(Color.orange);
g.fillRect(885,345,15,30);
g.setColor(Color.orange);
g.fillRect(100,545,15,30);
g.setColor(Color.orange);
g.fillRect(235,545,15,30);
g.setColor(Color.orange);
g.fillRect(450,145,15,30);
g.setColor(Color.orange);
g.fillRect(585,145,15,30);
}
}
}
[/Java]