java - 波斯地毯递归

标签 java swing recursion

我对 Java 还很陌生,我正在学习递归,我发现了一些很酷的东西,比如这个链接,它实现了递归以制作波斯地毯。我想将此代码实现到java中

float a = 1.0;
int left = 0;
int right = 340;
int top = 0;
int bot = 340;
int r,g,b;
color firstColor;
color backC;

//color backC = color(35,95,28);

void setup()
{
  //size(700, 700);
  size(341, 341);
  r = floor(random(1,255));
  g = floor(random(1,255));
  b = floor(random(1,255));
  firstColor = color(g);    
  backC = color(r,g,b);
  background(backC);
  stroke(firstColor); 
  line(left,top,right,top);
  line(left,bot,right,bot);
  line(left,top,left,bot);
  line(right,top,right,bot);
  a = random(1,6);
  chooseColor(left, right, top, bot, a);
}

void draw()
{}

void chooseColor(int left, int right, int top, int bot, float a)
{
  int midcol, midrow;
  color col;

  if (left < (right-1))
     {
       col = floor((get(left,top) + get(right,top) + get(left,bot) + get(right,bot))/a);
       midcol = (left + right) / 2;
       midrow = (top + bot) / 2;
       stroke(col);
       line(left+1, midrow, right-1, midrow);
       line(midcol, top+1, midcol, bot-1);
       chooseColor(left, midcol, top, midrow, a);
       chooseColor(midcol, right, top, midrow, a);
       chooseColor(left, midcol, midrow, bot, a);
       chooseColor(midcol, right, midrow, bot, a);
     }
}

void keyPressed()
{
     setup();
}

我的窗口使用 JFrame,绘图使用 JPanel,但代码与 java 真的不同,有人可以给我建议从哪里开始吗?我知道代码使用了颜色,但我想做的是将地毯制作成黑色,所以之后我可以实现一些颜色。

谢谢你的提示。

最佳答案

由于您使用的是 Swing,请考虑通过 Oracle 的 Java2D tutorial学习如何绘制线条和填充颜色。

关于java - 波斯地毯递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26226531/

相关文章:

java - 迭代、递归和乘法

java - 计算器算法 - 在二叉搜索树上使用迭代而不是递归

java - 无法在 Apache ServiceMix 中启动 OSGI bundle

java - 如何在不使用 java 中的递归或循环的情况下查找阶乘?

java - 多线程-为什么私有(private)成员变量共享?

java - 如何在不知道密码的情况下使用 Spring Security 以用户身份自动登录?

java - Swing 组件如何考虑我的默认区域设置?

java - 绕过 actionPerformed() 返回 void

java - 如何设置 Jframe 的宽度、高度?

c - C 中的指针和递归函数