本文整理汇总了C#中IMouse.IsCheeseHere方法的典型用法代码示例。如果您正苦于以下问题:C# IMouse.IsCheeseHere方法的具体用法?C# IMouse.IsCheeseHere怎么用?C# IMouse.IsCheeseHere使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IMouse
的用法示例。
在下文中一共展示了IMouse.IsCheeseHere方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: FindCheese
/*
* code reference:
* http://blogs.msdn.com/b/mattwar/archive/2005/02/11/371274.aspx
*
* julia's comment:
* 1. try to identify the cycle detection / back tracking code
* 2. Try to understand code.
*/
public static bool FindCheese(IMouse mouse, int rows, int cols)
{
Cell[,] grid = new Cell[rows, cols];
int r = 0;
int c = 0;
// set terminal, so we don't backtrack past the origin
grid[r, c].prev = 4;
while (!mouse.IsCheeseHere()) {
byte d = grid[r,c].next;
if (d < 4) {
// increment so we know what to try next
grid[r,c].next++;
// determine next relative position
int nr = (r + dr[d] + rows) % rows;
int nc = (c + dc[d] + cols) % cols;
// only try to move to cells we have not already visited
if (grid[nr,nc].next == 0 && mouse.Move((Direction)d)) {
r = nr;
c = nc;
// remember how to get back
grid[r, c].prev = (byte)((d + 2) % 4);
}
}
else {
// backtrack
d = grid[r, c].prev;
if (d == 4)
return false;
mouse.Move((Direction)d);
r = (r + dr[d] + rows) % rows;
c = (c + dc[d] + cols) % cols;
}
}
return true;
}