firework.pp 3.0 KB

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