首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Reversi有效移动检查器

Reversi有效移动检查器
EN

Stack Overflow用户
提问于 2013-06-05 02:57:52
回答 1查看 446关注 0票数 0

我一直在做一个任务,这需要我在matlab中重新创建reversi。

我已经达到了一个转折点,我无法弄清楚如何在不将其转换为线性索引的情况下完成一段代码。

本质上,我需要做的是找出一种方法,将一个方向向量(即-1;0垂直移动)添加到我已经存在的game_state向量中,以便找到它上面的那段数据。

代码语言:javascript
复制
    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

之后,我的第二个问题是实际的循环本身。虽然我认为可以使用While循环来确定是否保持当前方向,但我自己似乎找不到一种方法。

任何帮助都将不胜感激。

耽误您时间,实在对不起!

EN

回答 1

Stack Overflow用户

发布于 2013-06-05 04:20:38

directions更改为包含字符串的单元数组:

代码语言:javascript
复制
...
directions = { 'd_l' 'd_ul' 'd_u' 'd_ur' 'd_r' 'd_dr' 'd_d' 'd_dl' };
...

然后,代码的下一部分将如下所示(填充空格!):

代码语言:javascript
复制
for count = 1:8
    d = eval( directions{count} );
    ti = ci+d(1);
    tj = cj+d(2);

    % Check if out of the board
    ...

    % Number of enemy pieces you went over
    cnt = 0;
    selected = gamestate(ti, tj)  

    % Move while going over enemy pieces
    while selected == player_number * -1
        ti = ti + d(1);
        tj = tj + d(2);
        selected = gamestate(ti, tj);

        % Check if out of the board
        ...

        % Count pieces you went over
        cnt = cnt + 1;
    end

    % Check if you moved over enemy pieces & whether you landed on your piece
    ...

end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16925433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档