Part 2:Bug Variations - 2015年软件工程实训 - SoYa Wiki1
需积分: 0 87 浏览量
更新于2022-08-03
收藏 468KB PDF 举报
在本篇关于“Bug Variations”的2015年软件工程实训内容中,我们主要讨论了Bug类及其扩展,以及观察这些行为的“runner”类。以下是对标题和描述中涉及知识点的详细说明:
1. **Bug类的方法**:
Bug类提供了三个关键方法来定义虫子如何移动和转向:
- `canMove()`:该方法检查虫子是否能够向前移动到一个空位置或包含花朵的位置。
- `move()`:如果虫子可以移动,它会前进并将一朵花放在它原来所在的位置。
- `turn()`:虫子向右转45度,但不改变其当前位置。这些方法在`act()`方法中被调用。
2. **虫子的行为**:
虫子的行为由其`act()`方法控制,如果虫子可以移动,它将执行`move()`;否则,执行`turn()`。
3. **BoxBug类**:
- **sideLength实例变量**:这个变量通常用于表示BoxBug形成的正方形模式的边长。它决定了BoxBug在移动时形成的方块大小。
- **steps实例变量**:这个变量跟踪BoxBug当前的步数或移动次数。当BoxBug完成一个完整的边长移动后,它与sideLength的关系会影响到`turn()`方法的调用。
4. **turn方法的调用**:
当`steps`等于`sideLength`时,`turn()`方法被调用两次,这是因为BoxBug需要完成90度的转弯,以便开始绘制正方形的下一个边。
5. **move方法的继承**:
BoxBug类虽然没有自己的`move()`方法,但它继承了父类Bug的`move()`方法,因此可以直接调用,以执行虫子的移动行为。
6. **BoxBug的模式大小**:
一个BoxBug构造完成后,其正方形模式的大小是否会保持一致取决于`sideLength`的初始值。如果sideLength不变,则模式大小保持不变;如果sideLength在运行时可变,则模式大小也会变化。
7. **steps为零的情况**:
`steps`的值会在BoxBug开始移动之前或每次完成一个正方形的绘制后变为零。
8. **Runner类**:
Runner类如BugRunner和BoxBugRunner是观察actor行为的关键。它们创建了一个ActorWorld对象,将演员(如Bug、BoxBug、Rock等类的实例)放入网格中,并展示世界的状态。`add`方法的重载使得可以将不同类型的actor添加到网格中。
这些知识点涵盖了基础的面向对象编程概念,如类的方法、继承和实例变量,以及如何通过runner类来模拟和观察对象的行为。在实际的软件工程实训中,理解并应用这些知识点有助于开发出更加复杂和动态的程序。
战神哥
- 粉丝: 1008
- 资源: 325