Papagaios
Aqui estão quatro papagaios, cada um de uma cor e com uma corda musical diferente no bico.
Teste o programa no WebMSX – The Online MSX Emulator
Quando o programa começa, um dos papagaios puxa a corda, produzindo uma nota musical. Você deve reproduzir essa nota. Em seguida, o computador mostra uma sequência de dois papagaios (duas notas), que você também deve repetir, e assim por diante.
Os poleiros dos pássaros foram dispostos na tela de modo a corresponderem à posição das teclas de controle do cursor. Assim, quando você aperta a tecla com a seta para cima o papagaio de cima puxa a corda, quando aperta a tecla com a seta para a esquerda é a vez do papagaio da esquerda e assim por diante. Como nos outros jogos, pode ser usado um joystick em lugar das teclas de controle do cursor.
Quando testamos o programa, ninguém conseguiu reproduzir uma sequência de mais de 25 notas; a média ficou por volta de 12. O programa foi feito para produzir sequências de até 50 notas. Se você conseguir chegar ao final, parabéns! Você possui uma memória fantástica… ou será que é um andróide?
Fonte: Livro de Jogos em MSX
Editora: Lutécia
Autor: Jim Gregory
Digitação: Renato Faria Lopes
Código fonte
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 |
1000 REM <<<< PAPAGAIOS - ANDY/JIM >>>> 1010 X=RND(-TIME) 1020 DIM NO(50) 1030 SCREEN 1,0,0 1040 GOSUB 1710 1050 GOSUB 1820 1060 SC=0:HI=0 1070 GOSUB 2050 1080 FOR A=1 TO 4 1090 GOSUB 1530 1100 NEXT A 1110 PO=0 1120 REM <<<< LOOP PRINCIPAL >>>> 1130 N=INT(RND(1)*4)+1 1140 PO=PO+1 1150 NO(PO)=N 1160 GOSUB 2170:LOCATE 20,10:PRINT "Minha vez" 1170 FOR B=1 TO PO 1180 GOSUB 2220 1190 NEXT B 1200 FOR T=1 TO 500:NEXT T 1210 A$=INKEY$:IF A$<>"" THEN 1210 1220 B=1 1230 GOSUB 2170:LOCATE 20,10:PRINT "Sua vez" 1240 A$=INKEY$:IF A$="" THEN 1240 1250 AA=ASC(A$) 1260 IF AA=29 THEN A=4:GOSUB 1650:GOSUB 1590:FOR T=1 TO 100:NEXT T 1270 IF AA=28 THEN A=2:GOSUB 1650:GOSUB 1590:FOR T=1 TO 100:NEXT T 1280 IF AA=30 THEN A=1:GOSUB 1650:GOSUB 1590:FOR T=1 TO 100:NEXT T 1290 IF AA=31 THEN A=3:GOSUB 1650:GOSUB 1590:FOR T=1 TO 100:NEXT T 1300 IF AA<28 OR AA>31 THEN 1240 1310 GOSUB 1650 1320 GOSUB 1530 1330 IF NO(B)=A THEN 1340 ELSE 1370 1340 IF B=PO THEN GOSUB 2170:LOCATE 20,10:PRINT "Muito bem":LOCATE 16,12:PRINT PO;"ate agora" 1350 IF B=PO THEN FOR T=1 TO 1000:NEXT T:GOSUB 2170:GOTO 1130 1360 B=B+1:GOTO 1240 1370 GOSUB 2170 1380 LOCATE 17,10:PRINT "Sequencia":LOCATE 17,11:PRINT "errada":LOCATE 17,12:PRINT "depois de";PO-1:LOCATE 17,13:PRINT "jogadas" 1390 FOR T=1 TO 1000:NEXT T 1400 GOSUB 2170 1410 LOCATE 17,10:PRINT "A sequencia":LOCATE 16,12:PRINT " era:" 1420 FOR T=1 TO 1000:NEXT T 1430 FOR B=1 TO PO 1440 GOSUB 2220 1450 NEXT B 1460 GOSUB 2170 1470 LOCATE 20,10:PRINT "Outra vez":X=RND(-TIME) 1480 FOR T=1 TO 1000:NEXT T 1490 GOSUB 2170 1500 GOTO 1110 1510 END 1520 REM <<<< PAPAGAIO LEVANTADO >>>> 1530 LOCATE PX(A),PY(A):PRINT CHR$(200);CHR$(201);CHR$(202) 1540 LOCATE PX(A),PY(A)+1:PRINT CHR$(203);CHR$(204);CHR$(205) 1550 LOCATE PX(A),PY(A)+2:PRINT CHR$(206);CHR$(207);CHR$(208) 1560 LOCATE PX(A),PY(A)+3:PRINT CHR$(209);CHR$(210);CHR$(211) 1570 RETURN 1580 REM <<<< PAPAGAIO ABAIXADO >>>> 1590 PLAY "L8"+CHR$(67+A) 1600 LOCATE PX(A)-1,PY(A)+2:PRINT CHR$(212);CHR$(213);CHR$(214);CHR$(215) 1610 LOCATE PX(A)-1,PY(A)+3:PRINT CHR$(209);CHR$(210) 1620 LOCATE PX(A),PY(A):PRINT CHR$(216) 1630 RETURN 1640 REM <<<< PAPAGAIO EM BRANCO >>>> 1650 LOCATE PX(A),PY(A):PRINT " " 1660 LOCATE PX(A),PY(A)+1:PRINT " " 1670 LOCATE PX(A)-1,PY(A)+2:PRINT " " 1680 LOCATE PX(A)-1,PY(A)+3:PRINT " " 1690 RETURN 1700 REM <<<< DEFINIR CARACTERES >>>> 1710 RESTORE 1860 1720 FOR C=1 TO 18 1730 READ CC 1740 FOR A=0 TO 7 1750 READ NN 1760 VPOKE CC*8+A,NN 1770 NEXT A 1780 NEXT C 1790 VPOKE &H2019,48:VPOKE &H201A,48:VPOKE &H201B,96 1800 RETURN 1810 REM <<<< INICIALIZAR VARIAVEIS >>>> 1820 PX(1)=10:PX(2)=14:PX(3)=6:PX(4)=3 1830 PY(1)=5:PY(2)=13:PY(3)=15:PY(4)=7 1840 RETURN 1850 REM <<<< CARACTERES >>>> 1860 DATA 200,16,16,16,16,0,14,31,63 1870 DATA 201,0,0,28,126,127,207,207,207 1880 DATA 202,0,0,0,0,0,0,128,128 1890 DATA 203,63,49,40,8,16,33,35,3 1900 DATA 204,255,255,254,124,126,255,255,255 1910 DATA 205,0,0,0,0,0,128,192,192 1920 DATA 206,3,3,3,3,3,1,1,1 1930 DATA 207,223,191,191,223,223,239,247,251 1940 DATA 208,192,192,224,224,224,240,240,248 1950 DATA 209,1,0,0,0,56,127,0,0 1960 DATA 210,253,126,12,24,48,252,0,0 1970 DATA 211,248,120,60,28,14,6,3,0 1980 DATA 212,7,31,63,127,99,99,127,63 1990 DATA 213,144,225,247,251,139,115,251,255 2000 DATA 214,0,254,255,255,255,255,255,255 2010 DATA 215,3,14,252,252,248,240,224,128 2020 DATA 216,16,16,16,16,16,16,16,16 2030 DATA 217,255,170,85,170,85,170,85,255 2040 REM <<<< TELA >>>> 2050 FOR Y=1 TO 4:LOCATE 10,Y:PRINT CHR$(216):NEXT Y 2060 FOR Y=1 TO 12:LOCATE 14,Y:PRINT CHR$(216):NEXT Y 2070 FOR Y=1 TO 14:LOCATE 6,Y:PRINT CHR$(216):NEXT Y 2080 FOR Y=1 TO 6:LOCATE 3,Y:PRINT CHR$(216):NEXT Y 2090 FOR X=0 TO 28:LOCATE X,0:PRINT CHR$(217):NEXT X 2100 LOCATE 10,9:PRINT CHR$(217);CHR$(217);CHR$(217) 2110 LOCATE 14,7:PRINT CHR$(217);CHR$(217);CHR$(217) 2120 LOCATE 6,19:PRINT CHR$(217);CHR$(217);CHR$(217) 2130 LOCATE 3,11:PRINT CHR$(217);CHR$(217);CHR$(217) 2140 LOCATE 7,21:PRINT "PAPAGAIOS" 2150 LOCATE 7,22:PRINT "---------" 2160 RETURN 2170 FOR Y=10 TO 15 2180 LOCATE 17,Y:PRINT STRING$(12," ") 2190 NEXT Y 2200 RETURN 2210 REM <<<< MOVIMENTAR PAPAGAIO >>>> 2220 A=NO(B):GOSUB 1650:GOSUB 1590 2230 FOR T=1 TO 100:NEXT T 2240 GOSUB 1650:GOSUB 1530 2250 RETURN |