home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1990 / 01 / grdlagen / tetris.asc < prev   
Encoding:
Text File  |  1989-11-01  |  4.3 KB  |  98 lines

  1. #B
  2. .J
  3. 30 CLS : DIM tet%(9, 25), fig%(7, 4, 8), rot%(9)
  4. 40 FOR i = 0 TO 9
  5. 41 READ rot%(i): IF i<8 THEN PRINT TAB(1,i)"!";
  6. 42 FO j = 0 TO 24:
  7. 43 IF j <2 THEN tet%(i, j) =1 ELSE tet%(i, j) = 0
  8. 50 NEXT j, i: FOR i = 0 TO 6: FOR j = 0 TO rot%(i)
  9. 52 FOR k = 0 TO 7: READ fig%(i, j, k): NEXT k, j, i
  10. 60 DATA 1,0,1,1,3,3,3,0,0,0,0,-2,0,-1,0,0,0,1,-2,0,-1,0,0
  11. 62 DATA 0,1,0,0,0,0,1,1,0,1,1
  12. 70 DATA 0,0,0,-1,1,0,1,1,1,0,0,0,0,1,-1,1,0,1,0,0,1,0,1
  13. 72 DATA -1,1,1,0,1,0,0,-1,0
  14. 80 DATA -1,-1,0,-1,0,0,0,1,1,0,1,-1,0,0,-1,0,1,1,0,1,0,0
  15. 82 DATA 0,-1,1,0,0,0,-1,0,-1,1
  16. 90 DATA -1,1,0,-1,0,0,0,1,1,0,0,0,-1,0,-1,-1,0,1,0,0,0,-1
  17. 92 DATA 1,-1,1,1,1,0,0,0,-1,0
  18. 100 DATA 0,0,0,-1,1,0,0,1,1,0,0,0,0,1,-1,0,0,1,0,0,0,-1,-1
  19. 102 DATA 0,1,0,0,0,-1,0,0,-1
  20. 110 le=0:po=0:li=0:dreh=0
  21. 120 posx=23:posy=4:posalt=posy:palt=posx
  22. 122 ze$=CHR$(128):zz=0:rota=0:ding=RND(7)-1
  23. 130 maxy=0:miny=9:FOR i=0 TO 6 STEP 2
  24. 140  IF fig%(ding,rota,i)>maxy THEN maxy=fig%(ding,rota,i)
  25. 150  IF fig%(ding,rota,i)<miny THEN miny=fig%(ding,rota,i)
  26. 160 NEXT
  27. 170 FOR i s TO (10-le)*5:NEXT:ge$=INKEY$(0)
  28. 175 IF ge$="#" THEN DU=GET
  29. 180 IF(ge$<>"s"AND ge$<>"S")OR dreh>rot%(ding)THEN GOTO 310
  30. 190  ralt rota:rota=rota+1:abr=0
  31. 192  IF rota>rot%(ding) THEN rota=0
  32. 200  FOR i=0 TO 6 STEP 2
  33. 220   IF posy+fig%(ding,rota,i)>8 THEN abr=1
  34. 230   IF posy+fig%(ding,rota,i)<1 THEN abr=1
  35. 240  NEXT:IF abr=1 THEN rota=ralt:GOTO 310
  36. 245  FOR i=0 TO 6 STEP 2
  37. 246   IF tet%(posy+fig%(ding,rota,i),posx+fig%(ding,rota,i+1))=1 THEN abr=1
  38. 247  NEXT
  39. 250  IF abr=1 THEN rota=ralt:GOTO 310
  40. 260   FOR i=0 TO 6 STEP 2
  41. 270   PRINT TAB(posx+fig%(ding,ralt,i+1),posy+fig%(ding,ralt,i)-1)" ";:PRINT TAB(30,2)" ";
  42. 280    tet%(posy+fig%(ding,ralt,i),posx+fig%(ding,ralt,i+1))=0
  43. 290   NEXT:dreh=dreh+1
  44. 291 maxy=0: miny=9: FOR i=0 TO 6 STEP 2
  45. 292  IF fig%(ding,rota,i)>maxy THEN maxy=fig%(ding,rota,i)
  46. 293  IF fig%(ding,rota,i)<miny THEN miny=fig%(ding,rota,i)
  47. 294 NEXT
  48. 310 palt=posx: posx=posx-1: posalt=posy: zz=zz+1:dreh=0
  49. 320 IF ge$<>"w" AND ge$<>"W" THEN GOTO 370
  50. 330  abr=0
  51. 340  FOR i=0 TO 6 STEP 2
  52. 350 IF tet%((posy+fig%(ding,rota,i))-1,posx+fig%(ding,rota,i+1))=1 THEN abr=1
  53. 360  NEXT:IF posy+miny>1 AND abr=0 THEN posy=posy-1
  54. 370 IF ge$<>"y" AND ge$<>"Y" THEN GOTO 410
  55. 380  abr=0: FOR i=0 TO 6 STEP 2
  56. 390 IF tet%((posy+fig%(ding,rota,i))+1,posx+fig%(ding,rota,i+1))=1 THEN abr=1
  57. 400  NEXT: IF posy+maxy<8 AND abr=0 THEN posy=posy+1
  58. 410 IF ge$<>"a" AND ge$<>"A" THEN GOTO 520
  59. 420  abr=0
  60. 430   FOR i=0 TO 6 STEP 2
  61. 440    IF tet%(posy+fig%(ding,rota,i),(posx+fig%(ding,rota,i+1))-1)=1 THEN abr=1
  62. 450   NEXT
  63. 460  IF abr=0 THEN posx=posx-1:GOTO 430
  64. 465  FOR i=0 TO 6 STEP 2
  65. 470 PRINT TAB(palt+fig%(ding,rota,i+1),posalt+fig%(ding,rota,i)-1)" ";:PRINT TAB(30,2)"÷";
  66. 480   tet%(posalt+fig%(ding,rota,i),palt+fig%(ding,rota,i+1))=0
  67. 482 NEXT:FOR i=0 TO 6 STEP 2
  68. 490 PRINT TAB(posx+fig%(ding,rota,i+1),posy+fig%(ding,rota,i)-1)ze$;:PRINT TAB(30,2)" ";
  69. 500  NEXT:IF posx=palt THEN GOTO 720 ELSE zz=10
  70. 510  GOTO 600
  71. 520 FOR i=0 TO 6 STEP 2: PRINT TAB(palt+fig%(ding,rota,i+1),posalt+fig%(ding,rota,i)-1)" ";:PRINT TAB(30,2)" ";
  72. 530  tet%(posalt+fig%(ding,rota,i),palt+fig%(ding,rota,i+1))=0
  73. 540 NEXT:abr=0
  74. 550 FOR i=0 TO 6 STEP 2: PRINT TAB(posx+fig%(ding,rota,i+1),posy+fig%(ding,rota,i)-1)ze$;:PRINT TAB(30,2)" ";
  75. 560  tet%(posy+fig%(ding,rota,i),posx+fig%(ding,rota,i+1))=2
  76. 570  IF tet%(posy+fig%(ding,rota,i),(posx+fig%(ding,rota,i+1))-1)=1 THEN abr=1
  77. 580 NEXT
  78. 590 IF abr=0 THEN GOTO 170
  79. 600 IF zz<2 THEN GOTO 720
  80. 610 FOR i=0 TO 6 STEP 2:tet%(posy+fig%(ding,rota,i),posx+fig%(ding,rota,i+1))=1:NEXT:po=po+palt
  81. 620 FOR j=2 TO 23:abr=0:rba=0:FOR i=1 TO 8:IF tet%(i,j)=0 THEN abr=abr+1
  82. 625  IF tet%(i,j)=1 THEN rba=1
  83. 630  NEXT:IF rba=0 THEN j=23:GOTO 700
  84. 640  IF abr>0 THEN GOTO 700
  85. 650   FOR i=j TO 23:rba=0:FOR k=1 TO 8:tet%(k,i)=tet%(k,i+1)
  86. 660     IF tet%(k,i)=0 THEN PRINT TAB(i,k-1)" "; ELSE PRINT TAB(i,k-1)ze$;
  87. 665     IF tet%(k, i)=1 THEN rba=1
  88. 670    NEXT:IF rba=0 THEN i=23
  89. 680   NEXT
  90. 690  j=j-1:po=po+100:li=li+1:IF li+1>((le+1)*10)THEN le=le+1
  91. 700 NEXT: PRINT TAB(26,4)"Lines:";li;" Score:"; po;" Level:"; le;
  92. 710 GOTO 120
  93. 720 CLS:PRINT TAB(26,0)"Lines:"; li;" Score:"; po; " Level:"; le;
  94. 730 PRINT TAB(26,4)" Vielen Dank fürs Spielen!"
  95. 740 PRINT TAB(26,6)"  0 = nochmal; and. Taste: Ende"
  96. 750 a$=INKEY$(1000):IF a$="0" THEN RUN
  97. 760 END
  98.