- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我正在创建一个程序来驱动机器人到迷宫的右上角。迷宫的一个例子是:
这是我的代码:
#include "simpletools.h"
#include "abdrive.h"
#include "ping.h"
int whichCase = 0;
//int caseArray[] = {0,1,2,3};
int irLeft, irRight;
void turnRight () {
drive_goto(26, -25);
drive_goto(125,125);
whichCase = (whichCase + 1) % 4;
}
void turnLeft () {
whichCase = (whichCase - 1) % 4;
drive_goto(-25,26);
drive_goto(125,125);
}
void forward () {
drive_goto(125,125);
}
void backward(){
drive_goto(26, -25);
drive_goto(26, -25);
whichCase = (whichCase + 2) % 4;
}
void priority(int whichCase) {
switch (whichCase) {
case (0):
/* (1) go right */ if (irRight == 1) { turnRight(); }
/* (2) go forward */ else if (ping_cm(8) > 30) { forward(); }
/* (3) go left */ else if (irLeft == 1) { turnLeft(); }
/* (4) go backward */ else if (irRight == 0 && irLeft == 0 && ping_cm(8) < 30){ backward();}
break;
case (1):
/* (1) go forward */ if (ping_cm(8) > 30) { forward(); }
/* (2) go left */ else if (irLeft == 1) { turnLeft(); }
/* (3) go backward */else if (irRight == 0 && irLeft == 0 && ping_cm(8) < 30){ backward();}
/* (4) go right */ else if (irRight == 1) { turnRight(); }
break;
case (2):
/* (1) go left */ if (irLeft == 1) { turnLeft(); }
/* (2) go backward */ else if (irRight == 0 && irLeft == 0 && ping_cm(8) < 30){ backward();}
/* (3) go right */ else if (irRight == 1) { turnRight(); }
/* (4) go forward */ else if (ping_cm(8) > 30) { forward(); }
break;
case (3):
/* (1) go backward */ if (irRight == 0 && irLeft == 0 && ping_cm(8) < 30){ backward();}
/* (2) go right */ else if (irRight == 1) { turnRight(); }
/* (3) go forward */ else if (ping_cm(8) > 30) { forward(); }
/* (4) go left */ else if (irLeft == 1) { turnLeft(); }
break;
}
}
void main () {
drive_goto(145,145);
low(26); // D/A0 & D/A1 to 0 V
low(27);
drive_setRampStep(12);
freqout(11, 1, 38000); // Check left & right objects
irLeft = input(10);
freqout(1, 1, 38000);
irRight = input(2);
while(1) {
priority(whichCase);
}
}
所以在这段代码中我基本上做了 4 种情况来代表机器人的不同位置:面朝上、面朝右、面朝下和左。根据不同的位置,机器人会以不同的方式使用传感器。代码的思路是这样的:
我认为逻辑非常简单并且应该可行。但事实并非如此。
请帮忙:(
最佳答案
正如 B. Wolf 所建议的,您需要在 while 循环中更新 irLeft 和 irRight。此外,你的看起来像一个墙壁跟随器,它只会跟随墙壁(无休止地)。您需要在代码中添加一个结束条件,因为您需要跟踪当前处于迷宫的哪个方 block 。由于迷宫是 4x4,因此您会准确地知道何时停止以这种方式
我会提醒你,在第一阶段你需要访问所有其他 3 个角落,所以仅仅到达对面的角落是行不通的。是的,我是你的同学之一,你最好询问完成作业的同学,除了来自 stack Overflow 的人,他们不知道类(class)的全部内容:)
关于c - 事件机器人 : Going to the corner on the upper right side in a maze,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42965364/
所以我在 macOS High Sierra 10.13.6 下使用 bash 3.2.57(1)-release,我正在尝试编写一个需要不区分大小写输入的 bash 脚本。我使用 tr "[:upp
为什么df.apply(df.str.upper)中的upper不需要括号,但是upper()方法在 df.str.upper() 中需要它们吗? 有什么我想念的概念吗? 最佳答案 () 的意思是“现
我想删除 hql 中使用的 upper 函数并在 java 端创建 upper。以下是查询:- String hql = "SELECT addType FROM addrDO WHERE **UPP
这个问题在这里已经有了答案: Why doesn't calling a string method (such as .replace or .strip) modify (mutate) the
我想知道 css list-style 中的 upper-alpha 和 upper-latin 有什么区别? 最佳答案 主要区别是 IE6 或 IE7 不支持 upper-latin 而 upper
#include #include #include int main(void) { char input[50]; char i; int j = 0; pr
对于 MATLAB 中的箱线图,我想问一下是否可以使用特定的百分位数作为上须线。我想使用第 95 个百分位作为上部晶须,第 5 个百分位作为下部晶须。 MATLAB 的默认行为是使晶须长度 = 1.5
我真的不知道如何解决这个问题(错误:不兼容的类型:推断的类型不符合推断的上限:INT#1 上限:Giocatore[],Parcelable where INT# 1 是交集类型:INT#1 exte
我正在尝试以全大写字母打印一个字符串。当我运行 print 命令时,它会打印 x 的类型和位置。 为什么打印的是操作而不是结果? x = 'bacon' x = x.upper print x >>>
我是初学者所以请原谅我这个问题。我想编写放大字符之间字母的程序 "" 例如输入: randomchars 输出: randomchars 怎么做? 我只写了这个,但这放大了所有文字。 whil
我试图在 lua 中将一些法语文本转换为大写,它没有转换重音字符。知道为什么吗? 测试脚本: print('échelle') print(string.upper('échelle')) print
我有一个脚本,其中包含一个使用回调返回状态的函数,并且我必须将其是否成功提交给类变量。我无法使用 this 来访问它,因为它不在范围内。我无法发布我的确切代码的代码片段,但以下内容应该说明我的问题 v
我正在尝试查询一个值为 ONeil 的 SQL Server 表。我的目标是在查询的数据中添加撇号。我知道从源头(在 PHP 中)解决问题会更容易,但无法访问这些脚本 表结构, ID Fir
有没有办法将 UPPER 与 LIKE ANY() 一起使用? 我有以下示例: SELECT .... where skus.number like any ('{"%00130204%", "%00
您好,我正在处理 Kaggle Titanic 数据。我使用 apply(lambda x: x.upper()) 来处理多个列,但它不起作用。 我把数据放在我的谷歌驱动器上,你可以下载here .
其实这个问题问了好几次,但我没能找到答案。 有一组只读的 SQLite 表 - 我无法更改它们的结构或重新定义排序规则。包含一些国际字符(俄语/中文等)的表格。 我想要一些不区分大小写的选择,例如:
#input my_string = 'abcdefgABCDEFGHIJKLMNOP' 如何从字符串中提取所有 UPPER? #output my_upper = 'ABCDEFGHIJKLMNOP
想了一会儿,为了WHERE要正确评估标准,我需要考虑区分大小写。我会用 UPPER()和 LOWER()当案例无关紧要时。但是,我发现以下查询产生相同的结果。 SELECT * FROM ATable
我正在尝试实现如下查询 SELECT * FROM emp WHERE LOWER (ename) IN LOWER ('A', 'b', 'C'
我是 PL/SQL 语言的新手。我看到 PL/SQL 中有 2 个函数:UPPER和 NLS_UPPER .他们都做同样的事情。我想知道这些功能之间的区别。谢谢 最佳答案 NLS_UPPER了解特定于
我是一名优秀的程序员,十分优秀!