c - 数组 c 编程中的随机探索
问题描述
我创建了一个充满字母的数组,我一直坚持实现单元格在 8 个方向之一(N、NE、E、SE、S、SW、W、NW)中随机移动的功能。我已经为基本的 4 个方向使用了 switch 语句,但无法弄清楚其他 4 个方向。
void randomStep()
{
if ((island[ro][co + 1] != ('B'||'L') || co == NUMROWS - 1 )&& (island[ro + 1][co] != ('B'||'L') || ro == NUMCOLS -1) && (island[ro - 1][co] != ('B'||'L') || ro == 0)
&& (island[ro][co - 1] != ('B'||'L') || co == 0))
break;
int direction = rand() % 8;
switch (direction) {
case 0: if (co < NUMROWS - 1 && island[ro][co + 1] == 'B'||'L'){ //move right
co++;
break;
}
case 1: if (ro < NUMCOLS -1 && island[co + 1][ro] == 'B'||'L') { //move down
ro++;
break;
}
case 2: if (ro > 0 && island[ro - 1][co] == 'B'||'L'){ //move up
ro--;
break;
}
case 3: if (co > 0 && island[ro][co - 1] == 'B'||'L') { //move left
co--;
break;
}
解决方案
您可以简单地结合其他两种情况的条件和结果。这是 NW 的示例(左和上)
case 4: if (ro > 0 && co > 0 && island[ro - 1][co - 1] == 'B'||'L') { //move up & left
ro--;
co--;
}
break;
请注意,我已将 的位置移到代码break;
块之外。if
我想你也可能有一个错误
... island[ro - 1][co - 1] == 'B'||'L' ...
我猜应该是
... island[ro - 1][co - 1] == 'B' || island[ro - 1][co - 1] == 'L' ...
在其他情况下也是如此。
推荐阅读
- rust - 为什么 impl trait 不能用于返回多个/条件类型?
- typescript - 打字稿回调参数,使用函数解析
- c++ - 如何在 c++ 上将具有一定大小的数组填充到另一个更大的数组中?
- python - Spyder 的 DataFrame 查看器中的背景颜色和列最小/最大选项被禁用
- mysql - 如何从 MySQL 数据库中获取最后一个插入值并更新 Access 中的字段?
- javascript - 无法在javascript中检查布尔值
- python - 能够在日期选择器中定位元素,但单击不选择日期
- android - 当我应用自定义 UI 管理器时,Facebook 帐户工具包活动崩溃
- python-3.x - 绘制与二元组相关的频率
- openstack - 什么日志检查例如快照是否在 Openstack 中排队后立即被删除