mirror of
https://github.com/processing/processing4.git
synced 2026-01-30 11:51:54 +01:00
123 lines
2.5 KiB
Java
123 lines
2.5 KiB
Java
import processing.core.*;
|
|
|
|
import java.applet.*;
|
|
import java.awt.*;
|
|
import java.awt.image.*;
|
|
import java.awt.event.*;
|
|
import java.io.*;
|
|
import java.net.*;
|
|
import java.text.*;
|
|
import java.util.*;
|
|
import java.util.zip.*;
|
|
import java.util.regex.*;
|
|
|
|
public class ArrayListClass extends PApplet {
|
|
|
|
/**
|
|
* ArrayList of objects
|
|
* by Daniel Shiffman.
|
|
*
|
|
* This example demonstrates how to use a Java ArrayList to store
|
|
* a variable number of objects. Items can be added and removed
|
|
* from the ArrayList.
|
|
*
|
|
* Click the mouse to add bouncing balls.
|
|
*/
|
|
|
|
ArrayList balls;
|
|
int ballWidth = 48;
|
|
|
|
public void setup() {
|
|
size(200, 200);
|
|
smooth();
|
|
noStroke();
|
|
|
|
// Create an empty ArrayList
|
|
balls = new ArrayList();
|
|
|
|
// Start by adding one element
|
|
balls.add(new Ball(width/2, 0, ballWidth));
|
|
}
|
|
|
|
public void draw() {
|
|
background(255);
|
|
|
|
// With an array, we say balls.length, with an ArrayList, we say balls.size()
|
|
// The length of an ArrayList is dynamic
|
|
// Notice how we are looping through the ArrayList backwards
|
|
// This is because we are deleting elements from the list
|
|
for (int i = balls.size()-1; i >= 0; i--) {
|
|
// An ArrayList doesn't know what it is storing so we have to cast the object coming out
|
|
Ball ball = (Ball) balls.get(i);
|
|
ball.move();
|
|
ball.display();
|
|
if (ball.finished()) {
|
|
// Items can be deleted with remove()
|
|
balls.remove(i);
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
public void mousePressed() {
|
|
// A new ball object is added to the ArrayList (by default to the end)
|
|
balls.add(new Ball(mouseX, mouseY, ballWidth));
|
|
}
|
|
|
|
// Simple bouncing ball class
|
|
|
|
class Ball {
|
|
|
|
float x;
|
|
float y;
|
|
float speed;
|
|
float gravity;
|
|
float w;
|
|
float life = 255;
|
|
|
|
Ball(float tempX, float tempY, float tempW) {
|
|
x = tempX;
|
|
y = tempY;
|
|
w = tempW;
|
|
speed = 0;
|
|
gravity = 0.1f;
|
|
}
|
|
|
|
public void move() {
|
|
// Add gravity to speed
|
|
speed = speed + gravity;
|
|
// Add speed to y location
|
|
y = y + speed;
|
|
// If square reaches the bottom
|
|
// Reverse speed
|
|
if (y > height) {
|
|
// Dampening
|
|
speed = speed * -0.8f;
|
|
y = height;
|
|
}
|
|
}
|
|
|
|
public boolean finished() {
|
|
// Balls fade out
|
|
life--;
|
|
if (life < 0) {
|
|
return true;
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public void display() {
|
|
// Display the circle
|
|
fill(0,life);
|
|
//stroke(0,life);
|
|
ellipse(x,y,w,w);
|
|
}
|
|
}
|
|
|
|
static public void main(String args[]) {
|
|
PApplet.main(new String[] { "ArrayListClass" });
|
|
}
|
|
}
|