package greenfoot;

import java.util.Random;

import greenfoot.core.Simulation;
import greenfoot.core.WorldHandler;
import greenfoot.sound.MicLevelGrabber;
import greenfoot.sound.Sound;
import greenfoot.sound.SoundFactory;


| This utility class provides methods to control the simulation | and interact with the system. | | <h3>Key names</h3> | | <p>Part of the functionality provided by this class is the ability to | retrieve keyboard input. The methods getKey() and isKeyDown() are used | for this and they return/understand the following key names: | | <ul> | <li>"a", "b", .., "z" (alphabetical keys), "0".."9" (digits), most |* punctuation marks. getKey() also returns uppercase characters when * appropriate. * <li>"up", "down", "left", "right" (the cursor keys) * <li>"enter", "space", "tab", "escape", "backspace", "shift", "control" * <li>"F1", "F2", .., "F12" (the function keys) * </ul> * * @author Davin McCall * @version 2.7 */ public class Greenfoot{ private static Random randomGenerator = new Random(); /** * Sets the World to run to the one given. | This World will now be the main World that Greenfoot runs with on the | next act. | | @param world The World to switch running to, cannot be null. | public static void setWorld(World world) { if ( world == null ) { throw new NullPointerException("The given world cannot be null."); } WorldHandler.getInstance().setWorld(world, true); }
| Get the most recently pressed key, since the last time this method was | called. If no key was pressed since this method was last called, it | will return null. If more than one key was pressed, this returns only | the most recently pressed key. | | @return The name of the most recently pressed key | public static String getKey() { return WorldHandler.getInstance().getKeyboardManager().getKey(); }
| Check whether a given key is currently pressed down. | | @param keyName The name of the key to check | @return True if the key is down | public static boolean isKeyDown(String keyName) { return WorldHandler.getInstance().getKeyboardManager().isKeyDown(keyName); }
| Delay the current execution by a number of time steps. | The size of one time step is defined by the Greenfoot environment (the speed slider). | | @param time The number of steps the delay will last. | @see #setSpeed(int) | public static void delay(int time) { Simulation.getInstance().sleep(time); }
| Set the speed of the execution. | | @param speed The new speed. the value must be in the range (1..100) | public static void setSpeed(int speed) { Simulation.getInstance().setSpeed(speed); }
| Pause the execution. | public static void stop() { Simulation.getInstance().setPaused(true); }
| Run (or resume) the execution. | public static void start() { Simulation.getInstance().setPaused(false); }
| Return a random number between 0 (inclusive) and limit (exclusive). | | @param limit An upper limit which the returned random number will be smaller than. | @return A random number within 0 to (limit-1) range. | public static int getRandomNumber(int limit) { return randomGenerator.nextInt(limit); }
| Play sound from a file. The following formats are supported: AIFF, AU and | WAV. | | The file name may be an absolute path, a base name for a file located in | the project directory or in the sounds directory of the project | directory. | | @param soundFile Typically the name of a file in the sounds directory in | the project directory. | @throws IllegalArgumentException If the sound can not be loaded. | public static void playSound(final String soundFile) { Sound sound = SoundFactory.getInstance().createSound(soundFile, false); if ( sound != null) { sound.play(); } }
| True if the mouse has been pressed (changed from a non-pressed state to | being pressed) on the given object. If the parameter is an Actor the | method will only return true if the mouse has been pressed on the given | actor. If there are several actors at the same place, only the top most | actor will receive the press. | If the parameter is a World then true will be returned if the mouse was | pressed on the world background. If the parameter is null, | then true will be returned for any mouse press, independent of the target | pressed on. | | @param obj Typically one of Actor, World or null | @return True if the mouse has been pressed as explained above | public static boolean mousePressed(Object obj) { return WorldHandler.getInstance().getMouseManager().isMousePressed(obj); }
| True if the mouse has been released (changed from pressed to non-pressed) on the given | object. If the parameter is an Actor the method will only return true if | the mouse has been clicked on the given actor. If there are several | actors at the same place, only the top most actor will receive the click. | If the parameter is a World then true will be returned if the mouse was | clicked on the world background. If the parameter is null, | then true will be returned for any click, independent of the target | clicked on. Note that mouseClicked does not require the press to have | occurred on the parameter object, just that the release did. | | @param obj Typically one of Actor, World or null | @return True if the mouse has been clicked as explained above | public static boolean mouseClicked(Object obj) { return WorldHandler.getInstance().getMouseManager().isMouseClicked(obj); }
| True if the mouse is currently being dragged on the given object. The mouse is | considered to be dragged on an object if the drag started on that | object - even if the mouse has since been moved outside of that object. | | If the parameter is an Actor the method will only return true if the drag | started on the given actor. If there are several actors at the same | place, only the top most actor will receive the drag. | If the parameter is a World then true will be returned if the drag action | was started on the world background. If the parameter is null, | then true will be returned for any drag action, independent of the target | clicked on. | | @param obj Typically one of Actor, World or null | @return True if the mouse has been dragged as explained above | public static boolean mouseDragged(Object obj) { return WorldHandler.getInstance().getMouseManager().isMouseDragged(obj); }
| True if a mouse drag has ended. This happens when the mouse has been | dragged and the mouse button released. | | If the parameter is an Actor the method will only return true if the drag | started on the given actor. If there are several actors at the same | place, only the top most actor will receive the drag. | If the parameter is a World then true will be returned if the drag action | was started on the world background. If the parameter is null, | then true will be returned for any drag action, independent of the target | clicked on. | | @param obj | Typically one of Actor, World or null | @return True if the mouse has been dragged as explained above | public static boolean mouseDragEnded(Object obj) { return WorldHandler.getInstance().getMouseManager().isMouseDragEnded(obj); }
| True if the mouse has been moved on the given object. The mouse is | considered to be moved on an object if the mouse pointer is above | that object. | | If the parameter is an Actor the method will only return true if the move | is on the given actor. If there are several actors at the same | place, only the top most actor will receive the move. | If the parameter is a World then true will be returned if the move | was on the world background. If the parameter is null, | then true will be returned for any move, independent of the target | under the move location. | | @param obj Typically one of Actor, World or null | @return True if the mouse has been moved as explained above | public static boolean mouseMoved(Object obj) { return WorldHandler.getInstance().getMouseManager().isMouseMoved(obj); }
| Return a mouse info object with information about the state of the | mouse. | | @return The info about the current state of the mouse, or null if the mouse | cursor is outside the world boundary (unless being dragged). | public static MouseInfo getMouseInfo() { return WorldHandler.getInstance().getMouseManager().getMouseInfo(); }
| Get the microphone input level. This level is an approximation of the loudness | any noise that is currently being received by the microphone. | | @return The microphone input level (between 0 and 100, inclusive). | public static int getMicLevel() { return MicLevelGrabber.getInstance().getLevel(); }
| Get input from the user (and freeze the scenario while we are waiting). | The prompt String parameter will be shown to the user (e.g. "How many players?"), and the answer will be returned as a String. |* If you want to ask for a number, you can use methods like <tt>Integer.parseInt</tt> to turn * the returned String into a number. * <p> * This method can only be used when a world is in place and the scenario is running. | It returns null if that is not the case, or if the scenario is reset while the prompt | is being shown. | | @param prompt The prompt to show to the user. | @return The string that the user typed in. | public static String ask(String prompt) { return WorldHandler.getInstance().ask(prompt); } }

.   setWorld
.   getKey
.   isKeyDown
.   delay
.   setSpeed
.   stop
.   start
.   getRandomNumber
.   playSound
.   mousePressed
.   mouseClicked
.   mouseDragged
.   mouseDragEnded
.   mouseMoved
.   getMouseInfo
.   getMicLevel
.   ask




159 neLoCode + 113 LoComm