2013-04-29 2 views
0

Noob. Это должно создать пирамиду, но, как вы можете видеть, я не могу правильно настроить свою ось x. Я не уверен, что делать. Любая помощь? Спасибо, Кейт.Почему моя пирамида не складывается правильно?


import acm.graphics.*; 
import acm.program.*; 

public class Pyramid extends GraphicsProgram { 

    public void run() 
    { 
     double xCoord = 50; 
     double yCoord = 200; 
     double base = BRICKS_IN_BASE; 
     int cnt = 0; 

     while (cnt < base) 
     //for (int n = 0; n < base; n++) 
     { 
      for (int i = 0; i < base; i++) 
      { 
       add(new GRect(xCoord, yCoord, BRICK_WIDTH, BRICK_HEIGHT)); 
       xCoord += BRICK_WIDTH; 
      } 

      base--; 
      yCoord -= BRICK_HEIGHT; 
      xCoord = ??????????????? 
     } 
    } 

    private static final double BRICK_WIDTH = 10; 
    private static final double BRICK_HEIGHT = 12; 
    private static final double BRICKS_IN_BASE = 14; 
    private static final double X_BASE = 25; 
} 
+2

Можете ли вы показать нам выход каким-то образом? Скриншот? – hexafraction

+1

И ожидаемый выход. – Guvante

+0

Выход, а не пирамида с базой 14 блоков, затем 13 центрированных, затем 12 с центром и т. Д. До 1, вместо этого - 14 блоков, затем она перемещается вверх по линии и рисует линию из 13 блоков, но она сидит в конце предыдущей строки (строка ниже), вместо того, чтобы ставить поверх и продолжает 1. Мои проблемы в том, что я не могу правильно установить пирамиду. Я подозреваю, что это проблема с моей осью xCoord. –

ответ

1

Try с

xCoord -= (base * BRICK_WIDTH) + (BRICK_WIDTH/2); 

Или это

while (cnt < base) 
    //for (int n = 0; n < base; n++) 
    { 
     int initX = xCoord; 
     for (int i = 0; i < base; i++) 
     { 
      add(new GRect(xCoord, yCoord, BRICK_WIDTH, BRICK_HEIGHT)); 
      xCoord += BRICK_WIDTH; 
     } 

     base--; 
     yCoord -= BRICK_HEIGHT; 
     xCoord = initX + BRICK_WIDTH/2; 
    }