jag ska göra ett program där jag skapar en instans av klassen Ball med centrum vid 100,200 och radies 20. jag ska göra en egen fil med main, som kallar på följande fil, hur gör jag? Jag antar att du ska skapa en ny boll. hmm tack det var ju inte så svårt Hello. Så här ser BallWorld ut, får inte rätt på det Detta är problemet jag har fått. Ok, det du verkar glömma är att du måste instansiera Ball classen. Aha tackar Peter funkade perfekt Hello. Japp exakt en skoluppgift, fast det är bara en övning vi har ingen inlämning eller så, men jag har suttit länge nu, så jag har börjat fatta det nu. Mycket tack vare att du hjälpte mig. TackarJava problem
import java.awt.*;
public class Ball{
private int centerX, centerY, radius;
private int velX, velY;
private int preassure;
private Color color;
private BallWorld ballWorld;
public Ball(int x, int y, int r){
centerX = x;
centerY = y;
radius = r;
velX = 10;
velY = 20;
preassure = 10;
}
public Ball(int x, int y, int r, Color c, BallWorld world){
centerX = x;
centerY = y;
radius = r;
color = c;
velX = 10;
velY = 20;
preassure = 10;
ballWorld = world;
world.addBall(this);
world.repaint();
}
public void move(){
try{Thread.sleep(500);}catch(Exception e){}
centerX = centerX + velX;
centerY = centerY + velY;
if (ballWorld != null) ballWorld.repaint();
}
public void move(int steps){
for(int i = 0; i<steps; i= i+1)
move();
}
public int getVelX(){
return velX;
}
public int getVelY(){
return velY;
}
public void setVelX(int vx){
velX = vx;
}
public void setVelY(int vy){
velY = vy;
}
public int getCenterX(){
return centerX;
}
public int getCenterY(){
return centerY;
}
public int getRadius(){
return radius;
}
public void setRadius(int r){
radius=r;
}
public void inflate(){
try{Thread.sleep(300);}catch(Exception e){}
radius = radius + preassure;
if(ballWorld !=null) ballWorld.repaint();
}
public void setPreassure(int x){
preassure = x;
}
public void report(){
System.out.println("Ball with radius "+radius+
" and coordinates ("+ centerX +","+centerY+ ")");
}
public void paint(Graphics pen){
pen.setColor(color);
pen.fillOval(centerX-radius, centerY-radius, 2*radius, 2*radius);
}
}
Med vänliga hälsningar AndersSv: Java problem
<code>Ball myBall = new Ball(100,200,20);</code>Sv: Java problem
ett annat problem nu om jag anropar BallWorld så öppnas ett fönster där jag vill få fram min boll. för att göra detta anropar jag Ball igen.
Som jag fattar det så ska jag kalla på
public Ball(int x, int y, int r, Color c, BallWorld world){
centerX = x;
centerY = y;
radius = r;
color = c;
velX = 10;
velY = 20;
preassure = 10;
ballWorld = world;
world.addBall(this);
world.repaint();
}
men jag får inte rätt på det
hur ska jag skriva
Ball testBoll = new Ball(100,200,20,?, ?);
hur ska jag skriva där ? ärSv: Java problem
Som det ser ut så måste du använda den konstuktorn för att visa bollen.
Jag antar att du har tillgång till BallWorld klassen,
då är det bara skapa en ny BallWorld och skicka med på samma sätt som med Ball, typ:
<code>BallWorld myBallWorld = new BallWorld();</code>
Du får kolla i BallWorld vilka parameterkrav som gäller för instansiering.
Sen är det bara att skapa en boll med myBallWorld, tex en röd boll:
<code>Ball testBoll = new Ball(100,200,20,new Color(0xff0000), myBallWorld);</code>
PeterSv: Java problem
import java.util.*;
import java.awt.*;
import java.awt.event.*;
class BallWorld extends Frame{
private static final int WIDTH = 600;
private static final int HEIGHT= 700;
private Vector theBalls;
public BallWorld(){
setSize(WIDTH,HEIGHT);
new StickyQuiter("South",this,"Quit",Color.black);
setBackground(Color.white);
theBalls = new Vector();
setVisible(true);
}
public void addBall(Ball b){
theBalls.addElement(b);
}
public void paint(Graphics g){
for(int i = 0;i<theBalls.size();i++){
((Ball)theBalls.elementAt(i)).paint(g);
}
}
}
class StickyQuiter extends Button implements ActionListener{
public StickyQuiter(String place, Frame f){
super("bye ...");
f.add(place,this);
addActionListener(this);
}
public StickyQuiter(String place, Frame f, String label, Color c){
super(label);
setForeground(Color.black);
f.add(place,this);
addActionListener(this);
}
public void actionPerformed(ActionEvent e){
System.exit(0);
}
}Sv: Java problem
>Så här ser BallWorld ut, får inte rätt på det
Vad får du inte rätt på? Det finns bara en konstruktor i BallWorld. Nämligen BallWorld().
Eller är det något annat fel?
PeterSv: Java problem
För att kunna se de bollar Du skapar skall Du använda en BallWorld. En sådan är ett fönster där de bollarna som skapas i världen syns som runda och färgade objekt.
Så, gör ett program där du skapar en instans av klassen BallWorld (kalla den för theWorld, konstrueraren för BallWorld tar inga argument).
Skapa också en instans av klassen Ball som tillhör denna värld. Till detta finns en konstruerare som tar som argument inte bara centrums
koordinater och bollens radies, utom också en färg och den BallWorld bollen skall tillhöra.
Genom att skriva så här:
public class Bollen{
public static void main(String[] argv){
BallWorld myBallWorld = new BallWorld(); //får fram fönstert
}
}
Men jag kan inte få mina bollar att synas, hur ska jag göra för att få en boll in i fönstratSv: Java problem
<code>public class Bollen{
public static void main(String[] argv){
BallWorld myBallWorld = new BallWorld(); //får fram fönstert
/*
här instansierar du bollen. OCH använder BallWorld som parameter
så att den röda fina bollen har någonstans att leva i.
*/
Ball b = new Ball(200,200,20,new java.awt.Color(0xff0000),myBallWorld);
}</code>
Lycka till
Peter.Sv: Java problem
ska skriva så att jag får bollen att flytta sig tre gånger, alltså ge bollen nya värden, Får dock inte rätt på det.Sv: Java problem
Det låter mer och mer som om du har en uppgift från skolan!? :-)
Hur som helst så tror jag du fått en metod som gör just detta åt dig i classen Ball, move heter den.
om jag inte minns helt fel så tar den en int som anger hur många steg bollen ska flyttas.
peterSv: Java problem