Я пытаюсь написать метод, который позволит мне распечатывать позиции шахматной партии для 8 верхних позиций.
У меня есть допустимая переменная, которая представляет собой массив из 32 записей, каждая из которых содержит шахматную фигуру * chesscolor * chessposition.
Шахматная позиция определяется как:
chess_position = Alive of chessletter * int | Dead;;
Я сейчас пытаюсь распечатать позиции в первом ряду доски.
У меня есть следующий код:
class chess =
object
val mutable initial = ([|Rook,Black,Alive(A,8); (*... *)|])
method print =
for i = 0 to i = 7 do
for j = 0 to j = 32 do
if initial.(j) = (Pawn,White,Alive(A,i)) then tmp1="P" else
if initial.(j) = (Pawn,Black,Alive(A,i)) then tmp1="p" else
if initial.(j) = (Rook,White,Alive(A,i)) then tmp1="R" else
if initial.(j) = (Rook,Black,Alive(A,i)) then tmp1="r" else
if initial.(j) = (Knight,White,Alive(A,i)) then tmp1="N" else
if initial.(j) = (Knight,Black,Alive(A,i)) then tmp1="n" else
if initial.(j) = (Bishop,White,Alive(A,i)) then tmp1="B" else
if initial.(j) = (Bishop,Black,Alive(A,i)) then tmp1="b" else
if initial.(j) = (Queen,White,Alive(A,i)) then tmp1="Q" else
if initial.(j) = (Queen,Black,Alive(A,i)) then tmp1="q" else
if initial.(j) = (King,White,Alive(A,i)) then tmp1="K" else
if initial.(j) = (King,Black,Alive(A,i)) then tmp1="k" else
tmp1=".";
print_string tmp1;
done
done
end
В случае нормальных начальных позиций шахмат, где строка белого цвета, это должно распечатать:
RNBQKBNR
Я получаю ошибку несвязанного значения i, и я не могупонимаю почему.На заметку, любые советы по классам и методам приветствуются, так как я пытаюсь изучить это и в настоящее время сосать это.