⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sprite.java

📁 一个用Java applet实现的B-Tree算法
💻 JAVA
字号:
/**  By Kristi Thompson and Sean McLaughlin
 *
 *	  April 10 & 11, 1997
 *
 *    CISC 235 - Information Structures (Winter 1997) taught by David Alex Lamb
 *
 *    Dept of Computer Science
 *    Queen's University, Kingston
 *
 *    kristi@merlan.ca , seanster@merlan.ca
 *
 *    http://qlink.queensu.ca/~3sm79/BplusTree
 *
 * Feel free to copy and modify this applet, but please give credit
 * to the original author where appropriate
 *
 * This applet was inspired by and partly based upon the BST Search Tree Applet
 * by James Stewart.
 *
 * http://www.dgp.toronto.edu/people/JamesStewart/applets/bst/bst-property.html
 *
 */

import java.awt.*;


/** A Sprite is an animated moveable object This is an abstract class*/

abstract class Sprite extends java.awt.Canvas
{ 
static final int	DEF_WIDTH	= 20; // Size of an individual sprite
static final int	DEF_HEIGHT	= 20;

static final int	DEF_SPACE_X	= 10;	// When a new sprite is created, move over this much
static final int	DEF_SPACE_Y	= 10;	// When a new sprite is created, move over this much

static final int	ANIM_PIX	= 1;	// # of pixels to move before redrawing

static final Color	DEF_BACK_COLOR	= Color.white;
static final Color	DEF_LINE_COLOR	= Color.black;

static final int    DEF_SPEED	= 250; // Pixels/sec

//////////////////////////////////////////////////////////////

int speed;  // Pixels/sec


//////////////////////////////////////////////////////////////

/**	//////////////////////////////////////////////////////////
	//
	// Constructor
	//
*/

	public Sprite()
	{
		speed = DEF_SPEED;
		//width = DEF_WIDTH;
		//height = DEF_HEIGHT;
		//setBackground(DEF_BACK_COLOR);
		//setColor(DEF_LINE_COLOR);
	}




/**	//////////////////////////////////////////////////////////
	//
	// paint
	//
*/

	public void paint( Graphics g )
	{

		// Draw the Outline

		g.drawRect( bounds().x, bounds().y, bounds().width, bounds().height);


	}


/**	/////////////////////////////////////
	//
	// dmove_A - move a certain distance - in an animated manner though
	//
*/

	public void dmove_A( int dx, int dy )
	{
	int i;

	int x, xo, xf, xdist;
	int y, yo, yf, ydist;
	int time, steps, delay, inc;
	int rise, run;
	double slope;

	boolean Axis;
	boolean xA = true, yA = false;


		if ( dx == 0 && dy == 0 ) return; // Why bother?

		if ( isShowing() == false )
		{
			dmove( dx, dy);
			return;
		}

		x = bounds().x;	// Our initial position
		y = bounds().y;

		xo = x; // Primitives don't copy handles do they?
		yo = y;

		xf = x + dx;	// Our final position
		yf = y + dy;

		xdist = Math.abs(dx);			// Distance to go
		ydist = Math.abs(dy);

		if ( ydist > xdist )
		{
			Axis = yA;
			rise = dx;
			run  = dy;
		}
		else
		{ 
			Axis = xA;
			rise = dy;
			run  = dx;
		}

		slope = (double) rise / run; // Run is the longer axis

		time = run / speed;		// Time to cover distance
		steps = run / ANIM_PIX;	// # of steps to cover distance

		if ( steps < 1 )
		{
			delay = 0;
		}
		else
		{
			delay = (int) ((double) ((double) time / (double) steps) * 1000);		// delay needed between steps to maintain speed
		}

			// Set the correct increment
			// if the distance is negligible, don't even move until the final positioning

		if ( run < 0 )
		{
			inc = -ANIM_PIX;
		}
		else
		{
			inc = ANIM_PIX;
		}


			// Move in Steps

		for ( i = 1; i < steps; i++)
		{	
			if ( Axis == xA )
			{
				x = x + inc;
				y = yo + ((int) (i * inc * slope));
				
			}
			else
			{
				y = y + inc;
				x = xo + ((int) ( (double) i * inc * slope));
			}

			move( x, y );	// Finally get to move!

			repaint();

			if ( isShowing() )
			{
				try
				{
				Thread.sleep( delay );	// Pause to maintain speed and give time to redraw
				}
				catch (InterruptedException e)
				{}
			}

		}

		move( xf, yf);	// Move to the precise spot (needed if ANIM_PIX is large)
		repaint();

	}


/** ///////////////////////////////////
	//
	// move_A - move to a certain spot in an animated manner
	//
*/
	public void move_A( int x, int y )
	{

		dmove_A( x - bounds().x, y - bounds().y);

	}



/**	/////////////////////////////////////
	//
	// dmove - move a certain in a NON-animated manner though
	//
*/

	public void dmove( int dx, int dy )
	{

		move( bounds().x + dx, bounds().y + dy);

	}


/**	//////////////////////////////////////////////////////////
	//
	// resize self-adjust size according to object contents
	//
*/

	public void resize()
	{
		// Do nothing
	}


/**	//////////////////////////////////////////////////////////
	//
	// Move our bottom-leftmost child to the left edge, and all bottommost
	// children against the right edge returned.
	// and then centre ourselves
	// between the immediate left child's leftmost edge, and the
	// immediate right child's rightmost edge.
	//
	// If we don't have children, position ourselves at the left edge
	//
	// This of course constructs a tree shape.
*/

	public int Reshape_Tree( int left) // Returns right edge
	{
		return (left);
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -