/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * JavaWorld Library, Copyright 2011 Bryan Chadwick * * * * FILE: ./world/test/Falling.java * * * * This file is part of JavaWorld. * * * * JavaWorld is free software: you can redistribute it and/or * * modify it under the terms of the GNU General Public License * * as published by the Free Software Foundation, either version * * 3 of the License, or (at your option) any later version. * * * * JavaWorld is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with JavaWorld. If not, see <http://www.gnu.org/licenses/>. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ package world.test; import image.*; import world.BigBang; /** Falling Balls Demo. When the mouse is dragged, balls are created * with a random upward velocity and then fall off the bottom of * the screen */ public class Falling{ public static void main(String[] s){ new BigBang(new ELoB()) .onDraw(new DrawPoints()) .onMouse(new AddPoint()) .onTick(new FallTick(), 0.04) .bigBang(); } } /** Function class to add a new Ball on mouse drag */ class AddPoint extends Random{ LoB apply(LoB w, int x, int y, String me){ if(!me.equals("drag"))return w; return new CLoB(randBall(x,y), w); } } /** Function Class to draw the World */ class DrawPoints{ Scene apply(LoB w){ return w.draw(new EmptyScene(400,400)); } } /** Function Class to move, gravitize, and filter the List of Balls */ class FallTick{ LoB apply(LoB w){ return w.gravity().move().filter(); } }