C#之雷区拓展
用C#做扫雷的时候如何实现在点击的雷区拓展如图:
void Check(Kill k) { if (k.IsCheck) return; this.IsCheck = true;//这里一定要标记它已检测过的状态,不然会无限回调的 if (k.CheckAround()//检查周围8格,如果全没雷) { ... //一些要做的事情,标记它不是雷,把它翻出来一类的 foreach(Kill k1 in k.Arounds) { Check(k1);//回调这个方法检查它周围的雷 } } else return; }
foreach(Kill k1 in k.Arounds) { Check(k1);//这个方法改变了k的值也就该变了下次循环k.Arounds的值,于是程序就只会向k.Arounds[0]这个方向拓展,不会拓展其它7个方向 }