1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
use chess::{Board, Square};
use method_shorthands::methods::UW;
use crate::{square::From, game::ui_settings::*};
pub fn display_board(board: Board, ui_settings: UISettings) {
let mut display = String::from("
_______________________________
8 -/+/-/+/-/+/-/+ |
7 +/-/+/-/+/-/+/- |
6 -/+/-/+/-/+/-/+ |
5 +/-/+/-/+/-/+/- |
4 -/+/-/+/-/+/-/+ |
3 +/-/+/-/+/-/+/- |
2 -/+/-/+/-/+/-/+ |
1 +/-/+/-/+/-/+/- |
A/*/C/D/E/F/G/H
");
for r in 0..8 {
for f in 0..8 {
let square = Square::from_rf(r, f);
if let Some(piece) = board.piece_on(square) {
let idx = (20 * (-1 * r as i32 + 7) + 2 * f as i32 + 36) as usize;
display.replace_range(idx..=idx, &(piece.to_string(board.color_on(square).uw())));
}
}
}
if ui_settings.swap_colors {
let mut vec: Vec<char> = display.chars().collect();
for k in 0..vec.len() {
if k == 192 { break; }
vec[k] = match vec[k].is_uppercase() {
false => vec[k].to_ascii_uppercase(),
true => vec[k].to_ascii_lowercase()
}
}
display = vec.iter().collect();
}
display = display.chars()
.map(|char| if char == 'K' { char::from_u32(0x2654).uw() } else { char })
.map(|char| if char == 'Q' { char::from_u32(0x2655).uw() } else { char })
.map(|char| if char == 'R' { char::from_u32(0x2656).uw() } else { char })
.map(|char| if char == 'B' { char::from_u32(0x2657).uw() } else { char })
.map(|char| if char == 'N' { char::from_u32(0x2658).uw() } else { char })
.map(|char| if char == 'P' { char::from_u32(0x2659).uw() } else { char })
.map(|char| if char == 'k' { char::from_u32(0x265A).uw() } else { char })
.map(|char| if char == 'q' { char::from_u32(0x265B).uw() } else { char })
.map(|char| if char == 'r' { char::from_u32(0x265C).uw() } else { char })
.map(|char| if char == 'b' { char::from_u32(0x265D).uw() } else { char })
.map(|char| if char == 'n' { char::from_u32(0x265E).uw() } else { char })
.map(|char| if char == 'p' { char::from_u32(0x265F).uw() } else { char })
.map(|char| if char == '*' { 'B' } else { char })
.collect();
display = display.replace("/", " ");
println!("{display}");
}