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 = 50; 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() { noStroke(); fill(293,224,225); rect(x, y, width, height); } } void setup() { size(1000, 500); colorMode(HSB); rectMode(CORNER); generateObstacle(); } void draw() { background(114,65,73); 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:40 浏览: 25
这段代码看起来没有明显的问题,但如果你需要修改,可以根据你的需求进行以下修改:
1. 修改障碍物的颜色:在 Obstacle 类的 draw() 方法中修改 fill() 函数的参数即可,例如 fill(255, 0, 0) 表示红色。
2. 修改障碍物的移动速度:修改 obstacle_speed 变量即可,例如将其设置为 5 表示速度更快。
3. 修改障碍物的间距:修改 obstacle_gap 变量即可,例如将其设置为 200 表示间距更大。
4. 修改障碍物的最小高度和宽度:修改 obstacle_min_height 和 obstacle_min_width 变量即可,例如将其设置为 100 和 30 表示最小高度为 100,最小宽度为 30。
5. 修改障碍物的最大高度和宽度:修改 obstacle_max_height 和 obstacle_max_width 变量即可,例如将其设置为 400 和 80 表示最大高度为 400,最大宽度为 80。
注意:修改变量之后,需要重新运行程序才能看到效果。
相关问题
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 类型。注意,这种方法可能会导致运行时类型转换异常,因此需要谨慎使用。
ArrayList<Map> list = new ArrayList<Integer>(??);
在这种情况下,您不能直接将一个 ArrayList<Integer> 赋值给 ArrayList<Map>,因为它们之间没有直接的继承关系。如果您想要创建一个 ArrayList<Map>,您需要创建一个 Map 对象,并将其添加到 ArrayList 中。下面是一个示例代码:
```
Map<String, Integer> map = new HashMap<String, Integer>();
map.put("key1", 1);
map.put("key2", 2);
ArrayList<Map<String, Integer>> list = new ArrayList<Map<String, Integer>>();
list.add(map);
```
该代码创建了一个包含键值对("key1":1、"key2":2)的 Map 对象,并将其添加到 ArrayList 中。请注意,这里的 ArrayList 的泛型参数为 Map<String, Integer>,因为我们使用的是键为 String 类型,值为 Integer 类型的 Map。
如果您想要创建一个 ArrayList,其中每个元素都是一个包含键值对的 Map 对象,您可以在创建 ArrayList 的同时添加多个 Map 对象,如下所示:
```
ArrayList<Map<String, Integer>> list = new ArrayList<Map<String, Integer>>();
list.add(new HashMap<String, Integer>() {{
put("key1", 1);
put("key2", 2);
}});
list.add(new HashMap<String, Integer>() {{
put("key3", 3);
put("key4", 4);
}});
```
这里我们使用了匿名内部类的方式创建了两个 Map 对象,并将其添加到 ArrayList 中。