|
|
1
2
你在问如何简化。如果我可以建议一些大胆的东西,为什么不使用一个不透明的int作为方向,并有一个静态类来处理它呢?通过“opaque int”,我的意思是代码永远不会直接使用它,而是只作为direction类的参数。 下面是一些Java风格的伪代码来说明我的意思。
这样做的好处是使用较少的分配,因此垃圾收集器不需要像以前那样频繁地运行。另一个优点是,设计仍然是面向对象的,从某种意义上说,如果以后希望能够旋转45度,您可以轻松地更改方向类。 为了回答你的其他问题,我认为把沿某个方向改变坐标的任务委托给方向班是完全好的。月球车只负责维持方向,因为月球车物体将包含一个int字段来存储它所面对的方向。 |
|
|
2
4
这是我前几天提出的一个方向清单,我可能非常喜欢它。也许您会发现它在您的代码中很有用。
|
|
|
3
1
当我看到这段代码时,首先想到的是,方向不应该有字符串字段方向值,而应该是一个存储指南针的字段(即,指南针.east、指南针.west)。这将使您摆脱movestate.action()中的字符串比较,从而使代码更加清晰。 命名似乎也有问题:也许北、东、西和南应该在一个名为direction(而不是compass)的枚举中,而directionOnRight()等应该在当前方向实现其静态方法(将当前方向作为单个参数获取,并返回右/左/反方向)?您不需要将它们存储在额外的字段imho中(记住关于过早优化的说法;-)。 |
|
|
4
1
我一看到这件事就立刻想到了一些困惑。Rover级别有4个状态和一个方向,这似乎有点违反直觉。我期待一个职位和一个方向(对于州来说,我可能期待,开/关/充电或类似的事情)。
所以,我会调查
Java enums
有北/南/东/西
然后您的移动代码将简单地如下所示:
无论你面对哪个方向。注意这个
不
委派行动。漫游者总是移动,但是
枚举也可以有方法
这看起来更直观,我也希望如此。我已经分别表示了x和y,但您可能希望用一个类来包装。如果这样做,那么方向枚举应该处理这样一个对象,而不是依赖于它再次分解为x和y。 |
|
|
5
0
这对我来说太复杂了。我认为应该这样做:让你的机器人知道他的转向角。如果他被要求左转或右转,他会改变这个角度。当他被要求移动时,他将根据这个角度在x,y坐标中移动。角度可以像指南针一样存储,甚至可以用真实角度(0、90、180、270)更简单地存储。通过在sin(角度)和cos(角度)上乘以运动步数,可以方便地实现机器人的角度方向移动。为什么可以
|
|
|
simply lemon · python上链表的添加方法 1 年前 |
|
|
Anonymous · 为什么在这个例子中self和类名的用法不同? 1 年前 |
|
|
P N Singh · 在CPP Oops中调用对象而不创建它 1 年前 |
|
|
Muthuraj · 如何创建一个通用工厂来创建某种类型的实例[重复] 1 年前 |
|
|
Andy Votava · 从父类定义调用学生方法 1 年前 |