Skip to content

Commit e4d1561

Browse files
authored
Merge pull request #301 from boriel/feature/add_minipacman_example
Add mini-pacman example
2 parents e2f7546 + 7cf011d commit e4d1561

File tree

2 files changed

+182
-0
lines changed

2 files changed

+182
-0
lines changed

examples/english/comecoquitos.bas

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
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
6+
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"
8+
50 FUNCTION p$(a): RETURN ("000"+ STR$ a)( LEN STR$ a TO ): END FUNCTION : REM Needed because DEF FN is not allowed
9+
60 BORDER 4: PAPER 6: INK 2: CLS
10+
70 LET punt=0
11+
80 DIM l$(19)
12+
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"
13+
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"
15+
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"
16+
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"
17+
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"
19+
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"
20+
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"
21+
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"
22+
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"
23+
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"
24+
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"
26+
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"
27+
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"
28+
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"
29+
260 LET l$(18)=l$(2)
30+
270 LET l$(19)=l$(1)
31+
280 PRINT : FOR f=1 TO 19: INK 1: PAPER 6: PRINT TAB 1;l$(f): NEXT f
32+
290 FOR f=0 TO 21: PRINT INK 0; AT f,0;"\::"; AT f,31;"\::": NEXT f
33+
300 PRINT AT 20,0; PAPER 0; INK 7; BRIGHT 1;" C O M E C O Q U I T O S "
34+
310 PRINT AT 21,0; INK 2; PAPER 6;"SCORE:0000 HI-SCORE:0000"
35+
320 PRINT AT 0,0; INK 5; PAPER 0;" LAR SOFTWARE LALIN-PONTEVEDRA "
36+
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"
39+
360 PRINT AT 18,7; INK 7; PAPER 0; FLASH 1;"CONTINUE? (y/n)"
40+
370 IF INKEY$="y" THEN GO TO 60
41+
380 IF INKEY$="n" THEN GO TO 9999
42+
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
91+
9999 REM

examples/spanish/comecoquitos.bas

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
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
6+
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"
8+
50 FUNCTION p$(a): RETURN ("000"+ STR$ a)( LEN STR$ a TO ): END FUNCTION : REM Needed because DEF FN is not allowed
9+
60 BORDER 4: PAPER 6: INK 2: CLS
10+
70 LET punt=0
11+
80 DIM l$(19)
12+
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"
13+
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"
15+
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"
16+
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"
17+
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"
19+
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"
20+
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"
21+
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"
22+
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"
23+
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"
24+
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"
26+
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"
27+
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"
28+
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"
29+
260 LET l$(18)=l$(2)
30+
270 LET l$(19)=l$(1)
31+
280 PRINT : FOR f=1 TO 19: INK 1: PAPER 6: PRINT TAB 1;l$(f): NEXT f
32+
290 FOR f=0 TO 21: PRINT INK 0; AT f,0;"\::"; AT f,31;"\::": NEXT f
33+
300 PRINT AT 20,0; PAPER 0; INK 7; BRIGHT 1;" C O M E C O Q U I T O S "
34+
310 PRINT AT 21,0; INK 2; PAPER 6;"PUNTOS:0000 RECORD:0000"
35+
320 PRINT AT 0,0; INK 5; PAPER 0;" LAR SOFTWARE LALIN-PONTEVEDRA "
36+
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"
39+
360 PRINT AT 18,4; INK 7; PAPER 0; FLASH 1;"QUIERES CONTINUAR? (s/n)"
40+
370 IF INKEY$="s" THEN GO TO 60
41+
380 IF INKEY$="n" THEN GO TO 9999
42+
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
91+
9999 REM

0 commit comments

Comments
 (0)