Neste número: Mapa da memória MSX, jogos: Jawbreaker e Multicor, dicas: Apresentação de Programas, Efeito no Vídeo, Texto Multicor
Jawbreaker
1 '*************************
2 '* *
3 '* J A W B R E A K E R *
4 '* *
5 '*(c)1986 - RGB Software *
6 '*Por:Roberto Gil Brasil *
7 '* *
8 '*************************
10 '
20 TIME=0:KEYOFF:CLS:CLEAR1000:SCREEN1,2:COLOR15,1,1:CLS:ONSPRITEGOSUB920:OPEN"grp:"FOROUTPUTAS#1:STRIG(0) ON
30 A$="":B$="": RESTORE 1100:FORX=1TO16:READD$:A$=A$+CHR$(VAL("&b"+LEFT$(D$,8)))
40 B$=B$+CHR$(VAL("&b"+RIGHT$(D$,8)))
50 NEXTX:SPRITE$(0)=A$+B$
60 A$="":B$="": RESTORE 1270:FORX=1TO16:READD$:A$=A$+CHR$(VAL("&b"+D$)):NEXTX:SPRITE$(1)=A$
70 'Variaveis
80 TT=0:TP=0:CH=3
90 M=154:N=36:'Coordenadas de Jawbr
100 'Apres.
110 GOSUB1480
120 SCREEN2
130 PRESET(84,76):COLOR12:PRINT#1,"RGB Software":PRESET(96,90):COLOR7:PRINT#1,"apresenta"
140 FORV=1TO2:FORX1=60TO180:PUTSPRITE4,(X1,50):NEXTX1
150 FORX=70TO106:PUTSPRITE4,(180,X),12,0:NEXTX
160 FORX1=150TO80STEP-1:PUTSPRITE4,(X1,106),12,0:NEXTX1
170 FORX=106TO60STEP-1:PUTSPRITE4,(65,X),12,0:NEXTX
180 NEXTV
190 PUTSPRITE4,(-30,255),12,0:IFPLAY(0)THENGOTO190
200 SCREEN3:COLOR,1:CLS
210 LINE(15,0)-(235,230),2,B
220 FORGG=1TO2:Y=0:X1=0:A=RND(1)*13+2:IFA=7THENA=6
230 FORX=1TO10
240 COLORA:Y1=Y1+6:Y=Y+14:PSET(6+Y+Y1,70),1:PRINT#1,MID$("Jawbreaker",X,1)
250 SOUND7,56:SOUND8,15:FORK=1TO20STEP4:SOUND0,K*5:NEXTK
260 PUTSPRITE4,(6+Y+Y1,100),A,0
270 NEXTX:A=RND(1)*13+2:IFA=7THENA=6
280 Y=Y1+Y+19:FORX=10TO1STEP-1
290 Y=Y-20:PSET(6+Y,70),1:COLORA:PRINT#1,MID$("Jawbreaker",X,1)
300 PUTSPRITE4,(6+Y,100),A,0
310 FORK=20TO1STEP-4:SOUND0,K*5:NEXTK
320 ONSTRIGGOSUB1470
330 NEXTGG
340 GOSUB1480:WIDTH30:SCREEN1:COLOR1,7,2:LOCATE4,5:PRINT STRING$(22,223):LOCATE6,6:PRINT"J a w B r e a k e r":LOCATE4,7:PRINT STRING$(22,220):PUTSPRITE4,(122,80),13,0
350 PUTSPRITE4,(122,80),6,0
360 LOCATE1,22:PRINT"Press.barra de espaco p/jogar";:FORX=1TO2000:NEXTX:COLOR,,1:GOTO200
370 'Cenario
380 COLOR15,1:SCREEN2:SPRITEON:STRIG(0) OFF
390 COLOR7:PRESET(40,1):PRINT#1,"Jawbreaker":COLOR12:PRESET(150,1):PRINT#1,STRING$(CH,CHR$(249)):COLOR15
400 FORX=1TO3:LINE(30-X,12-X)-(220-X,172-X),12,B:NEXTX
410 LINE (50,30)-(200,30),4
420 LINE (50,50)-(200,50),4
430 LINE (50,70)-(200,70),4:LINE (50,90)-(200,90),4:LINE(50,110)-(200,110),4:LINE (50,130)-(200,130),4:LINE (50,150)-(200,150),4
440 FORX=18TO160STEP20:PRESET(50,X):PRINT#1,STRING$(19,CHR$(196)):NEXTX
445 ONINTERVAL=1500GOSUB1450
450 'Comando do Jogo
460 INTERVAL ON
470 V=RND(1)*12:W=RND(1)*12
480 FORX=30TO203STEP8:X1=X:X2=211-X+20
490 IFV<6THENGOSUB840
500 IFW<4THEN GOSUB850
510 IFW>8THEN GOSUB860
520 IFV>3THEN GOSUB870
530 IFW<10THEN GOSUB880
540 IFV<8THEN GOSUB890
550 IFV>5THENGOSUB900
560 IFV<6THEN GOSUB910
570 GOSUB720:NEXTX
580 FORX=30TO203STEP8:X2=X:X1=211-X+20
590 IFV<6THEN GOSUB840
600 IFW<4THEN GOSUB850
610 IFW>8THENGOSUB860
620 IFV>3THEN GOSUB870
630 IFW<10THEN GOSUB880
640 IFV<8THEN GOSUB890
650 IFV>5THEN GOSUB900
660 IFV<6THEN GOSUB910
670 GOSUB720
680 NEXT X
690 AA=RND(1)*4
700 FORX=2TO10:PUTSPRITEX,(-20,255),9,1:NEXTX:IFAA<3THENGOTO450
710 GOTO580
720 'Mov.Jawbr
730 INTERVALON:A=STICK(0):IFA=7ANDN>36THENN=N-8
740 IFN=124ANDM=74ANDFLAG=1THENGOTO780
750 IFA=3ANDN<203THENN=N+8
760 IFA=1ANDPOINT(N+7,M-4)<>4ANDPOINT(N,M-4)<>4ANDM>17THENM=M-20
770 IFA=5ANDPOINT(N+7,M+16)<>4ANDPOINT(N,M+16)<>4ANDM<150THENM=M+20
780 PUTSPRITE1,(N,M),9,1
790 IFN=124ANDM=74ANDFLAG=1THENPLAY"l32abcddcba":TT=TT+100:PT=PT+100:GOSUB1460
800 IFPOINT(N+3,M+8)=15ORPOINT(N+3,M+8)=7THENTP=TP+1:PT=PT+10:PRESET(N,M+4):COLOR1:PRINT#1,CHR$(210):COLOR15:PLAY"s0m1000o4c#":TT=TT+10:IFTP=151THENGOSUB1480:GOSUB1050
810 IFTT>=5000THENTT=0:CH=CH+1:PLAY"v15t255o4l8dl48l8gl8dl4cl8al1gl32":COLOR7:PRESET(40,1):PRINT#1,"Jawbreaker":COLOR12:PRESET(150,1):PRINT#1,STRING$(CH,CHR$(249)):COLOR15
820 RETURN
830 'Impress.dos Inimigos
840 PUTSPRITE3,(X2,30),10,0:RETURN
850 PUTSPRITE4,(X1,10),12,0:RETURN
860 PUTSPRITE5,(X1,50),13,0:RETURN
870 PUTSPRITE6,(X2,70),8,0:RETURN
880 PUTSPRITE7,(X1,90),2,0:RETURN
890 PUTSPRITE8,(X2,110),7,0:RETURN
900 PUTSPRITE9,(X1,130),9,0:RETURN
910 PUTSPRITE10,(X2,150),14,0:RETURN
920 IFPLAY(0)THEN920
930 SOUND7,56:SPRITEOFF:SOUND8,15:SOUND1,0:FORY=50TO200STEP5:SOUND0,Y+RND(1)*25:PUTSPRITE1,(N,M),RND(1)*7,1:NEXTY:SOUND8,0
940 CH=CH-1:IFCH=0THENGOTO990
950 COLOR1:PRESET(40,1):PRINT#1,STRING$(22,CHR$(219))
960 N=124:M=74:GOSUB720
970 COLOR7:PRESET(40,1):PRINT#1,"Jawbreaker":COLOR12:PRESET(150,1):PRINT#1,STRING$(CH,CHR$(249)):COLOR15
980 FORS=3TO10:PUTSPRITES,(-20,255),1,0:NEXTS:SPRITEON:RETURN
990 'Rot.Finalizacao
1000 PRESET(82,78):COLOR1:PRINT#1,STRING$(12,CHR$(219)):COLOR1:PRESET(80,96):PRINT#1,STRING$(12,CHR$(219)):PRESET(84,78):COLOR10:PRINT#1,"Fim de Jogo":PRESET(80,100):PRINT#1,USING"####";PT;:PRINT#1,"Pontos"
1010 PLAY"v15l16o5cco4bagfedccccc","v13l16o4ccdefgabo5ccccc","v14o3l4cccl16c"
1020 FORY=1TO10:PUTSPRITEY,(0,0),1,0:NEXTY:FORY=1TO1000:NEXTY:CLOSE
1030 IFPLAY(0)THEN1030
1040 RUN
1050 'Qd.TP-152
1060 INTERVALOFF:SPRITEOFF:FORY=2TO10:PUTSPRITEY,(-20,255),9,1:NEXTY
1070 PRESET(74,77):COLOR12:PRINT#1,PT;" Pontos":FORX=1TO200:NEXTX:COLOR1:PRESET(74,77):PRINT#1,STRING$(15,CHR$(219)):COLOR15
1080 TP=0:N=124:M=74:PUTSPRITE1,(N,M),9,1
1090 FORY=18TO160STEP20:PRESET(50,Y):PRINT#1,STRING$(19,CHR$(196)):NEXTY:SPRITEON:INTERVALON:RETURN
1100 DATA 0000000000000000
1110 DATA 0001111111111000
1120 DATA 0011111111111100
1130 DATA 0111111111111110
1140 DATA 1110001111000111
1150 DATA 1110001111000111
1160 DATA 1110001111000111
1170 DATA 1110001111000111
1180 DATA 1111111111111111
1190 DATA 1111111111111111
1200 DATA 1111111111111111
1210 DATA 1111100000011111
1220 DATA 1111100000011111
1230 DATA 1111111111111111
1240 DATA 0101010101010101
1250 DATA 1010101010101010
1260 '
1270 DATA 11111111
1280 DATA 11111111
1290 DATA 10011001
1300 DATA 10011001
1310 DATA 10011001
1320 DATA 11111111
1330 DATA 10000001
1340 DATA 10000001
1350 DATA 11000011
1360 DATA 11111111
1370 DATA 11111111
1380 DATA 10101010
1390 DATA 10101010
1400 DATA 10101010
1410 DATA 00000000
1420 DATA000000000
1430 GOTO1430
1440 DATA00000000
1450 COLOR7:PRESET(122,78):PRINT#1,CHR$(1)CHR$(66):FLAG=1:ONINTERVAL=300GOSUB1460:COLOR15:RETURN
1460 COLOR1:PRESET(122,78):PRINT#1,CHR$(219):FLAG=0:ONINTERVAL=1500GOSUB1450:RETURN
1470 COLOR,,1:PLAY"v15l32c16defgabo5c":RETURN 370
1480 SOUND7,56:PLAY"t250","t250":PLAY"s1m5000l4","s9m400l4"
1490 PLAY"o4r1","o3c8.e8.g4.g4."
1500 PLAY"o4c8.e8.g4.g4.","r1"
1510 PLAY"o4f4.e4.d4.","o4f4.e4.d4."
1520 PLAY"o4g4.g4.e4.","o3e4.e4.c4."
1530 RETURN
Multicor
Artigo Original: Fernando Pedrassani Costa Neves, Digitação: Wilson Pilon
Este é o tradicional jogo Senha, onde o microcomputador escolhe quatro cores diferentes entre si, dentre seis pré-estabelecidas, e você tem dez chances para descobrir quais são as cores e suas respectivas posições.
Rode o programa com RUN, e no centro da tela aparecerá o tabuleiro. Então o micro fará uma análise das suas cores, comparando-as com as que ele escolheu, fazendo em seguida uma reportagem que aparecerá no quadrado do tabuleiro (o ponto preto significa cor certa na posição certa, e o ponto branco, cor certa na posição errada).
Vale lembrar que, por ser um jogo que utiliza cores, somente pode ser jogado se o micro estiver acoplado a um televisor ou monitor colorido.
10 COLOR ,5,5
20 SCREEN 2
30 OPEN"grp:" FOR OUTPUT AS#1
40 PRESET(90,0): PRINT#1,"S e n h a"
50 LINE(100,15)-(200,15)
60 FORF=30 TO 180 STEP 15
70 LINE(79,F)-(200,F)
80 NEXT F
90 LINE(79,30)-(79,180)
100 LINE(200,15)-(200,180)
110 LINE(100,15)-(100,180)
120 DIM A(4)
130 IF Q=0 THEN GOTO 140 ELSE PRESET(25,185):PRINT#1,"Aguarde..."
140 A(1)=INT((RND(-TIME)*6)+17)
150 A(2)=INT((RND(-TIME)*6)+17)
160 A(3)=INT((RND(-TIME)*6)+17)
170 A(4)=INT((RND(-TIME)*6)+17)
180 FOR Z=1 TO 3
190 FOR U=Z+1 TO 4
200 IF A(Z)=A(U) THEN TIME=INT(RND(1)*999):Q=1:GOTO 130
210 NEXT U:NEXT Z
220 LINE(25,185)-(121,200),5,BF
230 FOR F=1 TO 4
240 IF A(F)=17 THEN A(F)=12
250 IF A(F)=18 THEN A(F)=4
260 IF A(F)=19 THEN A(F)=6
270 IF A(F)=20 THEN A(F)=10
280 IF A(F)=21 THEN A(F)=15
290 IF A(F)=22 THEN A(F)=1
300 NEXT F
310 FOR F=1 TO 8
320 READ K$: S$=S$+CHR$(VAL("&b"+K$))
330 NEXT F
340 SPRITE$(0)=S$
350 DATA 00010000
360 DATA 00110000
370 DATA 01110000
380 DATA 11111111
390 DATA 01110000
400 DATA 00110000
410 DATA 00010000
420 DATA 00000000
430 CIRCLE(20,40),4,12:PAINT(20,40),12
440 CIRCLE(20,54),4,4:PAINT(20,54),4
450 CIRCLE(20,68),4,6:PAINT(20,68),6
460 CIRCLE(20,82),4,10:PAINT(20,82),10
470 CIRCLE(20,96),4,15:PAINT(20,96),15
480 CIRCLE(20,110),4,1:PAINT(20,110),1
490 Y=35
500 X1=118
510 Y1=173
520 X2=85
530 Y2=176
540 FOR T=1 TO 10
550 FOR D=1 TO 4
560 C=STICK(0)
570 PUT SPRITE 0,(30,Y),15,0
580 IF C=1 THEN Y=Y-1:IF Y<32 THEN Y=105
590 IF C=5 THEN Y=Y+1:IF Y>108 THEN Y=35
600 IF STRIG(0)<>0 THEN 620
610 GOTO 560
620 PLAY"l64o4aco5ca"
630 IF Y>=32 AND Y<44 THEN P=12
640 IF Y>=44 AND Y<58 THEN P=4
650 IF Y>=58 AND Y<72 THEN P=6
660 IF Y>=72 AND Y<86 THEN P=10
670 IF Y>=86 AND Y<100 THEN P=15
680 IF Y>=100 AND Y<=114 THEN P=1
690 IF P=J THEN GOTO 560
700 CIRCLE(X1,Y1),4,P:PAINT(X1,Y1),P
710 J=P
720 X1=X1+20
730 NEXT D
740 DIM B(4)
750 FOR F=118 TO 178 STEP 20
760 FOR G=1 TO 4
770 IF POINT(F,Y1)=A(G) THEN B(G)=1
780 NEXT G
790 NEXT F
800 J=1
810 FOR F=118 TO 178 STEP 20
820 IF POINT(F,Y1)=A(J) THEN B(J)=B(J)+2
830 J=J+1
840 NEXT F
850 FOR F=1 TO 4
860 IF B(F)=0 THEN B(F)=5
870 IF B(F)=1 THEN B(F)=14
880 IF B(F)=2 THEN B(F)=5
890 IF B(F)=3 THEN B(F)=1
900 NEXT F
910 FOR F=1 TO 4
920 IF B(F)=5 THEN B(F)=15
930 NEXT F
940 FOR H=1 TO 3
950 FOR G=H+1 TO 4
960 IF B(H)>B(G) THEN SWAP B(H),B(G)
970 NEXT G
980 NEXT H
990 FOR F=1 TO 4
1000 IF B(F)=15 THEN B(F)=5
1010 NEXT F
1020 CIRCLE(X2,Y2),2,B(1):PAINT(X2,Y2),B(1)
1030 CIRCLE(X2+8,Y2),2,B(2):PAINT(X2+8,Y2),B(2)
1040 CIRCLE(X2,Y2-8),2,B(3):PAINT(X2,Y2-8),B(3)
1050 CIRCLE(X2+8,Y2-8),2,B(4):PAINT(X2+8,Y2-8),B(4)
1060 IF B(1)=1 AND B(2)=1 AND B(3)=1 AND B(4)=1 THEN GOTO 1200
1070 X1=118:Y1=Y1-15
1080 X2=85:Y2=Y2-15
1090 ERASE B
1100 NEXT T
1110 PLAY"o2bbbbbbbbbbbbbbbbbb"
1120 CIRCLE(118,25),4,A(1):PAINT(118,25),A(1)
1130 CIRCLE(138,25),4,A(2):PAINT(138,25),A(2)
1140 CIRCLE(158,25),4,A(3):PAINT(158,25),A(3)
1150 CIRCLE(178,25),4,A(4):PAINT(178,25),A(4)
1160 PRESET(10,120):PRINT#1,"Press. a"
1170 PRESET(10,130):PRINT#1,"barra de"
1180 PRESET(10,140):PRINT#1,"espacos"
1190 IF STRIG(0)<>0 THEN RUN ELSE GOTO 1190
1200 PRESET(5,120):PRINT#1,"Parabens"
1210 PRESET(5,130):PRINT#1,"Press. a"
1220 PRESET(5,140):PRINT#1,"barra de"
1230 PRESET(4,150):PRINT#1,"espacos"
1240 IF STRIG(0)<>0 THEN RUN ELSE GOTO 1240
Mapa de Memória MSX
Mapa Geral do MSX-BASIC
Dec | Hex | Kb | Descrição |
---|---|---|---|
0 | 0000 | 32.768 | Contém o BASIC MSX |
32768 | 8000 | 29.568 |
Área de programação contendo: |
62338 | F380 | 3.199 | Área reservada para o sistema |
Mapa Geral do MSX - BASIC de DISCO (DOS)
Dec | Hex | Kb | Descrição |
---|---|---|---|
0 | 0000 | 32.768 | Contém o DOS MSX |
32768 | 8000 | 29.568 |
Área de programação contendo: |
- | - | - | Área reservada para o sistema. O início é indicado pela variável HIMEM (64586/87 ou FC4A/FC4BH). |
Dicas
Artigo Original: Micro Sistemas, Digitação: Wilson Pilon
Apresentação de Programas
Melhore a apresentação dos seus programas com esta dica.
(Maurício Fonseca Polato)
10 SCREEN 3
20 OPEN "grp:"AS1
30 PRESET(10,20):PRINT#1,"Mauricio"
40 PRESET(50,70):PRINT#1,"Polato"
50 PRESET(70,130):PRINT#1,"1986"
60 FOR I=1 TO 3000:NEXT I
70 CLOSE
Efeito no Vídeo
Tente este efeito na tela do seu MSX.
(Iaperi G.D.Árbocz)
10 SCREEN 2
20 FOR A=255 TO 1 STEP -5
30 FOR B=191 TO 1 STEP -5
40 LET C=INT(RND(-TIME)*14+2)
50 LINE(A,B)-(255-A,191-B),C
60 NEXT B
70 NEXT A
80 END
Texto Multicor
Se você quiser trabalhar em modo texto com várias cores (modo texto 2, 32 colunas), rode esta dica ou incorpore-a nos seus programas.
Além da tela ficar mais bonita e esteticamente agradável, a depuração dos programas fica muito facilitada.
(João Ricardo de Freitas Oliveira)
1 SCREEN 1:IC=BASE(6):READ JC:K=0
2 FOR I=IC TO IC+31
3 K=K+1:IF K=1 THEN READ A,B
4 IF K<=JC THEN VPOKE I,(A*16+B):NEXT I:END:ELSE K=0:READ JC:GOTO 3
5 DATA 2,7,1,2,1,3,1,7,1,1,15,1,2,12,1, 4,13,1,9,10,1,1,12,1,1,10,1,1,12,1,4,11,8,3,7,1,1,10,1
WebMSX
- ms-60.dsk: Rode os programas pelo WebMSX