Skip to content

Commit 4363972

Browse files
authored
Merge pull request #314 from boriel/feature/update_comecoquitos_example
Give credits to Pedro Guida for comecoquitos
2 parents 3d275f9 + 26be250 commit 4363972

2 files changed

Lines changed: 155 additions & 118 deletions

File tree

examples/english/comecoquitos.bas

Lines changed: 78 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,34 @@
1-
1 REM Compile with --sinclair
2-
10 REM COMECOQUITOS Luis Amado y MICROHOBBY SEMANAL
3-
11 DIM max, punt as UINTEGER: REM Needed to avoid overflow, since ZX BASIC will try byte
4-
15 BORDER 1: PAPER 1: INK 7: CLS : PRINT AT 10,10; FLASH 1;"STOP THE TAPE": PAUSE 200
5-
20 GO SUB 680
1+
10 REM COMECOQUITOS (LITTLE-PACMAN) by Luis Amado & MICROHOBBY SEMANAL Magazine (Issue #18)
2+
11 REM ---------------------------------------------------------------------------------------------------------------------------
3+
12 REM Modified by Pedro Güida in 2020 to make Little Pac-man movements more fluid when compiled to machine code.
4+
13 REM Comecoquitos was the first program I typed from in mid 80's from Microhobby magazine to my ZX Spectrum Plus
5+
14 REM So this "improvements" are my way to pay homage to that great moment. Thanks Luis! Because it was due to this
6+
15 REM program I got the kick off to become a videogames developer!
7+
16 REM And thanks to Jose too, for tweaking it to compile with Boriel ZX Basic!
8+
17 REM ---------------------------------------------------------------------------------------------------------------------------
9+
18 DIM max, punt as UINTEGER: REM Needed to avoid overflow, since ZX BASIC will try byte
10+
19 BORDER 1: PAPER 1: INK 7: CLS : PRINT AT 10,10; FLASH 1;"STOP THE TAPE": PAUSE 200
11+
20 GO SUB 810
612
30 LET max=0
7-
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"
13+
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": LET j2$=j$ : LET r = 0
814
50 FUNCTION p$(a): RETURN ("000"+ STR$ a)( LEN STR$ a TO ): END FUNCTION : REM Needed because DEF FN is not allowed
915
60 BORDER 4: PAPER 6: INK 2: CLS
1016
70 LET punt=0
1117
80 DIM l$(19)
1218
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"
1319
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"
14-
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"
20+
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\H\H"
1521
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"
1622
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"
1723
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"
18-
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"
24+
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\H\H"
1925
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"
2026
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"
2127
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"
2228
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"
2329
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"
2430
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"
25-
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"
31+
220 LET l$(14)="\H\I\H\I\I\I\I\H\H\I\I\I\I\I\I\I\I\I\I\H\H\I\I\I\I\I\I\H\I\H"
2632
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"
2733
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"
2834
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"
@@ -34,58 +40,71 @@
3440
310 PRINT AT 21,0; INK 2; PAPER 6;"SCORE:0000 HI-SCORE:0000"
3541
320 PRINT AT 0,0; INK 5; PAPER 0;" LAR SOFTWARE LALIN-PONTEVEDRA "
3642
330 LET l$(px)(py)=" "
37-
340 IF punt<1745 THEN GO TO 400
38-
350 IF punt=1745 THEN PRINT AT 2,13; INK 4; PAPER 1; FLASH 1; BRIGHT 1;"WELL DONE!"; AT 8,14;"YOU'VE"; AT 10,6;""; AT 10,14;"WIN"
43+
340 IF punt<1730 THEN GO TO 400
44+
350 IF punt=1730 THEN PRINT AT 2,13; INK 4; PAPER 1; FLASH 1; BRIGHT 1;"WELL DONE!"; AT 8,14;"YOU'VE"; AT 10,6;""; AT 10,14;"WON"
3945
360 PRINT AT 18,7; INK 7; PAPER 0; FLASH 1;"CONTINUE? (y/n)"
4046
370 IF INKEY$="y" THEN GO TO 60
4147
380 IF INKEY$="n" THEN GO TO 9999
4248
390 IF INKEY$<>"y" OR INKEY$<>"n" THEN GO TO 370
43-
400 IF INKEY$="" THEN GO TO 450
44-
410 IF INKEY$="5" THEN LET j$="\C"
45-
420 IF INKEY$="6" THEN LET j$="\D"
46-
430 IF INKEY$="7" THEN LET j$="\A"
47-
440 IF INKEY$="8" THEN LET j$="\B"
48-
450 PRINT AT px,py;" "
49-
460 IF j$="\A" AND l$(px-1)(py) <>"\H" THEN LET px=px-1
50-
470 IF j$="\B" AND l$(px)(py+1) <>"\H" THEN LET py=py+1
51-
480 IF j$="\D" AND l$(px+1)(py) <>"\H" THEN LET px=px+1
52-
490 IF j$="\C" AND l$(px)(py-1) <>"\H" THEN LET py=py-1
53-
500 PRINT AT px,py; INK 3;v$
54-
510 IF l$(px)(py)="\I" THEN LET punt=punt+5: BEEP .01,12
55-
520 IF l$(px)(py)="\F" THEN LET punt=punt+30: BEEP .02,16
56-
530 IF max<punt THEN LET max=punt
57-
540 PRINT AT 21,6; p$(punt); AT 21,28; p$(max): BEEP .001,50
58-
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
59-
560 IF INT ( RND*2)+(x2<px) AND l$(x2+1)(y2) <>"\H" THEN LET x2=x2+1
60-
570 IF INT ( RND*2)+(y2>py) AND l$(x2)(y2-1) <>"\H" THEN LET y2=y2-1
61-
580 IF INT ( RND*2)+(y2<py) AND l$(x2)(y2+1) <>"\H" THEN LET y2=y2+1
62-
590 PRINT AT x2,y2; INK 2;"\E"
63-
600 PRINT AT px,py; INK 3;j$
64-
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
65-
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
66-
630 IF INT ( RND*2)+(x3<px) AND l$(x3+1)(y3) <>"\H" THEN LET x3=x3+1
67-
640 IF INT ( RND*2)+(y3>py) AND l$(x3)(y3-1) <>"\H" THEN LET y3=y3-1
68-
650 IF INT ( RND*2)+(y3<py) AND l$(x3)(y3+1) <>"\H" THEN LET y3=y3+1
69-
660 PRINT AT x3,y3; INK 2;"\E"
70-
670 GO TO 330
71-
680 DATA 66,129,129,195,231,255,126,60
72-
690 DATA 62,121,240,224,224,240,121,62
73-
700 DATA 124,158,15,7,7,15,158,124
74-
710 DATA 60,126,255,231,195,129,129,66
75-
720 DATA 56,124,214,214,254,254,170,170
76-
730 DATA 24,82,255,255,255,255,126,36
77-
740 DATA 0,60,126,126,126,126,60,0
78-
750 DATA 170,85,170,85,170,85,170,85
79-
760 DATA 0,0,0,24,24,0,0,0
80-
770 RESTORE 680
81-
780 FOR i=1 TO 9: FOR n=0 TO 7
82-
790 READ a
83-
800 POKE USR CHR$(i+143)+n,a
84-
810 NEXT n: NEXT i
85-
820 RETURN
86-
830 PRINT AT 2,11; INK 7; PAPER 1; FLASH 1;"GAME OVER"
87-
840 PRINT AT 18,7; INK 7; PAPER 0; FLASH 1;"CONTINUE? (Y/N)"
88-
850 IF INKEY$="y" THEN GO TO 40
89-
860 IF INKEY$="n" THEN GO TO 9999
90-
870 IF INKEY$<>"n" OR INKEY$<>"y" THEN GO TO 850
49+
400 LET j2$ = j$
50+
410 IF INKEY$="" THEN GO TO 460
51+
420 IF INKEY$="o" THEN LET j$="\C"
52+
430 IF INKEY$="a" THEN LET j$="\D"
53+
440 IF INKEY$="q" THEN LET j$="\A"
54+
450 IF INKEY$="p" THEN LET j$="\B"
55+
460 FOR t=0 TO 1750: NEXT t: PRINT AT px,py;" "
56+
470 LET r = 0
57+
480 IF j$="\A" AND l$(px-1)(py) <>"\H" THEN LET px=px-1 : GOTO 630
58+
490 IF j$<>"\A" THEN GOTO 510
59+
500 GOTO 590
60+
510 IF j$="\B" AND l$(px)(py+1) <>"\H" THEN LET py=py+1 : GOTO 630
61+
520 IF j$<>"\B" THEN GOTO 540
62+
530 GOTO 590
63+
540 IF j$="\D" AND l$(px+1)(py) <>"\H" THEN LET px=px+1 : GOTO 630
64+
550 IF j$<>"\D" THEN GOTO 570
65+
560 GOTO 590
66+
570 IF j$="\C" AND l$(px)(py-1) <>"\H" THEN LET py=py-1 : GOTO 630
67+
580 IF j$<>"\C" THEN GOTO 610
68+
590 LET r = 1
69+
600 IF J$=J2$ THEN GOTO 630
70+
610 LET j$ = j2$
71+
620 IF r = 1 THEN GOTO 470
72+
630 PRINT AT px,py; INK 3;v$
73+
640 IF l$(px)(py)="\I" THEN LET punt=punt+5: BEEP .01,12
74+
650 IF l$(px)(py)="\F" THEN LET punt=punt+30: BEEP .02,16
75+
660 IF max<punt THEN LET max=punt
76+
670 PRINT AT 21,6; p$(punt); AT 21,28; p$(max): BEEP .001,50
77+
680 PRINT AT x2,y2;l$(x2)(y2): IF INT ( RND*2)+(x2>px) AND l$(x2-1)(y2) <>"\H" THEN LET x2=x2-1
78+
690 IF INT ( RND*2)+(x2<px) AND l$(x2+1)(y2) <>"\H" THEN LET x2=x2+1
79+
700 IF INT ( RND*2)+(y2>py) AND l$(x2)(y2-1) <>"\H" THEN LET y2=y2-1
80+
710 IF INT ( RND*2)+(y2<py) AND l$(x2)(y2+1) <>"\H" THEN LET y2=y2+1
81+
720 PRINT AT x2,y2; INK 2;"\E"
82+
730 PRINT AT px,py; INK 3;j$
83+
740 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 960
84+
750 PRINT AT x3,y3;l$(x3)(y3): IF INT ( RND*2)+(x3>px) AND l$(x3-1)(y3) <>"\H" THEN LET x3=x3-1
85+
760 IF INT ( RND*2)+(x3<px) AND l$(x3+1)(y3) <>"\H" THEN LET x3=x3+1
86+
770 IF INT ( RND*2)+(y3>py) AND l$(x3)(y3-1) <>"\H" THEN LET y3=y3-1
87+
780 IF INT ( RND*2)+(y3<py) AND l$(x3)(y3+1) <>"\H" THEN LET y3=y3+1
88+
790 PRINT AT x3,y3; INK 2;"\E"
89+
800 GO TO 330
90+
810 DATA 66,129,129,195,231,255,126,60
91+
820 DATA 62,121,240,224,224,240,121,62
92+
830 DATA 124,158,15,7,7,15,158,124
93+
840 DATA 60,126,255,231,195,129,129,66
94+
850 DATA 56,124,214,214,254,254,170,170
95+
860 DATA 24,82,255,255,255,255,126,36
96+
870 DATA 0,60,126,126,126,126,60,0
97+
880 DATA 170,85,170,85,170,85,170,85
98+
890 DATA 0,0,0,24,24,0,0,0
99+
900 RESTORE 810
100+
910 FOR i=1 TO 9: FOR n=0 TO 7
101+
920 READ a
102+
930 POKE USR CHR$(i+143)+n,a
103+
940 NEXT n: NEXT i
104+
950 RETURN
105+
960 PRINT AT 2,11; INK 7; PAPER 1; FLASH 1;"GAME OVER"
106+
970 PRINT AT 18,7; INK 7; PAPER 0; FLASH 1;"CONTINUE? (Y/N)"
107+
980 IF INKEY$="y" THEN GO TO 40
108+
990 IF INKEY$="n" THEN GO TO 9999
109+
1000 IF INKEY$<>"n" OR INKEY$<>"y" THEN GO TO 980
91110
9999 REM

examples/spanish/comecoquitos.bas

Lines changed: 77 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,33 @@
1-
1 REM Compilar con --sinclair
2-
10 REM COMECOQUITOS Luis Amado y MICROHOBBY SEMANAL
3-
11 DIM max, punt as UINTEGER: REM Needed to avoid overflow, since ZX BASIC will try byte
4-
15 BORDER 1: PAPER 1: INK 7: CLS : PRINT AT 10,10; FLASH 1;"PARE LA CINTA": PAUSE 200
5-
20 GO SUB 680
1+
10 REM COMECOQUITOS Luis Amado y MICROHOBBY SEMANAL (NRO. 18)
2+
11 REM ---------------------------------------------------------------------------------------------------------------------------
3+
12 REM Modificado por Pedro Güida en el año 2020 para mejorar fluidez de movimiento del Comecoquitos al compilar a código nativo.
4+
13 REM Comecoquitos fue el primer programa que transcribí a mediados de los 80 de la revista Microhobby en mi ZX Spectrum Plus
5+
14 REM así que estas "mojoras" son mi homenaje a ese gran momento. ¡Gracias Luis, pues este programa fue el puntapié inicial a
6+
15 REM mi vida como desarrollador de videojuegos! ¡Y gracias también José por adaptarlo para que compile con Boriel ZX Basic!
7+
16 REM ---------------------------------------------------------------------------------------------------------------------------
8+
17 DIM max, punt as UINTEGER: REM Needed to avoid overflow, since ZX BASIC will try byte
9+
18 BORDER 1: PAPER 1: INK 7: CLS : PRINT AT 10,10; FLASH 1;"PARE LA CINTA": PAUSE 200
10+
20 GO SUB 810
611
30 LET max=0
7-
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"
12+
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": LET j2$=j$ : LET r = 0
813
50 FUNCTION p$(a): RETURN ("000"+ STR$ a)( LEN STR$ a TO ): END FUNCTION : REM Needed because DEF FN is not allowed
914
60 BORDER 4: PAPER 6: INK 2: CLS
1015
70 LET punt=0
1116
80 DIM l$(19)
1217
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"
1318
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"
14-
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"
19+
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\H\H"
1520
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"
1621
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"
1722
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"
18-
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"
23+
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\H\H"
1924
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"
2025
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"
2126
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"
2227
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"
2328
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"
2429
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"
25-
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"
30+
220 LET l$(14)="\H\I\H\I\I\I\I\H\H\I\I\I\I\I\I\I\I\I\I\H\H\I\I\I\I\I\I\H\I\H"
2631
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"
2732
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"
2833
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"
@@ -34,58 +39,71 @@
3439
310 PRINT AT 21,0; INK 2; PAPER 6;"PUNTOS:0000 RECORD:0000"
3540
320 PRINT AT 0,0; INK 5; PAPER 0;" LAR SOFTWARE LALIN-PONTEVEDRA "
3641
330 LET l$(px)(py)=" "
37-
340 IF punt<1745 THEN GO TO 400
38-
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"
42+
340 IF punt<1730 THEN GO TO 400
43+
350 IF punt=1730 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"
3944
360 PRINT AT 18,4; INK 7; PAPER 0; FLASH 1;"QUIERES CONTINUAR? (s/n)"
4045
370 IF INKEY$="s" THEN GO TO 60
4146
380 IF INKEY$="n" THEN GO TO 9999
4247
390 IF INKEY$<>"s" OR INKEY$<>"n" THEN GO TO 370
43-
400 IF INKEY$="" THEN GO TO 450
44-
410 IF INKEY$="5" THEN LET j$="\C"
45-
420 IF INKEY$="6" THEN LET j$="\D"
46-
430 IF INKEY$="7" THEN LET j$="\A"
47-
440 IF INKEY$="8" THEN LET j$="\B"
48-
450 PRINT AT px,py;" "
49-
460 IF j$="\A" AND l$(px-1)(py) <>"\H" THEN LET px=px-1
50-
470 IF j$="\B" AND l$(px)(py+1) <>"\H" THEN LET py=py+1
51-
480 IF j$="\D" AND l$(px+1)(py) <>"\H" THEN LET px=px+1
52-
490 IF j$="\C" AND l$(px)(py-1) <>"\H" THEN LET py=py-1
53-
500 PRINT AT px,py; INK 3;v$
54-
510 IF l$(px)(py)="\I" THEN LET punt=punt+5: BEEP .01,12
55-
520 IF l$(px)(py)="\F" THEN LET punt=punt+30: BEEP .02,16
56-
530 IF max<punt THEN LET max=punt
57-
540 PRINT AT 21,7; p$(punt); AT 21,28; p$(max): BEEP .001,50
58-
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
59-
560 IF INT ( RND*2)+(x2<px) AND l$(x2+1)(y2) <>"\H" THEN LET x2=x2+1
60-
570 IF INT ( RND*2)+(y2>py) AND l$(x2)(y2-1) <>"\H" THEN LET y2=y2-1
61-
580 IF INT ( RND*2)+(y2<py) AND l$(x2)(y2+1) <>"\H" THEN LET y2=y2+1
62-
590 PRINT AT x2,y2; INK 2;"\E"
63-
600 PRINT AT px,py; INK 3;j$
64-
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
65-
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
66-
630 IF INT ( RND*2)+(x3<px) AND l$(x3+1)(y3) <>"\H" THEN LET x3=x3+1
67-
640 IF INT ( RND*2)+(y3>py) AND l$(x3)(y3-1) <>"\H" THEN LET y3=y3-1
68-
650 IF INT ( RND*2)+(y3<py) AND l$(x3)(y3+1) <>"\H" THEN LET y3=y3+1
69-
660 PRINT AT x3,y3; INK 2;"\E"
70-
670 GO TO 330
71-
680 DATA 66,129,129,195,231,255,126,60
72-
690 DATA 62,121,240,224,224,240,121,62
73-
700 DATA 124,158,15,7,7,15,158,124
74-
710 DATA 60,126,255,231,195,129,129,66
75-
720 DATA 56,124,214,214,254,254,170,170
76-
730 DATA 24,82,255,255,255,255,126,36
77-
740 DATA 0,60,126,126,126,126,60,0
78-
750 DATA 170,85,170,85,170,85,170,85
79-
760 DATA 0,0,0,24,24,0,0,0
80-
770 RESTORE 680
81-
780 FOR i=1 TO 9: FOR n=0 TO 7
82-
790 READ a
83-
800 POKE USR CHR$(i+143)+n,a
84-
810 NEXT n: NEXT i
85-
820 RETURN
86-
830 PRINT AT 2,11; INK 7; PAPER 1; FLASH 1;"SE ACABO"
87-
840 PRINT AT 18,4; INK 7; PAPER 0; FLASH 1;"QUIERES CONTINUAR? (S/N)"
88-
850 IF INKEY$="s" THEN GO TO 40
89-
860 IF INKEY$="n" THEN GO TO 9999
90-
870 IF INKEY$<>"n" OR INKEY$<>"s" THEN GO TO 850
48+
400 LET j2$ = j$
49+
410 IF INKEY$="" THEN GO TO 460
50+
420 IF INKEY$="o" THEN LET j$="\C"
51+
430 IF INKEY$="a" THEN LET j$="\D"
52+
440 IF INKEY$="q" THEN LET j$="\A"
53+
450 IF INKEY$="p" THEN LET j$="\B"
54+
460 FOR t=0 TO 1750: NEXT t: PRINT AT px,py;" "
55+
470 LET r = 0
56+
480 IF j$="\A" AND l$(px-1)(py) <>"\H" THEN LET px=px-1 : GOTO 630
57+
490 IF j$<>"\A" THEN GOTO 510
58+
500 GOTO 590
59+
510 IF j$="\B" AND l$(px)(py+1) <>"\H" THEN LET py=py+1 : GOTO 630
60+
520 IF j$<>"\B" THEN GOTO 540
61+
530 GOTO 590
62+
540 IF j$="\D" AND l$(px+1)(py) <>"\H" THEN LET px=px+1 : GOTO 630
63+
550 IF j$<>"\D" THEN GOTO 570
64+
560 GOTO 590
65+
570 IF j$="\C" AND l$(px)(py-1) <>"\H" THEN LET py=py-1 : GOTO 630
66+
580 IF j$<>"\C" THEN GOTO 610
67+
590 LET r = 1
68+
600 IF J$=J2$ THEN GOTO 630
69+
610 LET j$ = j2$
70+
620 IF r = 1 THEN GOTO 470
71+
630 PRINT AT px,py; INK 3;v$
72+
640 IF l$(px)(py)="\I" THEN LET punt=punt+5: BEEP .01,12
73+
650 IF l$(px)(py)="\F" THEN LET punt=punt+30: BEEP .02,16
74+
660 IF max<punt THEN LET max=punt
75+
670 PRINT AT 21,7; p$(punt); AT 21,28; p$(max): BEEP .001,50
76+
680 PRINT AT x2,y2;l$(x2)(y2): IF INT ( RND*2)+(x2>px) AND l$(x2-1)(y2) <>"\H" THEN LET x2=x2-1
77+
690 IF INT ( RND*2)+(x2<px) AND l$(x2+1)(y2) <>"\H" THEN LET x2=x2+1
78+
700 IF INT ( RND*2)+(y2>py) AND l$(x2)(y2-1) <>"\H" THEN LET y2=y2-1
79+
710 IF INT ( RND*2)+(y2<py) AND l$(x2)(y2+1) <>"\H" THEN LET y2=y2+1
80+
720 PRINT AT x2,y2; INK 2;"\E"
81+
730 PRINT AT px,py; INK 3;j$
82+
740 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 960
83+
750 PRINT AT x3,y3;l$(x3)(y3): IF INT ( RND*2)+(x3>px) AND l$(x3-1)(y3) <>"\H" THEN LET x3=x3-1
84+
760 IF INT ( RND*2)+(x3<px) AND l$(x3+1)(y3) <>"\H" THEN LET x3=x3+1
85+
770 IF INT ( RND*2)+(y3>py) AND l$(x3)(y3-1) <>"\H" THEN LET y3=y3-1
86+
780 IF INT ( RND*2)+(y3<py) AND l$(x3)(y3+1) <>"\H" THEN LET y3=y3+1
87+
790 PRINT AT x3,y3; INK 2;"\E"
88+
800 GO TO 330
89+
810 DATA 66,129,129,195,231,255,126,60
90+
820 DATA 62,121,240,224,224,240,121,62
91+
830 DATA 124,158,15,7,7,15,158,124
92+
840 DATA 60,126,255,231,195,129,129,66
93+
850 DATA 56,124,214,214,254,254,170,170
94+
860 DATA 24,82,255,255,255,255,126,36
95+
870 DATA 0,60,126,126,126,126,60,0
96+
880 DATA 170,85,170,85,170,85,170,85
97+
890 DATA 0,0,0,24,24,0,0,0
98+
900 RESTORE 810
99+
910 FOR i=1 TO 9: FOR n=0 TO 7
100+
920 READ a
101+
930 POKE USR CHR$(i+143)+n,a
102+
940 NEXT n: NEXT i
103+
950 RETURN
104+
960 PRINT AT 2,11; INK 7; PAPER 1; FLASH 1;"SE ACABO"
105+
970 PRINT AT 18,4; INK 7; PAPER 0; FLASH 1;"QUIERES CONTINUAR? (S/N)"
106+
980 IF INKEY$="s" THEN GO TO 40
107+
990 IF INKEY$="n" THEN GO TO 9999
108+
1000 IF INKEY$<>"n" OR INKEY$<>"s" THEN GO TO 980
91109
9999 REM

0 commit comments

Comments
 (0)