firework.pp 2.8 KB

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