Simplify pawn move
This commit is contained in:
		
							parent
							
								
									258d375dde
								
							
						
					
					
						commit
						bd1c0b3c6e
					
				@ -164,6 +164,7 @@ func (b *Board) movePawn(position string) error {
 | 
			
		||||
	var (
 | 
			
		||||
		x     int
 | 
			
		||||
		y     int
 | 
			
		||||
		y_    int
 | 
			
		||||
		piece *Piece
 | 
			
		||||
		err   error
 | 
			
		||||
	)
 | 
			
		||||
@ -174,19 +175,34 @@ func (b *Board) movePawn(position string) error {
 | 
			
		||||
 | 
			
		||||
	// TODO: implement diagonal pawn attacks
 | 
			
		||||
 | 
			
		||||
	for yi := 0; yi < 8; yi++ {
 | 
			
		||||
		piece = b.tiles[x][yi]
 | 
			
		||||
		if piece != nil && piece.Name == Pawn && piece.Color == b.turn {
 | 
			
		||||
			// TODO: assert move is valid:
 | 
			
		||||
			// * 2 moves from start position
 | 
			
		||||
			// * 1 move otherwise
 | 
			
		||||
			// * diagonal if attacking
 | 
			
		||||
			b.tiles[x][y] = piece
 | 
			
		||||
			b.tiles[x][yi] = nil
 | 
			
		||||
			return nil
 | 
			
		||||
		}
 | 
			
		||||
	if b.turn == Light {
 | 
			
		||||
		y_ = y + 1
 | 
			
		||||
	} else {
 | 
			
		||||
		y_ = y - 1
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	piece = b.tiles[x][y_]
 | 
			
		||||
	if piece == nil {
 | 
			
		||||
		if b.turn == Light {
 | 
			
		||||
			y_ = y + 2
 | 
			
		||||
		} else {
 | 
			
		||||
			y_ = y - 2
 | 
			
		||||
		}
 | 
			
		||||
		piece = b.tiles[x][y_]
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if piece == nil {
 | 
			
		||||
		return fmt.Errorf("no pawn found that can move to %s", position)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	b.tiles[x][y_] = nil
 | 
			
		||||
	b.tiles[x][y] = piece
 | 
			
		||||
 | 
			
		||||
	// TODO: assert move is valid:
 | 
			
		||||
	// * 2 moves from start position
 | 
			
		||||
	// * 1 move otherwise
 | 
			
		||||
	// * diagonal if attacking
 | 
			
		||||
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user