gpt4 book ai didi

java - elsif 与 nextboolean 用于图片

转载 作者:行者123 更新时间:2023-12-01 17:39:22 26 4
gpt4 key购买 nike

我正在用仙人掌图片制作一个游戏,但是当我执行代码时,如果它尝试在图片之间切换,它将停止并卡住在该点上,否则如果它不起作用,我也会对图片使用 bufferedimage我的代码:

   package objectgame;

import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;

import util.Resource;

public class EnemiesManager {
private List<Enemy> enemies;
private Random random;

private BufferedImage imagecactus1, imagecactus2, imagecactus3 ;

public EnemiesManager() {
enemies = new ArrayList<Enemy>();
imagecactus1 = Resource.getResourceImage("data/cactus1.png");
imagecactus2 = Resource.getResourceImage("data/cactus2.png");
imagecactus3 = Resource.getResourceImage("data/cactus3.png");
random = new Random();

enemies.add(getRandomCactus());
random = new Random();
}

public void update() {
for(Enemy e: enemies) {
e.update();
}
Enemy firstEnemy = enemies.get(0);
if(firstEnemy.isOutOfScreen()) {
enemies.remove(firstEnemy);
enemies.add(getRandomCactus());
}
}

public void draw(Graphics g) {
for(Enemy e: enemies) {
e.draw(g);
}
}
private Cactus getRandomCactus() {
Cactus cactus;
cactus = new Cactus();
cactus.setX(600);
if(random.nextBoolean()) {
cactus.setImage(imagecactus1);
}
else{
cactus.setImage(imagecactus2);
}
return cactus;
}
}

新类(class)

package objectgame;

import java.awt.Graphics;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.image.BufferedImage;

import util.Resource;

public class Cactus extends Enemy{

private BufferedImage image;
private int posX, posY;
private Rectangle rect;

public Cactus() {
image = Resource.getResourceImage("data/cactus1.png");
posX = 200;
posY = 83;
rect = new Rectangle();
}

public void update() {
posX -= 3;
rect.x = posX;
rect.y = posY;
rect.width = image.getWidth();
rect.height = image.getHeight();
}
@Override
public Rectangle getBound() {
return rect;
}
@Override
public void draw(Graphics g) {
g.drawImage(image, posX, posY, null);
}

public void setX(int x) {
posX = x;
}
public void setY(int y) {
posY = y;
}
public void setImage(BufferedImage images) {
this.image = images;
}
@Override
public boolean isOutOfScreen() {
return (posX + image.getWidth() < 0);
}
}

问题是什么,这是动画管理器的代码和图片的详细信息。我已经尝试了很多教程,但没有一个教程能够正确工作,但总是稍微偏离随机 boolean 的目的。我使用 eclipse,所以我不会收到任何特定于错误发生位置的错误。我也确实使用了调试器,但没有工作。所以我真的需要你们的帮助。

最佳答案

一个干净的方法如下:

private Cactus getRandomCactus() {
Cactus cactus = new Cactus();
cactus.setX(600);
BufferedImage [] images = {imagecactus1, imagecactus2, imagecactus3};
cactus.setImage(images[random.nextInt(3)]);
return cactus;
}

注意: random.nextInt(3) 返回一个从 0 到 2 的 int,即 0 或 1 或 2。

关于java - elsif 与 nextboolean 用于图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60988359/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com