当按下并释放游戏控制器上的'a'按钮时,我需要编程机器人以50%的速度行驶,然后当按下'a'并再次释放时,以100%的速度行驶,就像锁定一样按钮。我有以下代码,当'a'被持续按下时,机器人驱动器为50%,当'a'被释放时为100%,它工作正常。
telemetry.addData("Status", "Running: " + runtime.toString());
if(gamepad1.a)
{
telemetry.addData("Status", "A pressed");
leftMotor.setPower(-gamepad1.left_stick_y*0.5);
rightMotor.setPower(-gamepad1.right_stick_y*0.5);
telemetry.addData("Status", "Running Slow");
}
else {
leftMotor.setPower(-gamepad1.left_stick_y);
rightMotor.setPower(-gamepad1.right_stick_y);
telemetry.addData("Status", "Running regular");
}
}
这是我锁定按钮的代码,它在运行时不会驱动。我认为这只是修复if和else语句的问题,但我无法确定问题所在。
telemetry.addData("Status", "Running: " + runtime.toString());
if(gamepad1.a)
{
telemetry.addData("Status", "A pressed");
//if A was pressed
if(aPressed == false)
{
aPressed = true;
if(goingSlow)
{
leftMotor.setPower(-gamepad1.left_stick_y);
rightMotor.setPower(-gamepad1.right_stick_y);
telemetry.addData("Status", "Running Regular");
goingSlow = false;
}
else {
leftMotor.setPower(-gamepad1.left_stick_y*0.5);
rightMotor.setPower(-gamepad1.right_stick_y*0.5);
telemetry.addData("Status", "Running Slow");
goingSlow = true;
}
}
}
else
{
aPressed = false;
}
答案 0 :(得分:0)
我认为你试图在“if”语句的分支内部做太多。将一些功能移到其他方法应该会使事情更容易理解。
很难确切地知道发生了什么,因为你没有展示整个方法,或提供关于你如何通知按钮按下/释放的任何上下文,但你可能想尝试这样的事情,一旦你已按下按钮按下并弄清楚你是否要慢或快:
if(shouldGoFast) {
goFast();
} else {
goSlow();
}
public void goFast() {
leftMotor.setPower(-gamepad1.left_stick_y);
rightMotor.setPower(-gamepad1.right_stick_y);
telemetry.addData("Status", "Running Regular");
}
public void goSlow() {
leftMotor.setPower(-gamepad1.left_stick_y*0.5);
rightMotor.setPower(-gamepad1.right_stick_y*0.5);
telemetry.addData("Status", "Running Slow");
}
我假设您并不需要跟踪当前是慢速还是快速,即如果您已经快速执行goFast()则没有问题。