2016-03-18 7 views
1

Это программа для создания фрактала, перемещая черепаху вокруг экрана. Почему черепаха в моей программе не будет двигаться? Любая помощь будет оценена! Я уверен, что это простое решение, но я не могу его найти.Java Turtle Graphics Animation Basic

Благодаря

/** 
    * 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"; 
} 
} 

ответ

0

Проблема с этим кодом не имеет ничего общего с черепахами - это все о символах и строках.

Это не работает:

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

if (tinyChar == "F") 

Вы смешивания String и char логики. Вы либо должны сделать:

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 

Ниже мой переделки вашего кода для решения этого и других вопросов. Я использую другой пакет черепахи, и упростили вещи, так что это не будет работать для вас непосредственно без какой-либо модификации:

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); 
    } 
} 

OUTPUT

enter image description here

Задавая вопрос например, не забудьте указать, откуда появилась ваша графическая библиотека черепах, поскольку их несколько, и они не все одинаковы.