ftrisgr.inc 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. PROCEDURE ShowLines;
  2. VAR S,S2 : String;
  3. BEGIN
  4. SetFillStyle(SolidFill,0);
  5. Bar(300,460,550,478);
  6. Str(Lines:4,S2);
  7. S:='Lines : ';
  8. S:=S+S2+' Level: ';
  9. Str(Level:4,S2);
  10. S:=S+S2;
  11. OutTextXY(300,460,S);
  12. END;
  13. PROCEDURE ShowGameMode;
  14. BEGIN
  15. SetFillStyle(SolidFill,0);
  16. Bar(20,440,154,458);
  17. IF NrFigures<>7 THEN
  18. OutTextXY(20,440,'GameMode: Extended')
  19. ELSE
  20. OutTextXY(20,440,'GameMode: Standard')
  21. END;
  22. PROCEDURE CreateFrame;
  23. {Used once to print the "background" of the screen (not the background grid,
  24. but the text, and the cadre around the playfield)}
  25. BEGIN
  26. setbkcolor(black);
  27. setviewport(0,0,getmaxx,getmaxy,clipoff);
  28. clearviewport;
  29. SetTextStyle(0,Horizdir,2);
  30. OuttextXY(30,50,'FPCTris v0.08, (C) by Marco v/d Voort.');
  31. SetTextStyle(0,Horizdir,1);
  32. OutTextXY(300,HelpY-30,'A demo of the FPC Graph unit');
  33. VLine(DisplGrX-1,DisplGrY,DisplGrY+DisplGrScale*TheHeight);
  34. VLine(DisplGrX+TheWidth*DisplGrScale,DisplGrY,DisplGrY+DisplGrScale*TheHeight);
  35. HLine(DisplGrX-1,DisplGrX+TheWidth*DisplGrScale,DisplGrY+DisplGrScale*TheHeight);
  36. {Clean below area}
  37. ShowGameMode;
  38. OutTextXY(300,HelpY,'Arrow left/right to move, down to drop');
  39. OutTextXY(300,HelpY+LineDistY,'arrow-up to rotate the piece');
  40. OutTextXY(300,HelpY+2*LineDistY,'"P" to pause');
  41. OutTextXY(300,HelpY+3*LineDistY,'"E" Mode (standard or extended)');
  42. OutTextXY(300,HelpY+5*LineDistY,'Escape to quit');
  43. OutTextXY(300,HelpY+20+6*LineDistY,'The Highscores');
  44. ShowHighScore;
  45. END;
  46. PROCEDURE DisplMainField;
  47. {Graph mode version. Always caches.}
  48. VAR Row,Column,Difference,StartRow,EndRow,
  49. L : LONGINT;
  50. { LastCol : LONGINT; }
  51. BEGIN
  52. FOR Row:=0 TO TheHeight-1 DO
  53. BEGIN
  54. IF BackField[Row]<>MainField[Row] THEN
  55. BEGIN
  56. StartRow:=0;
  57. EndRow:=TheWidth-1;
  58. Difference:=MainField[Row] XOR BackField[Row]; {Calc differences in line}
  59. WHILE ((Difference AND AndTable[StartRow])=0) AND
  60. (StartRow<(TheWidth-1)) DO
  61. INC(StartRow);
  62. WHILE ((Difference AND AndTable[EndRow])=0) AND (EndRow>0) DO
  63. DEC(EndRow);
  64. FOR Column:=StartRow To EndRow DO
  65. BEGIN
  66. IF (MainField[Row] AND AndTable[Column])<>0 THEN
  67. BEGIN
  68. L:=ColorField[Row,Column];
  69. IF L=0 THEN
  70. L:=CurrentCol;
  71. IF L<>255 THEN
  72. BEGIN
  73. L:=L AND 15;
  74. SetFillStyle(SolidFill,L);
  75. Bar((Column)*DisplGrScale+DisplGrX,DisplGrY+DisplGrScale*Row,(Column+1)*DisplGrScale-1+DisplGrX,DisplGrY+DisplGrScale*(Row)+DisplGrScale-1);
  76. END;
  77. END
  78. ELSE
  79. BEGIN
  80. SetFillStyle(SolidFill,0);
  81. Bar((Column)*DisplGrScale+DisplGrX,DisplGrY+DisplGrScale*Row,(Column+1)*DisplGrScale-1+DisplGrX,DisplGrY+DisplGrScale*(Row)+DisplGrScale-1);
  82. END
  83. END;
  84. END;
  85. END;
  86. BackField:=MainField; {Keep a copy of the screen for faster updates
  87. of terminals, for next DisplMainField.}
  88. END;
  89. PROCEDURE ShowNextFigure(ThisFig:LONGINT);
  90. CONST NextFigX=10;
  91. NextFigY=120;
  92. NextFigDim=16;
  93. VAR I,J,K : LONGINT;
  94. BEGIN
  95. IF NOT nonupdatemode THEN
  96. BEGIN
  97. FOR I:=0 TO 4 DO
  98. BEGIN
  99. K:=Figures[ThisFig][FigureNr] AND MagicMasks[I];
  100. IF K=0 THEN
  101. BEGIN
  102. SetFillStyle(SolidFill,0);
  103. Bar(NextFigX,NextFigY+I*NextFigDim,NextFigX+5*NextFigDim-1,NextFigY+(I+1)*NextFigDim);
  104. END
  105. ELSE
  106. BEGIN
  107. FOR J:=0 TO 5 DO
  108. IF (K And AndTable[J+5*I])=0 THEN
  109. BEGIN
  110. SetFillStyle(SolidFill,0);
  111. Bar(NextFigX+J*NextFigDim,NextFigY+I*NextFigDim,NextFigX++(J+1)*NextFigDim,NextFigY+(I+1)*NextFigDim);
  112. END
  113. ELSE
  114. BEGIN
  115. SetFillStyle(SolidFill,1);
  116. Bar(NextFigX+J*NextFigDim,NextFigY+I*NextFigDim,NextFigX++(J+1)*NextFigDim,NextFigY+(I+1)*NextFigDim);
  117. END;
  118. END;
  119. END;
  120. END;
  121. END;
  122. PROCEDURE FixScores;
  123. VAR S : String;
  124. BEGIN
  125. Str(Score:5,S);
  126. SetFillStyle(SolidFill,0);
  127. Bar(300,440,450,458);
  128. OutTextXY(300,440,'Score :'+S);
  129. END;
  130. {
  131. $Log$
  132. Revision 1.3 2002-09-07 15:06:35 peter
  133. * old logs removed and tabs fixed
  134. }