All pastes #551230 Raw Edit

Anonymous

public text v1 · immutable
·published 2007-06-08 18:30 UTC
rendered paste body
-(*Path) find_horizontal_path_x: (int) newx 
						  and_y: (int) newy {
	// Where the piece is currently. 
	// Piece wants to goto: (newx, newy).						
						
	int oldx = [self x];
    int oldy = [self y];

	// Create a Path object, see Path.h for description.

	Path *path = [[path alloc] init];

	// dx, dy are the differences between newx and oldx, etc.

	int dx = 0;
	int dy = 0;

	// Some variables

	int px = 0;
	int py = 0;

	// Try to establish which direction (horizontally) the piece is moving.	
	
	if ( oldy == newy ) {
		// Check there is no vertical movement
		if ( oldx > newx ) {
			// Must be moving to left
			px = oldx;
			py = oldy;
			dx = oldx - newx;
			while ( dx > 0 ) {
				px--;
				dx--;
				[path add_coordinate_x: px and_y: py];
			}
			return path;
		}
		else {
			if ( oldx < newx ) {
				// Must be moving to the right
				px = oldx;
				py = oldy;
				dx = newx - oldx;
				while ( dx > 0 ) {
					px++;
					dx--;
					[path add_coordinate_x: px and_y: py];
				}
				return path;
			}
			else {
				// oldx == newx ?
				NSLog ( @"There must be an error." );
				break;
			}
		}
	}
    else {
		// Seems to be vertical movement
		NSLog ( @"There must be an error." );
		break;
	}
	
	// If this code is being executed it's because there's an error.
	
	return nil;