За последние 24 часа нас посетили 27976 программистов и 1815 роботов. Сейчас ищет 1151 программист ...

Рисование фигур

Тема в разделе "PHP для новичков", создана пользователем super-php, 26 мар 2013.

  1. super-php

    super-php Активный пользователь

    С нами с:
    8 мар 2013
    Сообщения:
    35
    Симпатии:
    0
    Сделал пример с книги, должен по идее рисоваться круг и результат быть такой, как в книге:

    Код (Text):
    1.  
    2. Рисуем круг: (0, 0, 100)
    3. Прошло некоторое время...
    4. Стираем круг: (О, О, 100)
    5. Рисуем круг: (101, 6, 100)
    6. Прошло некоторое время...
    7. Стираем круг: (101, 6, 100)
    8. Рисуем круг: (101, б, 200)
    9. Прошло некоторое время...
    10. Стираем круг: (101, б, 200)
    но почему то выводит такое:

    Код (Text):
    1.  
    2. Рисуем круг: (, , 0)
    3. Прошло некоторое время...
    4. Стираем круг: (, , 0)
    5. Рисуем круг: (, , 0)
    6. Прошло некоторое время...
    7. Стираем круг: (, , 0)
    8. Рисуем круг: (, , 0)
    9. Прошло некоторое время...
    10. Стираем круг: (, , 0)
    и не по порядку выводит, а грузится экран и все выводится сразу.

    Код (Text):
    1. <?php ## Базовый класс — геометрическая фигура,
    2. class Shape {
    3. // Любая фигура имеет координаты центра, а также масштаб.
    4. // Делая координаты скрытыми членами класса, мы гарантируем,
    5. // что никто не сможет изменять их напрямую.
    6. private $х=0, $у=0, $scale=1.0;
    7. // Конструктор класса. Отображает фигуру на экране.                                                                            
    8. public function __construct() {
    9. $this->show() ;
    10. }
    11. // Деструктор класса. Стирает фигуру с экрана,
    12. public function __destruct() {
    13. $this->hide();
    14. }
    15. // Переместить фигуру на ($dx, $dy) точек,
    16. public final function moveBy($dx, $dy) {
    17. // Вначале стираем фигуру с экрана.
    18. $this->hide();
    19. // Затем изменяем координаты.
    20. $this->x += $dx;
    21. $this->y += $dy;
    22. // Наконец, выводим фигуру на новом месте.
    23. $this->show();
    24. }
    25. // Изменить масштаб отображения фигуры,
    26. public final function resizeBy($coef) {
    27. $this->hide();
    28. $this->scale *= $coef;
    29. $this->show();
    30. }
    31. // Методы возвращают координаты центра и масштаб.
    32. public final function getCoord() { return array($this->x, $this->y); }
    33. public final function getScale() { return $this->scale; }
    34. //** "Защищенные" методы, доступные только для производных классов.
    35. //**. Вызывать их в программе напрямую нельзя (да и не нужно).
    36. protected function hide() {
    37. die("Что здесь делать? Неизвестно!");
    38. }
    39. protected function show() {
    40. die("Что здесь делать? Неизвестно!");
    41. }
    42. }
    43.  
    44. class Circle extends Shape {
    45. // Радиус круга в масштабе 1:1.
    46. private $radius;
    47. // Создает новый объект-круг с указанием радиуса,
    48. public function construct($radius=100) {
    49. $this->radius = $radius;
    50. parent::__construct();
    51. }
    52. // Отображает круг на экране.
    53. public function show() {
    54. list ($x, $y) = $this->getCoord();
    55. $radius = $this->radius * $this->getScale();
    56. // Разместите "настоящий" код прорисовки круга ($х, $у, $radius).
    57. echo "Рисуем круг: ($х, $у, $radius)<br>";
    58. }
    59. // Стирает фигуру с экрана,
    60. public function hide() {
    61. list ($x, $y) = $this->getCoord();
    62. $radius = $this->radius * $this->getScale();
    63. // Разместите "настоящий" код стирания круга ($х, $у, $radius).
    64. echo "Стираем круг: ($х, $у, $radius)<br>";
    65. }
    66. }
    67.  
    68.  
    69. $shape = new Circle();
    70.  
    71. // Далее мы можем "забыть", что $shape — это в действительности
    72. // круг, работать с ним, как с любой геометрической фигурой.
    73.  
    74. sleep(1); echo "Прошло некоторое время...<br>";
    75. $shape->moveBy(101,6) ;
    76. sleep(1); echo "Прошло некоторое время...<br>";
    77. $shape->resizeBy(2.0) ;
    78. sleep(1); echo "Прошло некоторое время...<br>";
    79.  
    80. ?>
    621-625 стр PHP 5 (2 издание, Дмитрий Котеров, Алексей Костарев, 2008)