【问题标题】:Java Turtle Graphics Animation BasicJava Turtle Graphics Animation Basic
【发布时间】:2016-07-04 15:28:17
【问题描述】:

这是一个通过在屏幕上移动乌龟来创建分形的程序。为什么我的程序中的乌龟不会动?任何帮助将不胜感激!我很确定这很容易解决,但我找不到。

谢谢

  /**
  * This program is to create a fractal
  */

import java.awt.*;
class FractalEngine
{
  World world = new World(700,700); 
  Turtle turt = new Turtle(1,1,world);

public void drawFractal(String rule)
{
    turt.penUp();
    turt.moveTo(350,350);

    int lengthofRule = rule.length();

    int start = 0;
    int fin = 1;
    String tinyChar;

    for(int a = 0; a <= lengthofRule; a++)
    {
        if(start == 9)
            tinyChar = rule.substring(start);
        else 
            tinyChar = rule.substring(start,fin);

        if(tinyChar == "F")
            turt.forward(25);
        else if(tinyChar == "-")
            turt.turnLeft();
        else if(tinyChar == "+")
            turt.turnRight();
        else
            break;
        start++;
        fin++;

            System.out.println(tinyChar);
        }
    }
}
public class FractalEngineTester
{
public static void main(String[] args)
{
   FractalEngine fEng = new FractalEngine();



  String rule = "F-F+F+F-F-F-F+F+F-F+F-F+F+F-F+F-F+F+F-F-F-F+F+F-F";
  //String rule = "F-F+F+F-F";

   fEng.drawFractal(rule);
   //String rule = "F-F+F+F-F-F-F+F+F-F+F-F+F+F-F+F-F+F+F-F-F-F+F+F-F";
   //String rule = "F-F+F+F-F-F-F+F+F-F+F-F+F+F-F+F-F+F+F-F-F-F+F+F-F-F-F+F+F-F-F-F+F+F-F+F-F+F+F-F+F-F+F+F-F-F-F+F+F-F+F-F+F+F-F-F-F+F+F-F+F-F+F+F-F+F-F+F+F-F-F-F+F+F-F+F-F+F+F-F-F-F+F+F-F+F-F+F+F-F+F-F+F+F-F-F-F+F+F-F-F-F+F+F-F-F-F+F+F-F+F-F+F+F-F+F-F+F+F-F-F-F+F+F-F";
}
}

【问题讨论】:

    标签: java turtle-graphics


    【解决方案1】:

    这段代码的问题与海龟无关——都是关于字符和字符串的。

    这不起作用:

    String tinyChar = rule.substring(start, fin);
    
    if (tinyChar == "F")
    

    您正在混合 Stringchar 逻辑。你要么需要做:

    String tinyChar = rule.substring(start, fin);
    
    if (tinyChar.equals("F"))  # use a method to do the String comparison
    

    或者做:

    char tinyChar = rule.charAt(start);
    
    if (tinyChar == 'F')  // notice the change in quotes
    

    以下是我为解决此问题和其他问题而对您的代码进行的修改。我使用的是不同的 turtle 包,并且已经简化了一些东西,所以如果不做一些修改,它不会直接为你工作:

    import java.awt.*;
    
    class FractalEngine
    {
        Turtle turt = new Turtle();
    
        public void drawFractal(String rule)
        {
            int lengthofRule = rule.length();
    
            for (int position = 0; position < lengthofRule; position++)
            {
                char tinyChar = rule.charAt(position);
    
                if (tinyChar == 'F')
                    turt.forward(25);
                else if (tinyChar == '-')
                    turt.left(90);
                else if (tinyChar == '+')
                    turt.right(90);
                else
                    break;
            }
        }
    
        public static void main(String[] args)
        {
            FractalEngine fEng = new FractalEngine();
    
            String rule = "F-F+F+F-F-F-F+F+F-F+F-F+F+F-F+F-F+F+F-F-F-F+F+F-F";
    
            fEng.drawFractal(rule);
        }
    }
    

    输出

    当问这样的问题时,请务必指出您的海龟图形库来自哪里,因为有好几个而且它们并不完全相同。

    【讨论】:

      猜你喜欢
      • 2018-06-14
      • 2012-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-04
      • 2013-10-18
      • 2018-05-03
      • 2018-12-23
      相关资源
      最近更新 更多