Школоло / Говнокод #15837 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
  61. 61
  62. 62
  63. 63
  64. 64
  65. 65
  66. 66
  67. 67
  68. 68
  69. 69
  70. 70
  71. 71
  72. 72
  73. 73
  74. 74
  75. 75
  76. 76
  77. 77
  78. 78
  79. 79
  80. 80
  81. 81
  82. 82
  83. 83
  84. 84
  85. 85
  86. 86
  87. 87
  88. 88
  89. 89
  90. 90
  91. 91
  92. 92
  93. 93
  94. 94
  95. 95
  96. 96
  97. 97
  98. 98
  99. 99
  100. 100
program FeyverkFirework;

{$R+}

uses
  Crt, Graph;

var
  GraphDriver, GraphMode, ErrorCode : Integer;
  Ch : Char;
  I, J, K, XStart, YStart : Integer;
  XX,YY,CC : Array[1..1000] of Integer;
  FX,FY,DX,DY : Array[1..70] of Real;
  R, T, X, Y : Real;

procedure Explode (C : Integer);

begin
  T := -Pi;
  I := 0;
  Repeat
    I := I + 1;
    DX[I] := Sin(T)*5;
    DY[I] := Cos(T)*5;
    FX[I] := X;
    FY[I] := Y;
    T := T + 0.15;
  Until T > Pi;

  K := 0;
  Repeat
    For J := 1 to I do
      begin
        If C = 0 then
          PutPixel (Round(FX[J]),Round(FY[J]),0)
        else
          PutPixel (Round(FX[J]),Round(FY[J]),Random(GetMaxColor+1));
        FX[J] := FX[J] + DX[J];
        FY[J] := FY[J] - DY[J];
        DY[J] := DY[J] - 0.2;
      end;
    K := K + 1;
    Delay(10); { This was not in the original. }
  Until Keypressed or (K > 50);
end;

procedure ShootFireWork;

begin
  { Delay (1000); }
  Randomize;
  T := Random / 2 - 0.25 + Pi/2;
  X := XStart;
  Y := YStart;
  R := 20;
  I := 0;
  Repeat
    Inc (I);
    XX[I] := Round(X);
    YY[I] := Round(Y);
    CC[I] := GetPixel (XX[I],YY[I]);
    If I > 1 then
      If (XX[I] = XX[I-1]) and (YY[I] = YY[I-1]) then CC[I] := CC[I-1];
    PutPixel (XX[I],YY[I],Random(GetMaxColor+1));
    If I > 5 then
      PutPixel (XX[I-5],YY[I-5],CC[I-5]);
    X := X + Cos(T)*R;
    Y := Y - Sin(T)*R;
    If T > Pi/2 then
      T := T + 0.02
    else
      T := T - 0.02;
    R := R * 0.93;
    Delay (20);
  Until KeyPressed or (T < 0) or (T > Pi);

  For J := I-5 to I do

     PutPixel (XX[J],YY[J],CC[J]);
{    ch := readkey; }
  Explode (1);
  Explode (0);
end;

begin
  GraphDriver := Detect;
  InitGraph (GraphDriver, GraphMode, '..');
  ErrorCode := GraphResult;
  If ErrorCode <> grOk then
    begin
      Writeln ('Graphics Error: ',GraphErrorMsg(ErrorCode));
      Halt;
    end;
  SetColor (GetMaxColor);
  XStart := GetMaxX div 2;
  YStart := GetMaxY - 20;

  Repeat
    ShootFireWork;
  Until Keypressed;

Работает же! Красиво получается :)
Выполнить код можно здесь: http://pma.clan.su/index.html.
Алгоритм выполнения кода. Жмём E. Вводим код. Нажимаем в левом нижнем углу CoPas editor. Нажимаем R. Радуемся! :)

Запостил: Mobac Mobac, (Updated )

Комментарии (13) RSS

  • If ErrorCode <> grOk then
    begin
    Writeln ('Graphics Error: ',GraphErrorMsg(ErrorCode));
    Halt;

    Можете обьяснить эту часть кода?
    end;
    Ответить
  • If (XX[i] = XX[I-1]) and (YY[i] = YY[I-1]) then CC[i] := CC[I-1];


    Почему в школьных лабах всегда такие выразительные названия переменных?
    Ответить
    • хе хе муха цеце хе хе хе

      что ты делаешь в школе? ты что, либертарианец?
      Ответить
      • > что ты делаешь в школе? ты что, либертарианец?


        Кстати, в школе можно встретить два вида либертарианцев:

        * Михаил (он пришел туда забирать свою девушку после продлёнки)
        * Любой другой либертарианец (он забыл сделать домашку по матеше, потому что всю ночь критиковал нарушение прав человека во Франции, и теперь думает с кого бы списать чтобы не получить парашу)
        Ответить
        • Ты пропустил мем "знай разницу: анархо-капиталист - сидит в школе, либертарианец - запрещено приближаться к школе"
          Ответить
          • В честь чего опять этот органический тред? Новые файлы Эпштейна опубликовали, и в них любимый актёр гостя оказался?
            Ответить
          • )))))хорошее

            а еще есть такое: творчество Миадзаки трогает детей, и это всем нравится
            А когда Михаил трогает детей, его выгоняют с детской площадки
            Ответить

Добавить комментарий

Переведи на "PHP", guest!

    А не использовать ли нам bbcode?


    8