Created
May 10, 2020 22:14
-
-
Save boriel/23a9b974872d726760c7c0b15127bb4d to your computer and use it in GitHub Desktop.
Conversión del Comecocos de MicroHobby Nº18 a ZX BASIC. Compilar con -Z
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
10 REM COMECOQUITOS Luis Amado y MICROHOBBY SEMANAL | |
11 DIM max, punt as UINTEGER: REM Needed to avoid overflow, since ZX BASIC will try byte | |
15 BORDER 1: PAPER 1: INK 7: CLS : PRINT AT 10,10; FLASH 1;"PARE LA CINTA": PAUSE 200 | |
20 GO SUB 680 | |
30 LET max=0 | |
40 LET x2=18: LET x3=4: LET y3=18: LET y2=15: LET px=10: LET py=15: LET v$="\G": LET j$="\B" | |
50 FUNCTION p$(a): RETURN ("000"+ STR$ a)( LEN STR$ a TO ): END FUNCTION : REM Needed because DEF FN is not allowed | |
60 BORDER 4: PAPER 6: INK 2: CLS | |
70 LET punt=0 | |
80 DIM l$(19) | |
90 LET l$(1)="\H\H\H\H\H\H\H\H\H\H\H\H\H\H\H\H\H\H\H\H\H\H\H\H\H\H\H\H\H\H" | |
100 LET l$(2)="\H\F\I\I\I\I\I\I\I\I\I\I\I\I\I\I\I\I\I\I\I\I\I\I\I\I\I\I\F\H" | |
110 LET l$(3)="\H\I\H\H\H\I\H\I\I\H\H\H\I\H\H\H\I\H\H\H\I\I\H\I\H\H\H\I\I\H" | |
120 LET l$(4)="\H\I\I\H\I\I\H\H\H\F\H\I\I\F\I\F\I\I\H\F\H\H\H\I\I\H\I\I\H\H" | |
130 LET l$(5)="\H\I\H\H\I\H\H\F\H\I\H\H\H\H\H\H\H\H\H\I\H\F\H\H\I\H\H\I\H\H" | |
140 LET l$(6)="\H\I\I\H\I\I\I\I\H\I\I\I\I\I\I\I\I\I\I\I\H\I\I\I\I\H\I\I\H\H" | |
150 LET l$(7)="\H\I\H\H\H\H\I\H\H\I\H\I\H\H\H\H\H\I\H\I\H\H\I\H\H\H\H\I\I\H" | |
160 LET l$(8)="\H\I\I\I\I\I\I\I\I\I\H\I\H\I\I\I\H\I\H\I\I\I\I\I\I\I\I\I\I\H" | |
170 LET l$(9)="\H\I\H\H\H\H\H\H\H\H\H\I\H\H\I\H\H\I\H\H\H\H\H\H\H\H\H\H\I\H" | |
180 LET l$(10)="\H\I\I\I\I\I\I\I\I\I\I\I\H\I\I\I\H\I\I\I\I\I\I\I\I\I\I\I\I\H" | |
190 LET l$(11)="\H\I\H\H\H\H\H\H\H\H\H\I\H\I\H\I\H\I\H\H\H\H\H\H\H\H\H\H\I\H" | |
200 LET l$(12)="\H\I\H\I\I\I\I\I\I\I\H\I\I\I\H\I\I\I\H\I\I\I\I\I\I\I\F\H\I\H" | |
210 LET l$(13)="\H\I\H\H\I\H\I\H\F\H\I\H\H\H\H\H\H\H\I\I\H\I\H\I\H\I\H\H\I\H" | |
220 LET l$(14)="\H\I\H\I\I\I\I\H\H\I\I\I\I\I\I\I\I\I\I\H\I\I\I\I\I\I\I\H\I\H" | |
230 LET l$(15)="\H\I\I\I\H\H\H\I\I\I\H\H\H\H\H\H\H\H\H\I\I\I\H\H\H\H\I\I\I\H" | |
240 LET l$(16)="\H\I\H\I\I\I\I\I\H\H\I\I\H\F\I\F\H\I\I\I\H\I\I\I\I\I\I\H\I\H" | |
250 LET l$(17)="\H\I\H\H\H\H\H\H\H\H\I\H\H\H\I\H\H\H\I\H\H\H\H\H\H\H\H\H\I\H" | |
260 LET l$(18)=l$(2) | |
270 LET l$(19)=l$(1) | |
280 PRINT : FOR f=1 TO 19: INK 1: PAPER 6: PRINT TAB 1;l$(f): NEXT f | |
290 FOR f=0 TO 21: PRINT INK 0; AT f,0;"\::"; AT f,31;"\::": NEXT f | |
300 PRINT AT 20,0; PAPER 0; INK 7; BRIGHT 1;" C O M E C O Q U I T O S " | |
310 PRINT AT 21,0; INK 2; PAPER 6;"PUNTOS:0000 RECORD:0000" | |
320 PRINT AT 0,0; INK 5; PAPER 0;" LAR SOFTWARE LALIN-PONTEVEDRA " | |
330 LET l$(px)(py)=" " | |
340 IF punt<1745 THEN GO TO 400 | |
350 IF punt=1745 THEN PRINT AT 2,13; INK 4; PAPER 1; FLASH 1; BRIGHT 1;"BRAVO"; AT 8,14;"HAS"; AT 10,6;"LOGRADO"; AT 10,14;"UNA"; AT 10,18;"VICTORIA" | |
360 PRINT AT 18,4; INK 7; PAPER 0; FLASH 1;"QUIERES CONTINUAR? (s/n)" | |
370 IF INKEY$="s" THEN GO TO 60 | |
380 IF INKEY$="n" THEN GO TO 9999 | |
390 IF INKEY$<>"s" OR INKEY$<>"n" THEN GO TO 370 | |
400 IF INKEY$="" THEN GO TO 450 | |
410 IF INKEY$="5" THEN LET j$="\C" | |
420 IF INKEY$="6" THEN LET j$="\D" | |
430 IF INKEY$="7" THEN LET j$="\A" | |
440 IF INKEY$="8" THEN LET j$="\B" | |
450 PRINT AT px,py;" " | |
460 IF j$="\A" AND l$(px-1)(py) <>"\H" THEN LET px=px-1 | |
470 IF j$="\B" AND l$(px)(py+1) <>"\H" THEN LET py=py+1 | |
480 IF j$="\D" AND l$(px+1)(py) <>"\H" THEN LET px=px+1 | |
490 IF j$="\C" AND l$(px)(py-1) <>"\H" THEN LET py=py-1 | |
500 PRINT AT px,py; INK 3;v$ | |
510 IF l$(px)(py)="\I" THEN LET punt=punt+5: BEEP .01,12 | |
520 IF l$(px)(py)="\F" THEN LET punt=punt+30: BEEP .02,16 | |
530 IF max<punt THEN LET max=punt | |
540 PRINT AT 21,7; p$(punt); AT 21,28; p$(max): BEEP .001,50 | |
550 PRINT AT x2,y2;l$(x2)(y2): IF INT ( RND*2)+(x2>px) AND l$(x2-1)(y2) <>"\H" THEN LET x2=x2-1 | |
560 IF INT ( RND*2)+(x2<px) AND l$(x2+1)(y2) <>"\H" THEN LET x2=x2+1 | |
570 IF INT ( RND*2)+(y2>py) AND l$(x2)(y2-1) <>"\H" THEN LET y2=y2-1 | |
580 IF INT ( RND*2)+(y2<py) AND l$(x2)(y2+1) <>"\H" THEN LET y2=y2+1 | |
590 PRINT AT x2,y2; INK 2;"\E" | |
600 PRINT AT px,py; INK 3;j$ | |
610 IF (x2=px AND y2=py) OR (x3=px AND y3=py) THEN FOR g=1 TO 10: FOR f=0 TO 7: PRINT INK f; AT px,py;j$: NEXT f: NEXT g: PRINT AT px,py; INK 6;j$: GO TO 830 | |
620 PRINT AT x3,y3;l$(x3)(y3): IF INT ( RND*2)+(x3>px) AND l$(x3-1)(y3) <>"\H" THEN LET x3=x3-1 | |
630 IF INT ( RND*2)+(x3<px) AND l$(x3+1)(y3) <>"\H" THEN LET x3=x3+1 | |
640 IF INT ( RND*2)+(y3>py) AND l$(x3)(y3-1) <>"\H" THEN LET y3=y3-1 | |
650 IF INT ( RND*2)+(y3<py) AND l$(x3)(y3+1) <>"\H" THEN LET y3=y3+1 | |
660 PRINT AT x3,y3; INK 2;"\E" | |
670 GO TO 330 | |
680 DATA 66,129,129,195,231,255,126,60 | |
690 DATA 62,121,240,224,224,240,121,62 | |
700 DATA 124,158,15,7,7,15,158,124 | |
710 DATA 60,126,255,231,195,129,129,66 | |
720 DATA 56,124,214,214,254,254,170,170 | |
730 DATA 24,82,255,255,255,255,126,36 | |
740 DATA 0,60,126,126,126,126,60,0 | |
750 DATA 170,85,170,85,170,85,170,85 | |
760 DATA 0,0,0,24,24,0,0,0 | |
770 RESTORE 680 | |
780 FOR i=1 TO 9: FOR n=0 TO 7 | |
790 READ a | |
800 POKE USR CHR$(i+143)+n,a | |
810 NEXT n: NEXT i | |
820 RETURN | |
830 PRINT AT 2,11; INK 7; PAPER 1; FLASH 1;"SE ACABO" | |
840 PRINT AT 18,4; INK 7; PAPER 0; FLASH 1;"QUIERES CONTINUAR? (S/N)" | |
850 IF INKEY$="s" THEN GO TO 40 | |
860 IF INKEY$="n" THEN GO TO 9999 | |
870 IF INKEY$<>"n" OR INKEY$<>"s" THEN GO TO 850 | |
9999 REM |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment