随机只运行一个java方法
我必须运行一个Java程序来生成一个随机的tetromino。我将所有七种方法的代码存储在单独的方法中:
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
方法,但随机运行?有没有办法做到这一点
# 1 楼答案
我必须按照如下方式重构您的代码。可以测试随机布尔表达式以随机化零部件创建
# 2 楼答案
我会将这两种方法包装在另一种方法中,随机选择其中一种方法:
编辑:
要回答评论中的问题,您可以通过选择随机
int
而不是随机boolean
来使用两种以上的方法。为了避免使用if-else或switch-case结构的样板文件,一个优雅的解决方案是在列表中存储对所有相关方法的引用,并随机选择要调用的索引: