firework.pp 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. {
  2. $Id$
  3. }
  4. program firework;
  5. uses
  6. ncurses,linux;
  7. CONST
  8. my_bg : LONGINT = COLOR_BLACK;
  9. Procedure showit;
  10. begin
  11. refresh;
  12. napms(120);
  13. end;
  14. Function get_colour(Var bold : chtype) : longint;
  15. Var
  16. attr : longint;
  17. begin
  18. attr:=random(16) + 1;
  19. bold:=A_NORMAL;
  20. if (attr > 8) then
  21. begin
  22. bold:=A_BOLD;
  23. attr:=attr and 7;
  24. end;
  25. get_colour:=attr;
  26. end;
  27. Procedure explode(Row,Col : longint);
  28. var
  29. Bold : chtype;
  30. begin
  31. ncurses.erase;
  32. mvaddstr(row,col,'-');
  33. showit;
  34. init_pair(1,get_colour(bold),my_bg);
  35. attrset(COLOR_PAIR(1) or bold);
  36. mvaddstr(row-1,col-1,' - ');
  37. mvaddstr(row,col-1,'-+-');
  38. mvaddstr(row+1,col-1,' - ');
  39. showit;
  40. init_pair(1,get_colour(bold),my_bg);
  41. attrset(COLOR_PAIR(1) or bold);
  42. mvaddstr(row-2,col-2,' --- ');
  43. mvaddstr(row-1,col-2,'-+++-');
  44. mvaddstr(row, col-2,'-+#+-');
  45. mvaddstr(row+1,col-2,'-+++-');
  46. mvaddstr(row+2,col-2,' --- ');
  47. showit;
  48. init_pair(1,get_colour(bold),my_bg);
  49. attrset(COLOR_PAIR(1) or bold);
  50. mvaddstr(row-2,col-2,' +++ ');
  51. mvaddstr(row-1,col-2,'++#++');
  52. mvaddstr(row, col-2,'+# #+');
  53. mvaddstr(row+1,col-2,'++#++');
  54. mvaddstr(row+2,col-2,' +++ ');
  55. showit;
  56. init_pair(1,get_colour(bold),my_bg);
  57. attrset(COLOR_PAIR(1) or bold);
  58. mvaddstr(row-2,col-2,' # ');
  59. mvaddstr(row-1,col-2,'## ##');
  60. mvaddstr(row, col-2,'# #');
  61. mvaddstr(row+1,col-2,'## ##');
  62. mvaddstr(row+2,col-2,' # ');
  63. showit;
  64. init_pair(1,get_colour(bold),my_bg);
  65. attrset(COLOR_PAIR(1) or bold);
  66. mvaddstr(row-2,col-2,' # # ');
  67. mvaddstr(row-1,col-2,'# #');
  68. mvaddstr(row, col-2,' ');
  69. mvaddstr(row+1,col-2,'# #');
  70. mvaddstr(row+2,col-2,' # # ');
  71. showit;
  72. end;
  73. Var
  74. startp,endp,row,diff,flag : longint;
  75. direction : boolean;
  76. begin
  77. flag:=0;
  78. initscr;
  79. if (has_colors<>0) then
  80. start_color;
  81. curs_set(0);
  82. randomize;
  83. cbreak;
  84. While true do
  85. begin
  86. repeat
  87. startp:=random (COLS -3);
  88. endp:=random (COLS - 3);
  89. If startp < 2 then
  90. startp:=2;
  91. If endp <2 then
  92. endp:=2;
  93. direction:=startp > endp ;
  94. diff:=abs(startp-endp);
  95. until (diff>2) and (diff<(LINES-2));
  96. attrset(A_NORMAL);
  97. for row:=0 to diff do
  98. begin;
  99. If direction then
  100. mvaddstr(LINES - row,startp + row ,'/')
  101. else
  102. mvaddstr(LINES - row,startp - row ,'\');
  103. inc(flag);
  104. if flag<>0 then
  105. begin
  106. showit;
  107. erase;
  108. flag:=0;
  109. end;
  110. end;
  111. inc(flag);
  112. if (flag<>0) then
  113. begin
  114. showit;
  115. flag:=0;
  116. end;
  117. randomize;
  118. If Direction then
  119. explode(LINES-row,startp+diff)
  120. Else
  121. explode(LINES-row,startp-diff);
  122. erase;
  123. showit;
  124. end;
  125. end.
  126. {
  127. $Log$
  128. Revision 1.3 2002-09-10 20:07:51 michael
  129. + Reinstated dissapeared code
  130. }