Hallo,
ich hab lange überlegt ob ich nu mal in einem Forum fragen soll nach hilfe.. naja nun bin ich an einem Punkt angelangt wo mein Wissen nichtmehr ausreicht um mein Problem zu lösen(bin auch nochnicht so lange bei Java dabei )
Gut also jetz zum Problem:
Ich habe 3 Klassen:
1. Das Programm (hier wird der Frame erstellt und alles aktualisiert bei Bewegung)
2. Ball (halt der Ball der im Feld rumfliegt)
3. Balken (die dinger zum schlagen)
Das Programm ist nochnicht fertig und zurzeit nicht zum spielen geeignet..
so mein Problem ist ich will beim Ball überprüfen ob es am Rand des Frames ankommt ( ball.posx > frame.getWidth z.B.)
naja die Sache ist nur das ich nicht von der ball klasse auf die des frames(j2d) zugreifen kann -- wieso ist das so??
Hier mal meine Quellcodes:
Hauptklasse:
Balkenklasse
Ballklasse!
ich hab lange überlegt ob ich nu mal in einem Forum fragen soll nach hilfe.. naja nun bin ich an einem Punkt angelangt wo mein Wissen nichtmehr ausreicht um mein Problem zu lösen(bin auch nochnicht so lange bei Java dabei )
Gut also jetz zum Problem:
Ich habe 3 Klassen:
1. Das Programm (hier wird der Frame erstellt und alles aktualisiert bei Bewegung)
2. Ball (halt der Ball der im Feld rumfliegt)
3. Balken (die dinger zum schlagen)
Das Programm ist nochnicht fertig und zurzeit nicht zum spielen geeignet..
so mein Problem ist ich will beim Ball überprüfen ob es am Rand des Frames ankommt ( ball.posx > frame.getWidth z.B.)
naja die Sache ist nur das ich nicht von der ball klasse auf die des frames(j2d) zugreifen kann -- wieso ist das so??
Hier mal meine Quellcodes:
Hauptklasse:
Code:
package j2d;
import java.awt.*;
import java.awt.image.*;
import java.awt.geom.*;
import java.awt.event.*;
public class j2d extends Frame
{
Ball ball = new Ball();
Balken balken = new Balken();
public static j2d Flaeche;
public j2d()
{
ball.start();
addWindowListener(
new WindowAdapter() {
public void windowClosing( WindowEvent ev ) {
dispose();
System.exit( 0 ); } } );
setSize(800,600);
setTitle("Hallo");
setVisible(true);
addKeyListener(new MyKeyListener());
startAnimation();
}
public static void main(String args[])
{
Flaeche = new j2d();
}
public void startAnimation()
{
while (true) {
try{Thread.sleep(5);}
catch(InterruptedException e){}
repaint();
}
}
public void paint( Graphics g )
{
g.fillOval(ball.posx, ball.posy, ball.hoehe, ball.breite);
g.setColor(Color.MAGENTA);
g.fillRect(balken.posx, balken.posy, balken.breite, balken.hoehe);
g.setColor(Color.ORANGE);
g.fillRect(balken.pos2x, balken.pos2y, balken.breite, balken.hoehe);
}
/*Events*/
class MyKeyListener
extends KeyAdapter
{
public void keyPressed(KeyEvent event)
{
balken.Balkenbeweg(event.getKeyCode());
}
}
}
Balkenklasse
Code:
/*
* Balken.java
*
* Created on 10. Juni 2006, 14:30
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package j2d;
import java.util.Random.*;
import java.awt.*;
import java.awt.image.*;
import java.awt.geom.*;
import java.awt.event.*;
import java.util.Random;
/**
*
* @author user
*/
public class Balken
{
public int posx=10;
public int posy=10;
public int pos2x=500;
public int pos2y=10;
public int breite=15;
public int hoehe=100;
public Balken()
{
}
public void Balkenbeweg(int event)
{
if(event == KeyEvent.VK_UP)
posy -=10;
if(event == KeyEvent.VK_DOWN)
posy +=10;
if(event == KeyEvent.VK_W)
pos2y -=10;
if(event == KeyEvent.VK_S)
pos2y +=10;
Flaeche.
}
}
Ballklasse!
Code:
/*
* Ball.java
*
* Created on 10. Juni 2006, 00:26
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package j2d;
import java.util.Random.*;
import java.awt.*;
import java.awt.image.*;
import java.awt.geom.*;
import java.awt.event.*;
import java.util.Random;
/**
*
* @author user
*/
public class Ball extends Thread
{
Random zufall = new Random();
public int posy=250;
public int posx=300;
public int hoehe=50;
public int breite=50;
public int bewegx=+1;
public int bewegy=+1;
public int rechtsrand=800;
public int untenrand=600;
public Ball()
{
}
public void run()
{
while(true)
{
Ballbewegen();
try{Thread.sleep(5);}
catch(InterruptedException e){}
}
}
public void Ballbewegen()
{
posx += bewegx;
posy += bewegy;
if(posx + breite > rechtsrand-1)
links();
if(posx < 1)
rechts();
if(posy + hoehe > untenrand-1)
hoch();
if(posy < 26)
runter();
}
/**************/
/*Ballrichtung*/
/*korrigieren */
/**************/
public void rechts()
{
bewegx=+1 * (1+ zufall.nextInt()%3);
}
public void links()
{
bewegx=-1 * (1+ zufall.nextInt()%3);
}
public void runter()
{
bewegy=+1;
}
public void hoch()
{
bewegy=-1;
}
}