chess: code reformatting

master
TiynGER 4 years ago
parent e30ff1f3ba
commit f749f66c3c

@ -227,7 +227,7 @@ proc gen_rook_dests(game: Game, field: int, color: Color): seq[int] =
for move in Rook_Moves: for move in Rook_Moves:
dest = field+move dest = field+move
target = game.pieces.get_field(dest) target = game.pieces.get_field(dest)
while (target != 999 and (ord(color) * target <= 0) or target == EnPassantID): while (target != 999 and (ord(color) * target <= 0) or target == EnPassantID):
res.add(dest) res.add(dest)
if (ord(color) * target < 0 and ord(color) * target > -EnPassantID): if (ord(color) * target < 0 and ord(color) * target > -EnPassantID):
break break
@ -247,7 +247,7 @@ proc gen_queen_dests(game: Game, field: int, color: Color): seq[int] =
for move in Queen_Moves: for move in Queen_Moves:
dest = field+move dest = field+move
target = game.pieces.get_field(dest) target = game.pieces.get_field(dest)
while (target != 999 and (ord(color) * target <= 0) or target == EnPassantID): while (target != 999 and (ord(color) * target <= 0) or target == EnPassantID):
res.add(dest) res.add(dest)
if (ord(color) * target < 0 and ord(color) * target > -EnPassantID): if (ord(color) * target < 0 and ord(color) * target > -EnPassantID):
break break
@ -267,9 +267,9 @@ proc gen_king_castle_dest(game: Game, field: int, color: Color): seq[int] =
var half_dest: int var half_dest: int
var half_target: int var half_target: int
for castle in King_Moves_White_Castle: for castle in King_Moves_White_Castle:
dest = field + castle dest = field + castle
target = game.pieces.get_field(dest) target = game.pieces.get_field(dest)
half_dest = field + (int) castle/2 half_dest = field + (int)castle/2
half_target = game.pieces.get_field(half_dest) half_target = game.pieces.get_field(half_dest)
if (target == 999 or (target != 0)): if (target == 999 or (target != 0)):
continue continue
@ -343,7 +343,8 @@ proc gen_pawn_double_dests(game: Game, field: int, color: Color): seq[int] =
for doubles in Pawn_Moves_White_Double: for doubles in Pawn_Moves_White_Double:
dest = field + doubles * ord(color) dest = field + doubles * ord(color)
target = game.pieces.get_field(dest) target = game.pieces.get_field(dest)
if (game.moved.get_field(field) or (target != 0) or (game.pieces.get_field(dest+(S*ord(color))) != 0)): if (game.moved.get_field(field) or (target != 0) or (
game.pieces.get_field(dest+(S*ord(color))) != 0)):
continue continue
res.add(dest) res.add(dest)
return res return res
@ -380,8 +381,8 @@ proc piece_on(game: Game, color: Color, sequence: seq[int],
proc is_attacked(game: Game, position: int, color: Color): bool = proc is_attacked(game: Game, position: int, color: Color): bool =
## Check if a field is attacked by the opposite of `color` in a `game`. ## Check if a field is attacked by the opposite of `color` in a `game`.
var attacked = false var attacked = false
attacked = attacked or game.piece_on(color, game.gen_pawn_attack_dests(position, attacked = attacked or game.piece_on(color, game.gen_pawn_attack_dests(
color), PawnID) position, color), PawnID)
attacked = attacked or game.piece_on(color, game.gen_queen_dests(position, attacked = attacked or game.piece_on(color, game.gen_queen_dests(position,
color), QueenID) color), QueenID)
attacked = attacked or game.piece_on(color, game.gen_king_dests(position, attacked = attacked or game.piece_on(color, game.gen_king_dests(position,
@ -429,7 +430,7 @@ proc remove_en_passant(pieces: var Pieces, color: Color): void =
## Removes every en passant of given `color` from the `game`. ## Removes every en passant of given `color` from the `game`.
for field in pieces.low..pieces.high: for field in pieces.low..pieces.high:
if pieces.get_field(field) == ord(color) * EnPassantID: if pieces.get_field(field) == ord(color) * EnPassantID:
pieces.set_field(field,0) pieces.set_field(field, 0)
proc gen_legal_knight_moves(game: Game, field: int, color: Color): seq[Move] = proc gen_legal_knight_moves(game: Game, field: int, color: Color): seq[Move] =
## Generates all legal knight moves starting from `field` in a `game` for a `color`. ## Generates all legal knight moves starting from `field` in a `game` for a `color`.
@ -599,7 +600,7 @@ proc checked_move*(game: var Game, move: Move): bool {.discardable.} =
var move: Move var move: Move
move = get_move(start, dest, color) move = get_move(start, dest, color)
if (piece == PawnID * ord(color)): if (piece == PawnID * ord(color)):
create_en_passant = dest in game.gen_pawn_double_dests(start,color) create_en_passant = dest in game.gen_pawn_double_dests(start, color)
captured_en_passant = (game.pieces.get_field(dest) == -1 * ord(color) * EnPassantID) captured_en_passant = (game.pieces.get_field(dest) == -1 * ord(color) * EnPassantID)
sequence.add(game.gen_legal_moves(start, color)) sequence.add(game.gen_legal_moves(start, color))
if (move in sequence): if (move in sequence):
@ -612,10 +613,11 @@ proc checked_move*(game: var Game, move: Move): bool {.discardable.} =
game.unchecked_move(start, dest) game.unchecked_move(start, dest)
game.to_move = Color(ord(game.to_move)*(-1)) game.to_move = Color(ord(game.to_move)*(-1))
if create_en_passant: if create_en_passant:
game.pieces.set_field(dest-(N*ord(color)),EnPassantID * ord(color)) game.pieces.set_field(dest-(N*ord(color)), EnPassantID * ord(color))
if captured_en_passant: if captured_en_passant:
game.pieces.set_field(dest-(N*ord(color)),0) game.pieces.set_field(dest-(N*ord(color)), 0)
if ((90 < dest and dest < 99) or (20 < dest and dest < 29)) and game.pieces.get_field(dest) == PawnID * ord(color): if ((90 < dest and dest < 99) or (20 < dest and dest < 29)) and
game.pieces.get_field(dest) == PawnID * ord(color):
game.pieces.set_field(dest, prom) game.pieces.set_field(dest, prom)
return true return true
except IndexDefect, ValueError: except IndexDefect, ValueError:

Loading…
Cancel
Save