Это моя функция «getWin» в моей игре на tic-tac-toe на консоли C++. Он отлично работает в рамках этой простой программы, но просто из любопытства, что является более коротким/более эффективным способом написания функции, которая возвращает победителя (если таковой имеется) в игру с tic tac toe?C++ - Самая короткая функция проверки выигрышей для tic-tac-toe?
примечания - winArg является либо «X», либо «O», в зависимости от того, на каком проигрывателе вы тестируете. top_left, middle_center и т. д. перечислены типы. конечный оператор return, return 'n' ;, для тех случаев, когда еще нет победителя.
char getWin(char winArg)
{
if (board[top_left] == winArg)
{
if (board[top_center] == winArg)
{
if (board[top_right] == winArg)
return winArg;
}
if (board[middle_center] == winArg)
{
if (board[bottom_right] == winArg)
return winArg;
}
if (board[middle_left] == winArg)
{
if (board[bottom_left] == winArg)
return winArg;
}
}
if (board[top_right] == winArg)
{
if (board[middle_center] == winArg)
{
if (board[bottom_left] == winArg)
return winArg;
}
if (board[middle_right] == winArg)
{
if (board[bottom_right] == winArg)
return winArg;
}
}
if (board[bottom_right] == winArg)
{
if (board[bottom_center] == winArg)
{
if (board[bottom_left] == winArg)
return winArg;
}
}
//middle vertical and horizontal lines
if (board[top_center] == winArg && board[middle_center] == winArg && board[bottom_center] == winArg)
{
return winArg;
}
else if (board[middle_right] == winArg && board[middle_center] == winArg && board[middle_left] == winArg)
{
return winArg;
}
return 'n';
}
* «есть более короткий/более эффективный способ» * Там почти всегда есть для любой нетривиальной программы. –
Кажется, что вы вручную пишете все возможные случаи ... –
whoops ... теперь он говорит «что является более коротким/более эффективным способом». lol – Nikita