aboutsummaryrefslogtreecommitdiff
path: root/src/square.rs
diff options
context:
space:
mode:
authoreug-vs <eugene@eug-vs.xyz>2023-01-28 00:22:44 +0300
committereug-vs <eugene@eug-vs.xyz>2023-01-28 00:22:44 +0300
commit690af97aa6c49a8ad76e47a2cee0c0b23b84ae6e (patch)
tree8ea802d97031dd86827117b86a5cc40ff3285090 /src/square.rs
parentdbf3b8649c45aca6b80d9659363d3e878d54f4ef (diff)
downloadchessnost-690af97aa6c49a8ad76e47a2cee0c0b23b84ae6e.tar.gz
feat: implement read_move
Diffstat (limited to 'src/square.rs')
-rw-r--r--src/square.rs32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/square.rs b/src/square.rs
index efa682c..f26ed4d 100644
--- a/src/square.rs
+++ b/src/square.rs
@@ -1,3 +1,5 @@
+use std::str::Chars;
+
use crate::bitboard::Bitboard;
/// Aliases to board square indexes
@@ -49,6 +51,36 @@ impl Square {
pub fn east_one(&self) -> Self {
Self::from(*self as u8 + 1)
}
+
+ pub fn from_notation(chars: &mut Chars) -> Self {
+ let file = match chars.next() {
+ Some(ch) => {
+ match ch {
+ 'a' => 0,
+ 'b' => 1,
+ 'c' => 2,
+ 'd' => 3,
+ 'e' => 4,
+ 'f' => 5,
+ 'g' => 6,
+ 'h' => 7,
+ _ => panic!("Incorrect file!")
+ }
+ },
+ None => panic!("Missing file"),
+ };
+ let rank = match chars.next() {
+ Some(ch) => {
+ match ch.to_digit(10) {
+ Some(digit) => digit - 1,
+ None => panic!("Incorrect rank")
+ }
+ }
+ None => panic!("Missing rank")
+ };
+
+ Self::from_coords(rank as u8, file)
+ }
}