home *** CD-ROM | disk | FTP | other *** search
- #B
- .J
- 30 CLS : DIM tet%(9, 25), fig%(7, 4, 8), rot%(9)
- 40 FOR i = 0 TO 9
- 41 READ rot%(i): IF i<8 THEN PRINT TAB(1,i)"!";
- 42 FO j = 0 TO 24:
- 43 IF j <2 THEN tet%(i, j) =1 ELSE tet%(i, j) = 0
- 50 NEXT j, i: FOR i = 0 TO 6: FOR j = 0 TO rot%(i)
- 52 FOR k = 0 TO 7: READ fig%(i, j, k): NEXT k, j, i
- 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
- 62 DATA 0,1,0,0,0,0,1,1,0,1,1
- 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
- 72 DATA -1,1,1,0,1,0,0,-1,0
- 80 DATA -1,-1,0,-1,0,0,0,1,1,0,1,-1,0,0,-1,0,1,1,0,1,0,0
- 82 DATA 0,-1,1,0,0,0,-1,0,-1,1
- 90 DATA -1,1,0,-1,0,0,0,1,1,0,0,0,-1,0,-1,-1,0,1,0,0,0,-1
- 92 DATA 1,-1,1,1,1,0,0,0,-1,0
- 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
- 102 DATA 0,1,0,0,0,-1,0,0,-1
- 110 le=0:po=0:li=0:dreh=0
- 120 posx=23:posy=4:posalt=posy:palt=posx
- 122 ze$=CHR$(128):zz=0:rota=0:ding=RND(7)-1
- 130 maxy=0:miny=9:FOR i=0 TO 6 STEP 2
- 140 IF fig%(ding,rota,i)>maxy THEN maxy=fig%(ding,rota,i)
- 150 IF fig%(ding,rota,i)<miny THEN miny=fig%(ding,rota,i)
- 160 NEXT
- 170 FOR i s TO (10-le)*5:NEXT:ge$=INKEY$(0)
- 175 IF ge$="#" THEN DU=GET
- 180 IF(ge$<>"s"AND ge$<>"S")OR dreh>rot%(ding)THEN GOTO 310
- 190 ralt rota:rota=rota+1:abr=0
- 192 IF rota>rot%(ding) THEN rota=0
- 200 FOR i=0 TO 6 STEP 2
- 220 IF posy+fig%(ding,rota,i)>8 THEN abr=1
- 230 IF posy+fig%(ding,rota,i)<1 THEN abr=1
- 240 NEXT:IF abr=1 THEN rota=ralt:GOTO 310
- 245 FOR i=0 TO 6 STEP 2
- 246 IF tet%(posy+fig%(ding,rota,i),posx+fig%(ding,rota,i+1))=1 THEN abr=1
- 247 NEXT
- 250 IF abr=1 THEN rota=ralt:GOTO 310
- 260 FOR i=0 TO 6 STEP 2
- 270 PRINT TAB(posx+fig%(ding,ralt,i+1),posy+fig%(ding,ralt,i)-1)" ";:PRINT TAB(30,2)" ";
- 280 tet%(posy+fig%(ding,ralt,i),posx+fig%(ding,ralt,i+1))=0
- 290 NEXT:dreh=dreh+1
- 291 maxy=0: miny=9: FOR i=0 TO 6 STEP 2
- 292 IF fig%(ding,rota,i)>maxy THEN maxy=fig%(ding,rota,i)
- 293 IF fig%(ding,rota,i)<miny THEN miny=fig%(ding,rota,i)
- 294 NEXT
- 310 palt=posx: posx=posx-1: posalt=posy: zz=zz+1:dreh=0
- 320 IF ge$<>"w" AND ge$<>"W" THEN GOTO 370
- 330 abr=0
- 340 FOR i=0 TO 6 STEP 2
- 350 IF tet%((posy+fig%(ding,rota,i))-1,posx+fig%(ding,rota,i+1))=1 THEN abr=1
- 360 NEXT:IF posy+miny>1 AND abr=0 THEN posy=posy-1
- 370 IF ge$<>"y" AND ge$<>"Y" THEN GOTO 410
- 380 abr=0: FOR i=0 TO 6 STEP 2
- 390 IF tet%((posy+fig%(ding,rota,i))+1,posx+fig%(ding,rota,i+1))=1 THEN abr=1
- 400 NEXT: IF posy+maxy<8 AND abr=0 THEN posy=posy+1
- 410 IF ge$<>"a" AND ge$<>"A" THEN GOTO 520
- 420 abr=0
- 430 FOR i=0 TO 6 STEP 2
- 440 IF tet%(posy+fig%(ding,rota,i),(posx+fig%(ding,rota,i+1))-1)=1 THEN abr=1
- 450 NEXT
- 460 IF abr=0 THEN posx=posx-1:GOTO 430
- 465 FOR i=0 TO 6 STEP 2
- 470 PRINT TAB(palt+fig%(ding,rota,i+1),posalt+fig%(ding,rota,i)-1)" ";:PRINT TAB(30,2)"÷";
- 480 tet%(posalt+fig%(ding,rota,i),palt+fig%(ding,rota,i+1))=0
- 482 NEXT:FOR i=0 TO 6 STEP 2
- 490 PRINT TAB(posx+fig%(ding,rota,i+1),posy+fig%(ding,rota,i)-1)ze$;:PRINT TAB(30,2)" ";
- 500 NEXT:IF posx=palt THEN GOTO 720 ELSE zz=10
- 510 GOTO 600
- 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)" ";
- 530 tet%(posalt+fig%(ding,rota,i),palt+fig%(ding,rota,i+1))=0
- 540 NEXT:abr=0
- 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)" ";
- 560 tet%(posy+fig%(ding,rota,i),posx+fig%(ding,rota,i+1))=2
- 570 IF tet%(posy+fig%(ding,rota,i),(posx+fig%(ding,rota,i+1))-1)=1 THEN abr=1
- 580 NEXT
- 590 IF abr=0 THEN GOTO 170
- 600 IF zz<2 THEN GOTO 720
- 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
- 620 FOR j=2 TO 23:abr=0:rba=0:FOR i=1 TO 8:IF tet%(i,j)=0 THEN abr=abr+1
- 625 IF tet%(i,j)=1 THEN rba=1
- 630 NEXT:IF rba=0 THEN j=23:GOTO 700
- 640 IF abr>0 THEN GOTO 700
- 650 FOR i=j TO 23:rba=0:FOR k=1 TO 8:tet%(k,i)=tet%(k,i+1)
- 660 IF tet%(k,i)=0 THEN PRINT TAB(i,k-1)" "; ELSE PRINT TAB(i,k-1)ze$;
- 665 IF tet%(k, i)=1 THEN rba=1
- 670 NEXT:IF rba=0 THEN i=23
- 680 NEXT
- 690 j=j-1:po=po+100:li=li+1:IF li+1>((le+1)*10)THEN le=le+1
- 700 NEXT: PRINT TAB(26,4)"Lines:";li;" Score:"; po;" Level:"; le;
- 710 GOTO 120
- 720 CLS:PRINT TAB(26,0)"Lines:"; li;" Score:"; po; " Level:"; le;
- 730 PRINT TAB(26,4)" Vielen Dank fürs Spielen!"
- 740 PRINT TAB(26,6)" 0 = nochmal; and. Taste: Ende"
- 750 a$=INKEY$(1000):IF a$="0" THEN RUN
- 760 END
-