所以這段代碼是我複製過來的在線博客遊戲的基本輪廓。 SOURCE:http://www.codingfriends.com/index.php/2010/06/10/boggle/C++有人可以解釋這些for循環是什麼意思?
bool findUsersWord(string findThis, Grid<char> &theBoard, Vector<cell> &theRoute, string alreadyFound, int placeY, int placeX)
{
// need to find the findThis base case
if (findThis == alreadyFound)
return true;
// need to find the first letter within the board and then progress around that.
if (alreadyFound.empty())
{
for (int rows = 0; rows < theBoard.numRows(); rows++)
for (int cols = 0; cols < theBoard.numCols(); cols++)
// find the each character within the
if (theBoard[rows][cols] == findThis[0])
{
alreadyFound = findThis[0];
cell newR;
newR.row = rows;
newR.col = cols;
theRoute.add(newR);
if (findUsersWord(findThis, theBoard, theRoute, alreadyFound, rows, cols))
return true;
else
// clear out the found Board
theRoute.clear();
}
}
else
{
// try and find the next letters within the area around the base letter
// spin around the letter 3 * 3 grid
for (int y= (placeY > 0 ? placeY-1: placeY); y <=(placeY == (theBoard.numRows()-1) ? placeY : placeY+1);y++)
for (int x=(placeX > 0 ? placeX-1: placeX); x<=(placeX == (theBoard.numCols()-1) ? placeX : placeX+1); x++)
if ((theBoard[y][x] == findThis[alreadyFound.length()]) && (!(y==placeY && x ==placeX)))
// already used letter
if (!placeAlreadyUsed(y,x,theRoute))
{
alreadyFound += findThis[alreadyFound.length()];
cell newR;
newR.row = y;
newR.col = x;
theRoute.add(newR);
if (findUsersWord(findThis, theBoard,theRoute, alreadyFound, y, x))
return true;
else
{
if (alreadyFound.length() > 1)
alreadyFound = alreadyFound.substr(0, alreadyFound.length()-1);
theRoute.removeAt(theRoute.size()-1);
}
}
return false;
}
return false;
}
下面的代碼是有問題的代碼,其是代碼的一部分的上方。
for (int y= (placeY > 0 ? placeY-1: placeY); y <=(placeY == (theBoard.numRows()-1) ? placeY : placeY+1);y++)
for (int x=(placeX > 0 ? placeX-1: placeX); x<=(placeX == (theBoard.numCols()-1) ? placeX : placeX+1)
我想知道,如果有人可以把這個代碼轉換成更簡單的代碼,它的使用沒有涉及?然後。我知道它的簡單部分,比如「?」意味着回報,「:」表示下一行,但我失去了一個事實,即它是在一個被用於循環,事實上,它只是看起來像
if(placeY > 0)
return playceY-1
placeY;
我在哪裏出了錯?
我不確定你是否理解'''和':'運算符...基本上'placeY> 0是什麼? placeY-1:placeY)'是說是這樣的:「placeY大於0嗎?如果是,那麼這個表達式的結果是'playeY-1',否則它是'placeY'' – prelic
@pretic:」operator「,而不是「運營商」。 '? :'是具有三個操作數表達式的單個操作符。 –
@亨寧馬克霍姆 - 哎呀,是的,你說得對。 – prelic