2013-04-27 3 views
0

У меня есть эта программа, где я хочу, чтобы скорость мяча двигалась быстрее, когда на нее нажимали. Вот два класса:Не удается запустить мою программу java

import processing.core.*; 
public class Ball { 

int xPos = 0; 
int xDir = 1; 
int speed = 1; 
PApplet parent; 


Ball (int _x, PApplet p){ 
xPos = _x; 
parent = p; 
} 

void move() { 
xPos = xPos + xDir * speed; 
if (xPos>400-20 || xPos<20) 
{ 
xDir =-xDir; 
    } 
} 

void speedUp() { 
    speed=speed+1; 
} 

void display() { 
parent.ellipse(xPos, 200, 40, 40); 
} 

void run(){ 
     move(); 
     display(); 
    } 
} 

и

import processing.core.*; 
public class Game extends PApplet{ 

public static void main(String args[]){ 
    PApplet.main(new String[] { "--present", "Game" }); 
} 

Ball b1 = new Ball(xPos,this); 

public void setup() 
{ 
    size (400, 400); 
    smooth(); 
    background(0); 
    noStroke(); 
    fill(255); 
} 

public void draw() 
{ 
    background(0); 
    b1.run(); 
} 

public void mousePressed() 
    { 
    if (dist(mouseX, mouseY, xPos, 200)<=20) 
    { 
     b1.speedUp(); 
    } 
    } 
} 

Я не могу найти способ, чтобы ссылаться на XPOS в моей игре клиента так, когда я нажимаю на мяч, и он будет набирать скорость. Я использую обработку, хотя я не слишком хорошо знаком с ней. Но это требование в моем проекте. Нужна помощь в отчаянии!

+1

'getXPos()' может быть хорошим способом добавить в Ball ... –

ответ

0
Ball b1 = new Ball(xPos,this); 

У вас есть xpos в родительском апплете? иначе вам нужно передать некоторый стартовый номер, например 10, и показать getXPos() в Ball.

Также я вижу, что вы вызываете метод run в методе draw. кто звонит? Если его только при перекраивании, то мяч не будет анимированным. Нужно сделать нить, чтобы мяч двигался каждую секунду или около того.

ПРИМЕЧАНИЕ Это должно быть очевидно: даже если вы добавите getXPos() в Ball, вы не сможете использовать его в конструкторе Ball. Поэтому вы должны засеять его другой ценностью.