Info

이 질문은 마감되었습니다. 편집하거나 답변을 올리려면 질문을 다시 여십시오.

Why does it only detect diagonal connect 4s (Ns) in this direction ↖, but not in this direction ↗ ?

조회 수: 1(최근 30일)
The Legend
The Legend 2019년 12월 16일
마감: Stephen 2019년 12월 16일
Why does it only detect diagonal connect 4s (Ns) in this direction ↖, but not in this direction ↗ ?
My function
function victory = checkVictory(M, N);
victory = 0;
checkColor = 1;
rowCheck = any(~cellfun(@isempty,regexp(cellstr(char(M)),char(checkColor*ones(1,N)))));
colCheck = any(~cellfun(@isempty,regexp(cellstr(char(M).'),char(checkColor*ones(1,N)))));
diaList = spdiags(M);
diaCheck = any(~cellfun(@isempty,regexp(cellstr(char(diaList).'),char(checkColor*ones(1,N)))));
connectionFound = any([rowCheck,colCheck,diaCheck]);
if connectionFound == true;
victory = 1;
else
checkColor = 2;
rowCheck = any(~cellfun(@isempty,regexp(cellstr(char(M)),char(checkColor*ones(1,N)))));
colCheck = any(~cellfun(@isempty,regexp(cellstr(char(M).'),char(checkColor*ones(1,N)))));
diaList = spdiags(M);
diaCheck = any(~cellfun(@isempty,regexp(cellstr(char(diaList).'),char(checkColor*ones(1,N)))));
connectionFound = any([rowCheck,colCheck,diaCheck]);
if connectionFound == true;
victory = 2;
end
end
end
Output
Input piece in column [player 1]: 3
---------------
| | | | | | | | % x = player 1
| | | | | | |x| % o = player 2
| | | | | |x|o|
| | |x|o|x|x|x| % <--- Here you can see that it doesn't the detect the diagonal connect 4 of 'x'
| |x|o|x|o|o|o|
|o|x|x|x|o|o|o|
---------------
Input piece in column [player 2]: 3
---------------
| | | | | | | |
| | | | | | |x|
| | |o| | |x|o| % <--- Here you can see that it DOES the detect the diagonal connect 4 of 'o'
| | |x|o|x|x|x|
| |x|o|x|o|o|o|
|o|x|x|x|o|o|o|
---------------
Player 2 has won the game!Play again? [yes/no]

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by