问题标签 [karel]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Java算法辅助
所以我目前的任务是创建一个算法,将第 1 行空间中的蜂鸣器堆向右移动。我想我有一个好的开始,我编写了代码来捡起一堆蜂鸣器,向右移动一个,然后放下那些蜂鸣器:
一排蜂鸣器有时在蜂鸣器之间有间隙,在这种情况下,此代码运行良好,但如果蜂鸣器堆相邻,机器人最终将第一堆倾倒到第二堆上,我不知道如何捡起第二堆蜂鸣器,因为现在第二堆蜂鸣器由第一堆蜂鸣器和第二堆蜂鸣器组成,我不知道如何只拾取第二堆蜂鸣器。
Rohit jain 给了我从行尾开始倒退的想法。尽管我认为这不是解决问题的方式,但它仍然是一个解决方案。因为蜂鸣器之间存在间隙,所以到达行尾实际上比人们想象的要困难得多。这就是我最终要做的。
java - 如何创建一个总体 if 语句?如,“如果这发生在程序中的任何一点......”
我的任务是为 karel 机器人创建一个算法,用于退出迷宫并在到达蜂鸣器时停止。我已经成功地创建了这个算法,除了让 karel 在它到达蜂鸣器时停止。这只是我的代码的一部分,但你会看到我基本上在每一步都插入了一个蜂鸣器检查点。我不禁觉得有一种更简单的方法,另外,当我尝试使用新插入的蜂鸣器检查执行时,它给了我这个错误:线程“main”中的异常 java.lang.StackOverflowError
所以,如果可能的话,我想简单地在整个程序的每个时间间隔检查一个 if 语句。谢谢。
java - 如何从抽象类调用主驱动程序中的实例?
所以几乎我需要我的委托类(ref)能够读取在主驱动程序中创建的类的实例。我试图在 ref 中创建类引用,但这只会在世界上创建更多对象,并没有使原始对象移动。
主驱动代码:
TrackReferee代码:
编辑:对不起,我应该澄清一下,但我们不允许更改主驱动程序中的代码,因为它已经提供给我们,所以我必须以某种方式使其仅通过 TrackReferee 类工作。
java - 在 Java 中计算堆栈中的蜂鸣器
需要编写一个名为 clearStacks() 的方法,该方法将最近创建的机器人向前移动,直到它到达一面墙,然后拾取所有蜂鸣器。该方法不应返回任何值且不带参数。它还有一个副作用:该方法会打印机器人在每个堆栈中拾取了多少个蜂鸣器。假设一行有 3 个堆栈,输出可能如下所示:
蜂鸣器:4 蜂鸣器:1 蜂鸣器:7
我的问题是我无法写出机器人在每个堆栈中拾取了多少个蜂鸣器。只有总量。我是 Java 新手。我的代码:
java - 没有“主要”方法,卡雷尔如何运行?
我想知道机器人运行像Karel这样的程序,因为它不使用 main() 方法。相反,它使用了 run() 方法:
它是如何工作的?
java - Becker 机器人:让他们移动
所以我必须使用 becker.robots 包向前移动并拿起一定数量的闪光灯然后转身放置它们。但是,我不确定如何调用 robot.move() 方法。每次我试图让它向前推进时,我都会收到一个编译器错误消息:
错误:becker.robots.Robot 类中的方法 move 不能应用于给定类型;必需:未找到参数:int 原因:实际参数列表和形式参数列表的长度不同
有人可以帮我:)
java - 为什么我的 SmarterSorter 程序会出现 NullPointerException?
我正在将 BlueJ 与 Karel the Robot 一起使用。
该程序称为 SmarterSorter,以下是说明:(我需要对该程序的所有帮助,而不仅仅是 NullPointerException)。
背景:存在未知数量的垂直蜂鸣器(无间隙)——每个垂直蜂鸣器中有未知数量的蜂鸣器(每个角落一个蜂鸣器——无间隙)。最左侧桩的底部蜂鸣器始终位于原点。
我故意不给你子弹形式的算法(所以你不能只是把子弹变成方法)。我假装自己是最终用户(即,计算机编程方面的准智力——所以,我将用英语来描述这个问题)。
所以,这里的算法:
SmarterSorterRobot(SSR) 进行分类。然而,她有一些助手(代表)——PutterRobot(PUR)和 PickerRobot(PIR)。SSR 知道她一开始总是面向东方,并且站在最左侧垂直堆中最底部的蜂鸣器上。她首先沿着所有垂直桩的最后一行走,当她到达一个空的角落时停下来。然后,她创建所有这些 PIR,然后,在它们全部创建之后,依次命令每个人拿起各自堆中的所有蜂鸣器(例如,如果第一个垂直堆中的 PIR 在上面有 5 个蜂鸣器他,他将站在他所在位置上方 6 个角落,拾起 6 个蜂鸣器)。SSR 现在应该查询每个 PIR 以了解它拾取的蜂鸣器数量,并且她应该在将这些计数存储到 Java 整数数组中时存储这些计数。然后她应该对该数组进行排序(请参阅数组的 API)。她现在应该再次从左到右工作,在第一个即将创建的蜂鸣器堆的底部创建一个 PUR——PUR 应该知道它将放置多少个蜂鸣器(最近排序的最小数字)大批)。然后,PUR 应该以最有效的方式将所有蜂鸣器放回原处(如下所述)。SSR 现在应该创建第二个 PUR 并让它做同样的事情 - 继续直到所有堆都放置好(即所有堆现在都按非降序排序并且所有 PUR 都在 HOME 位置)。SSR 现在应该要求每个 PIR 回家。最后,SSR 现在应该返回 HOME。在第一个即将创建的蜂鸣器堆的底部创建一个 PUR——PUR 应该知道它将要放置多少个蜂鸣器(最近排序数组中的最小数字)。然后,PUR 应该以最有效的方式将所有蜂鸣器放回原处(如下所述)。SSR 现在应该创建第二个 PUR 并让它做同样的事情 - 继续直到所有堆都放置好(即所有堆现在都按非降序排序并且所有 PUR 都在 HOME 位置)。SSR 现在应该要求每个 PIR 回家。最后,SSR 现在应该返回 HOME。在第一个即将创建的蜂鸣器堆的底部创建一个 PUR——PUR 应该知道它将要放置多少个蜂鸣器(最近排序数组中的最小数字)。然后,PUR 应该以最有效的方式将所有蜂鸣器放回原处(如下所述)。SSR 现在应该创建第二个 PUR 并让它做同样的事情 - 继续直到所有堆都放置好(即所有堆现在都按非降序排序并且所有 PUR 都在 HOME 位置)。SSR 现在应该要求每个 PIR 回家。最后,SSR 现在应该返回 HOME。SSR 现在应该创建第二个 PUR 并让它做同样的事情 - 继续直到所有堆都放置好(即所有堆现在都按非降序排序并且所有 PUR 都在 HOME 位置)。SSR 现在应该要求每个 PIR 回家。最后,SSR 现在应该返回 HOME。SSR 现在应该创建第二个 PUR 并让它做同样的事情 - 继续直到所有堆都放置好(即所有堆现在都按非降序排序并且所有 PUR 都在 HOME 位置)。SSR 现在应该要求每个 PIR 回家。最后,SSR 现在应该返回 HOME。
HOME:home 是最左边垂直列中最顶端蜂鸣器正北的角落。
这是我的代码:
我在 sortTheBeepers 方法的第一行得到一个 NullPointerException。
我不知道为什么。
谢谢您的帮助!
pascal - 1991 年帕斯卡中的随机数
我正在为一个使用 Pascal 变体的班级作业运行 Fenuc Karel 机器人,但是我们的机器人是从 1991 年到 1993 年在他们添加 random() 之前。有谁知道如何在 Pascal 的旧 dos 实现上获取随机数?请注意,因为年龄变量名称不能超过 8 个字符,数字不能超过 255
java - 函数嵌套
我正在参加 iTunes U 上提供的在线课程“编程方法论”。该课程介绍了基于 Java 的“机器人卡雷尔”,它向我提出了一个问题。以这段代码为例:
这段代码的想法是通过在边缘之外放置“蜂鸣器”来找到屏幕的中间,然后获取蜂鸣器的边缘。我所做的是让每个“寻找边缘”函数调用另一个函数来找到另一个边缘。它最终到达一个点,它位于中间,它检查左右两侧的蜂鸣器,发现没有蜂鸣器,然后将一个放在中间。
现在我想问:我经常嵌套函数(或方法?你怎么称呼它们)。作为程序员,这是一个坏习惯吗?在更大、更复杂的项目中,它会反击我吗?它会降低我的代码的可读性吗?如果是这样,任何人都可以提供如何调用这些函数的解决方案吗?
java - 在 Karel 中点练习 (Java) 中使用 Getter 和 Setter
我编写此代码是为了使用比课程预期更多的 Java 元素。但我很难让它适用于所有 4 个方向。getter 和 setter 嵌入到使 Karel 移动的方法中。如果我能得到任何帮助让这条鳕鱼工作,那就太好了。