私は、matlab で reversi を再作成する必要がある割り当てを行ってきました。
コードのセクションを線形インデックスに変換せずに実行する方法を理解できないというブレークポイントに達しました。
基本的に私がする必要があるのは、方向ベクトル (つまり [-1;0] を垂直に移動する) を既存の game_state ベクトルに追加して、その上のデータを見つける方法を見つけることです。
function legal = legalMove()
d_l = [0, -1];
d_r = [0, 1];
d_u = [-1, 0];
d_d = [1, 0];
d_ul = [-1, -1];
d_ur = [-1, 1];
d_dl = [1, -1];
d_dr = [1, 1];
directions = [d_l d_ul d_u d_ur d_r d_dr d_d d_dl];
valid_moves = zeros(8,8);
for ci = 1:8
for cj = 1:8
if game_state(ci,cj) == 0 %check element = 0 before continuing
for count = 1:8
d = directions(count);
selected =
while selected == player_number * -1 %while the selected piece is of enemy type
%move as long as you find your opponents stones
if you found at least 1 opponent stone and you end up on your own stone
else
end
end
end
else
end
end
end
end
その後の私の2番目の問題は、実際のループ自体です。現在の方向にとどまるかどうかを調べるためにwhileループを使用できると思いましたが、自分でそれを行う方法を見つけられないようです。
任意の支援をいただければ幸いです。
御時間ありがとうございます!