const PIECE_NAMES: [&str; 15] = [
" ", "帅", "仕", "相", "马", "车", "炮", "兵",
"将", "士", "象", "马", "车", "炮", "卒"
];
fn red(s: &str) -> String { format!("\x1b[1;31m{}\x1b[0m", s) }
fn blue(s: &str) -> String { format!("\x1b[1;34m{}\x1b[0m", s) }
fn yellow(s: &str) -> String { format!("\x1b[1;33m{}\x1b[0m", s) }
fn green(s: &str) -> String { format!("\x1b[1;32m{}\x1b[0m"");
let _ = io::stdout().flush();
println!(); println!("{}", yellow(" ╔══════════ 中国象棋 ══════════╗"));
println!();
println!(" 0 1 2 3 4 5 6 7 8"); println!(" +----+----+----+----+----+----+----+----+----+");
for r in 0..10 {
print!(" {} │", r);
for c in 0..9 { let p = b.board[r][c];
let is_sel = r as i32 == sel_r && c as i32 == sel_c;
let is_tgt = targets.contains(&(r as i32, c as i32));
let name = if p == 0 { " " } else { PIECE_NAMES[p as usize] };
let mut cell = name.to_string();
if is_sel {
cell = bg_select(&cell);
} else if is_tgt { cell = bg_target(&cell);
}
if p != 0 {
cell = if is_red(p) { red(&cell) } else { blue(&cell) };
}
print!(" {} │", cell);
}
println!();
if r < 9 {
println!(" +----+----+----+----+----+----+----+----+----+");
}
}
println!(" +----+----+----+----+----+----+----+----+----+");
println!();
if b.red_turn {
println!("{}", green(" ► 轮到: 红方 (帅)"));
} else {
println!("{}", blue(" ► 轮到: 黑方 (将)"));
}
println!();
let _ = io::stdout().flush();
}
It shows board which puts pieces in cell instead of crossing points . How to modify it to represent a real chess board ?
Regard!

