ArrayList<Obstacle> obstacles = new ArrayList<Obstacle>(); float obstacle_speed = 3; float obstacle_gap = 100; float obstacle_min_height = 50; float obstacle_max_height = 300; float obstacle_min_width = 20; float obstacle_max_width = 30; class Obstacle { float x, y, width, height, speed; Obstacle(float x_, float y_, float w_, float h_, float s_) { x = x_; y = y_; width = w_; height = h_; speed = s_; } void update() { x -= speed; } void draw() { rect(x, y, width, height); } } void setup() { size(1000, 500); colorMode(HSB); rectMode(CORNER); generateObstacle(); } void draw() { background(#635C81); for (Obstacle o : obstacles) { o.update(); o.draw(); } if (obstacles.size() > 0 && obstacles.get(0).x + obstacles.get(0).width < 0) { obstacles.remove(0); } if (obstacles.size() == 0 || obstacles.get(obstacles.size()-1).x + obstacles.get(obstacles.size()-1).width < width - obstacle_gap) { generateObstacle(); } } void generateObstacle() { float obstacle_height = random(obstacle_min_height, obstacle_max_height); float obstacle_width = random(obstacle_min_width, obstacle_max_width); float obstacle_y = random(0, height - obstacle_height); float obstacle_x = width; obstacles.add(new Obstacle(obstacle_x, obstacle_y, obstacle_width, obstacle_height, obstacle_speed)); }
时间: 2024-01-13 16:03:39 浏览: 150
这段代码看起来像是一个游戏的代码,使用 Processing 语言编写,其中定义了一个障碍物类 Obstacle,包含坐标、大小和速度等属性,以及更新和绘制方法。在 setup 函数中设置了窗口大小和背景颜色,然后调用 generateObstacle 函数生成障碍物,并在 draw 函数中更新和绘制障碍物,同时根据需要删除和生成新的障碍物。
相关问题
ArrayList<String> v=new ArrayList<ArrayList<int>>();
这个代码片段存在语法错误。在Java中,`ArrayList<String>` 是一个用于存储字符串的ArrayList对象,而 `ArrayList<ArrayList<Integer>>` 则是一个 ArrayList 对象,其内部存储的是另一个 ArrayList 的引用,每个元素都是 Integer 类型。然而,直接将一个 ArrayList 类型赋给另一个 ArrayList 的构造函数通常是不正确的,因为它们是不同类型的数据结构。
正确的语法应该是先创建一个 ArrayList 类型的对象,然后在这个对象里存储 ArrayList<Integer> 的引用,就像这样:
```java
ArrayList<ArrayList<Integer>> innerLists = new ArrayList<ArrayList<Integer>>();
```
这里,`innerLists` 是一个可以存储多个 ArrayList<Integer> 实例的容器。如果你想在其中添加具体的 ArrayList,你可以这样做:
```java
ArrayList<Integer> innerList1 = new ArrayList<>();
// 添加一些Integer元素到innerList1...
innerLists.add(innerList1);
```
**相关问题--:**
1. 描述一下 Java 中嵌套 ArrayList 的用途?
2. 如何从 outerLists 中获取并操作其中一个 innerArrayList?
3. 如果需要移除一个 innerArrayList,应该怎么做?
ArrayList<Object> list = new ArrayList<Integer>(??);
在这种情况下,您不能直接将一个 ArrayList<Integer> 赋值给 ArrayList<Object>,因为它们之间没有直接的继承关系。但是,您可以使用通配符来实现一些灵活性,如下所示:
```
ArrayList<? extends Object> list = new ArrayList<Integer>(Arrays.asList(1, 2, 3));
```
或者,您可以使用 ArrayList 的构造函数将 Integer 转换为 Object,如下所示:
```
ArrayList<Object> list = new ArrayList<Object>(Arrays.asList((Object)1, (Object)2, (Object)3));
```
这里使用了强制类型转换将 Integer 转换为 Object 类型。注意,这种方法可能会导致运行时类型转换异常,因此需要谨慎使用。
阅读全文