Использовать объект с этим кодом? Обработка

Как я могу использовать код, который у меня есть сейчас, с объектом, где я могу хранить количество отскоков мяча и цвет (когда я добавляю случайный цвет) и скорость. Любые указатели или советы были бы благодарны. Я новичок в ООП, и это может меня сбить с толку. заранее спасибо

  float x;
  float y;
  float yspeed = 0;
  float xspeed = 0;
  float balldiameter = 10;
  float ballradius = balldiameter/2;

  void setup() {
  size (400,400);
  background (255);
  fill (0);
  ellipseMode(CENTER);
  smooth();
  noStroke();
  x = random(400);
  y = 0;
  }

  void draw() {
  mouseChecks();
  boundaryChecks();
  ballFunctions();
  keyFunctions();
  }

  void mouseChecks() {
    if (mousePressed == true) {
    x = mouseX;
    y = mouseY;
    yspeed = mouseY - pmouseY;
    xspeed = mouseX - pmouseX;
    }
  }

  void boundaryChecks() {
    if (y >= height - ballradius) {
      y = height - ballradius;
      yspeed = -yspeed/1.15;
    }
    if (y <= ballradius) {
      y = ballradius;
      yspeed = -yspeed/1.35;
    }
    if (x >= width -ballradius) {
      x = width -ballradius;
      xspeed = -xspeed/1.10;
    }
    if (x <= ballradius) {
      x = ballradius;
      xspeed = -xspeed/1.10;
     }
   }

   void ballFunctions() {
   if (balldiameter < 2) {
     balldiameter = 2;
     }
   if (balldiameter > 400) {
     balldiameter = 400;
     }
   ballradius = balldiameter/2;
   background(255); //should this be in here?
   ellipse (x,y,balldiameter,balldiameter);
   yspeed = yspeed += 1.63;
    // xspeed = xspeed+=1.63;
   y = y + yspeed;
   x = x + xspeed; 
   }
  void keyFunctions() {
    if (keyPressed) {
      if(keyCode == UP) {
      balldiameter +=1;
    }
    if (keyCode == DOWN) {
      balldiameter -=1;
      }
    }
   }

person choloboy    schedule 07.11.2012    source источник
comment
Я думаю, что вам нужно инкапсулировать все в функцию и решить, какие части объекта вы хотите установить в качестве переменных. Создайте аргумент для каждой части, которую вы хотите использовать в качестве переменной.   -  person Wolfpack'08    schedule 07.11.2012


Ответы (2)


вы, вероятно, захотите сделать следующее:
создайте новый файл с именем Ball.pde
В этом файле напишите:

public class Ball {
    public float x;
    public float y;
    public float yspeed;
    public float xspeed;
    public float diameter;
    public float radius;  

    public Ball(float initial_x, float initial_y, float diam) {
        this.x = initial_x;
        this.y = initial_y;
        this.xspeed = 0;
        this.yspeed = 0;
        this.diameter = diam;
        this.radius = diam/2;
    }

    public void move() {
       // movement stuff here
    }
}

Это даст вам очень простой класс Ball. Теперь вы можете использовать этот класс в своем основном файле скетча следующим образом:

Ball my_ball = new Ball(50, 50, 10);

вы можете получить доступ к членам шаров, используя:

my_ball.xspeed;
my_ball.yspeed;
my_ball.anything_you_defined_in_ball;

Это позволит вам хранить все соответствующие переменные для мяча в своем собственном классе. вы даже можете создать более 1.

Ball my_ball1 = new Ball(50, 50, 10);
Ball my_ball2 = new Ball(20, 20, 5);
person Serdalis    schedule 07.11.2012
comment
Почему Ball.ps? Разве это не должен быть Ball.pde? Или Ball.java? - person v.k.; 12.11.2012

Просто отметим, что в Proccesing вам не нужно создавать для этого новый файл, код может находиться либо в том же файле (очень плохая практика, как указано ниже), либо в новой вкладке IDE. Если вы используете Processing IDE, вы можете выбрать «новую вкладку» в меню со стрелкой справа, и он создаст для вас файл. Он будет иметь расширение «.pde».

person v.k.    schedule 07.11.2012
comment
Это должен быть комментарий. Очень плохая практика, чтобы все ваши классы были в одном файле. Новая вкладка в IDE — это новый файл. - person Serdalis; 12.11.2012
comment
Я не мог тогда комментировать... Я сказал, что не надо, не надо. Потому что в Processing обычно люди очень плохо знакомы с программированием (как и я), и я думаю, что иногда простота может быть важнее. В любом случае, спасибо, что указали на это. Я всегда учусь. Должен ли я скопировать и вставить это как комментарий? - person v.k.; 12.11.2012
comment
Ах, я вижу, мне не нравится, что правило не разрешает комментировать ... Тогда ваш ответ в порядке :) - person Serdalis; 12.11.2012