gpt4 book ai didi

java - 随机只运行一个java方法

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:32:11 24 4
gpt4 key购买 nike

我必须运行一个生成随机四联骨牌的 Java 程序。我将所有七个代码存储在不同的方法中:

public class TetrisComponent extends JComponent{
public void paintComponent(Graphics g){
Graphics2D g2 = (Graphics2D)g;

Rectangle2D.Double i = new Rectangle2D.Double(0, 100, 50, 50);
g2.setColor(Color.black);
g2.draw(i);
g2.setColor(Color.CYAN);
g2.fill(i);

Rectangle2D.Double i2 = new Rectangle2D.Double(50, 100, 50, 50);
g2.setColor(Color.black);
g2.draw(i2);
g2.setColor(Color.CYAN);
g2.fill(i2);

Rectangle2D.Double i3 = new Rectangle2D.Double(100, 100, 50, 50);
g2.setColor(Color.black);
g2.draw(i3);
g2.setColor(Color.CYAN);
g2.fill(i3);

Rectangle2D.Double i4 = new Rectangle2D.Double(150, 100, 50, 50);
g2.setColor(Color.black);
g2.draw(i4);
g2.setColor(Color.CYAN);
g2.fill(i4);
}

public void paintComponentj(Graphics g){
Graphics2D g2 = (Graphics2D)g;

Rectangle2D.Double j = new Rectangle2D.Double(200, 500, 50, 50);
g2.setColor(Color.black);
g2.draw(j);
g2.setColor(Color.blue);
g2.fill(j);

Rectangle2D.Double j2 = new Rectangle2D.Double(250, 500, 50, 50);
g2.setColor(Color.black);
g2.draw(j2);
g2.setColor(Color.blue);
g2.fill(j2);

Rectangle2D.Double j3 = new Rectangle2D.Double(300, 500, 50, 50);
g2.setColor(Color.black);
g2.draw(j3);
g2.setColor(Color.blue);
g2.fill(j3);

Rectangle2D.Double j4 = new Rectangle2D.Double(300, 550, 50, 50);
g2.setColor(Color.black);
g2.draw(j4);
g2.setColor(Color.blue);
g2.fill(j4);
}
}

我将如何运行这个程序(我有一个单独的 TetrisViewer 类)来随机运行 paintComponent 方法或 paintComponentj 方法?甚至有办法做到这一点吗?

最佳答案

我将这两个包装在另一种随机选择这些方法之一的方法中:

private Random rand = new Random();
public void paintRandom(Graphics g) {
if (rand.nextBoolean()) {
paintComponent(g);
} else {
paintoComponentj(g);
}
}

编辑:
要回答评论中的问题,您可以通过选择随机 int 而不是随机 boolean 来将想法用于两种以上的方法。为了避免样板 if-else 或 switch-case 结构,一个优雅的解决方案可能是将对所有相关方法的引用存储在一个列表中,并随机选择要调用的索引:

private Random rand = new Random();
private final List<Consumer<Graphics>> PAINT_METHODS =
Arrays.asList(this::paintComponent, this::paintComponentj /* etc... */);

public void paintRandom(Graphics g) {
PAINT_METHODS.get(rand.nextInt(PAINT_METHODS.size())).accept(g);
}

关于java - 随机只运行一个java方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52471926/

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