我正在尝试编写一种方法,该方法将允许我为国际象棋游戏的前8个位置打印出位置。
我有一个val可变的缩写,它是32个条目的数组,每个条目包含国际象棋*国际象棋色彩*国际象棋位置。
该象棋位置定义为:
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
我收到一个未绑定值的错误,我不明白为什么。 顺便说一句,感谢有关类和方法的任何建议,因为我正在尝试学习这一点,目前正在吸纳它。
答案 0 :(得分:1)
此行:
for i = 0 to i = 7 do
是不合法的。它解析为:
for i = 0 to (i = 7) do
第二个表达式将i
与7比较是否相等。但是到那时,还没有定义i
。 i
仅在for
循环的主体中定义。
你想说:
for i = 1 to 7 do