All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.refcodes.checkerboard.Player Maven / Gradle / Ivy

Go to download

Artifact for providing some easy means to visualize (state of) board games or (state of) cellular automatons.

There is a newer version: 1.1.1
Show newest version
package org.refcodes.checkerboard;

import org.refcodes.graphical.DraggableAccessor.DraggableBuilder;
import org.refcodes.graphical.DraggableAccessor.DraggableProperty;
import org.refcodes.graphical.Position.PositionBuilder;
import org.refcodes.graphical.Position.PositionProperty;
import org.refcodes.graphical.VisibleAccessor.VisibleBuilder;
import org.refcodes.graphical.VisibleAccessor.VisibleProperty;
import org.refcodes.mixin.StateAccessor.StateBuilder;
import org.refcodes.mixin.StateAccessor.StateMutator;
import org.refcodes.mixin.StateAccessor.StateProperty;
import org.refcodes.observer.Observable;

/**
 * A {@link Player} defines an actor (player) on a playground (checkerboard). It
 * is observable in order to signal observers (checkerboard) on state updates.
 *
 * @param  The state if the player (dead, alive, strong, weak, king, queen,
 *        Pac-Man, ghost, fire, wood, water, strong queen, weak king, etc).
 */
public interface Player extends PositionProperty, PositionBuilder>, Observable>, StateMutator, StateProperty, StateBuilder>, VisibleProperty, VisibleBuilder>, DraggableProperty, DraggableBuilder> {

	/**
	 * Causes the {@link Player} to blink.
	 */
	default void blink() {
		for ( int i = 0; i < 6; i++ ) {
			setVisible( !isVisible() );
			try {
				Thread.sleep( 150 );
			}
			catch ( InterruptedException ignore ) {}
		}
	}

}