Pionki szachowe
Twoim zadaniem będzie zamodelowanie bierek szachowych wraz z ich ruchem. Poniżej znajdziesz kilka wskazówek, które pomogą Ci w tym zadaniu.
-
Zdefiniuj typ wyliczeniowy
Chessman, który będzie reprezentował różne rodzaje bierek szachowych. Nazwy bierek:Pawn- pionekKnight- skoczekBishop- goniecRook- wieżaQueen- królowaKing- król
-
Zdefiniuj strukturę
Position, która będzie reprezentować położenie bierki na planszy szachowej. Możesz użyć następującego kodu jako punktu wyjścia:#[derive(Debug)] struct Position { x: u8, y: u8, } -
Rozszerz typ
Chessmano atrybutypositionorazcolor. Atrybutpositionpowinien być typuPosition, acolorpowinien być typu wyliczeniowego i oznaczać dwa możliwe kolory:WhiteiBlack. -
Zdefiniuj metodę
move, która będzie przyjmować nową pozycję i aktualizować położenie bierki na planszy o następującej sygnaturze:impl Chessman { fn move(&mut self, new_position: Position) -> bool { todo!() } }Metoda powinna zmieniać położenie bierki na planszy tylko wtedy jeśli nowa pozycja jest poprawna dla danej bierki (względem jej aktualnej pozycji). Jeśli nowa pozycja jest błędna, metoda powinna zwrócić
false, w przeciwnym razietrue.Opcjonalnie, uwzględnij możliwy kierunek poruszania się pionków (
Pawn) w zależności od koloru. Pionki białe poruszają się w górę planszy, a czarne w dół. -
Napisz testy jednostkowe dla każdej bierki, które sprawdzą czy metoda
movedziała poprawnie. Możesz użyć następującego kodu jako punktu wyjścia:#[cfg(test)] mod tests { use super::*; #[test] fn test_pawn_move() { let mut pawn = Chessman::Pawn { position: Position { x: 1, y: 2 }, color: Color::White }; assert_eq!(pawn.move(Position { x: 1, y: 3 }), true); assert_eq!(pawn.move(Position { x: 1, y: 5 }), false); } // Dodaj testy dla pozostałych bierek }