Sobra Um
Para quem não conhece, Sobra Um constitui-se em um jogo solitário de raciocínio, onde tem-se por objetivo retirar todos os pinos do jogo menos um, que deverá ficar na casa central do tabuleiro.
Teste o programa no WebMSX – The Online MSX Emulator
Para tirar um pino do jogo é preciso que ele tenha, de um lado, uma casa vazia e, do outro lado, um pino. O pino oposto à casa vazia pula por cima do pino intermediário e ocupa a casa vazia. Por sua vez, o pino intermediário que foi saltado é retirado do jogo.
MOVIMENTAÇÃO:
– O cursor poderá ser movimentado para qualquer posição do tabuleiro com o auxílio das teclas do cursor.
– Para retirar os pinos deve-se:
a) Posicionar o cursor sobre o pino a ser retirado;
b) Pressionar a barra de espaços;
c) Levar o cursor até a casa vazia onde será colocado o pino; e
d) Pressionar novamente a barra de espaços.
Se a jogada estiver correta, será efetuado o transporte e a retirada do pino. Caso contrário, soará um aviso de erro.
FIM DE JOGO: Quando você não puder mais retirar o pino do jogo, ele será automaticamente finalizado.
Se você conseguir deixar apenas um pino na casa central do tabuleiro, terá conseguido cumprir o objetivo do jogo.
OBSERVAÇÕES:
– Para terminar uma partida a qualquer momento, basta pressionar (RETURN).
– Para interromper o programa a qualquer momento, basta pressionar (CTRL+STOP).
Fonte: Revista CPU MSX nr. 11
Autor: Renato Paulo de Mello – MSX Adventure
Digitação: Jeimes Uchôa
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 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 |
1 ' OOOOOOOOOOOOOOOOOOOOOOOOOOOO 2 ' O O 3 ' O SOBRA UM - MSX O 4 ' O 1988 O 5 ' O Versao 1.0 O 6 ' O RENATO PAULO DE MELLO O 7 ' O O 8 ' OOOOOOOOOOOOOOOOOOOOOOOOOOOO 9 ' 10 DEFINTA-Z:CLEAR400 20 FORI=1TO10:KEYI,"":NEXT 30 GOSUB1880 40 ONSTOPGOSUB1770 50 STOPON 60 GOSUB1260 70 A=USR2(0) 80 A$=INKEY$ 90 IFA$=CHR$(32)THENPLAYM3$:T=ASC(A$)-31:ONT+PGOSUB160,200 100 IFA$=CHR$(13)THENPLAYM3$:GOTO660 110 A=STICK(0) 120 ONAGOSUB1010,1050,1060,1050,1110,1050,1160,1050 130 PUTSPRITE1,(X,Y),11 140 FORI=1TO50:NEXTI 150 GOTO 80 160 X1=X+8:Y1=Y+8 170 P1=POINT(X1,Y1):P=1 180 IFP1<>8THENGOSUB550 190 RETURN 200 X2=X+8:Y2=Y+8:P=0 210 P2=POINT(X2,Y2) 220 IFP2<>1THENGOSUB550:RETURN 230 IF(X1<>X2)AND(Y1<>Y2)THEN550 240 IF(X1=X2)AND(Y1>Y2)THENYY=(Y1+Y2)\2:XX=X2:IF(Y1-YY)<>18THEN550ELSEGOTO 290 250 IF(X1<X2)AND(Y1=Y2)THENXX=(X1+X2)\2:YY=Y2:IF(X2-XX)<>18THEN550ELSEGOTO290 260 IF(X1=X2)AND(Y1<Y2)THENYY=(Y1+Y2)\2:XX=X2:IF(Y2-YY)<>18THEN550ELSEGOTO290 270 IF(X1>X2)AND(Y1=Y2)THENXX=(X1+X2)\2:YY=Y1:IF(XX-X2)<>18THEN550ELSEGOTO290 280 GOTO 550 290 IFPOINT(XX,YY)=1THEN550 300 CIRCLE(XX,YY),4,1:PAINT(XX,YY),1 310 CIRCLE(XX,YY),4,4 320 CIRCLE(X1,Y1),4,1:PAINT(X1,Y1),1 330 CIRCLE(X1,Y1),4,4 340 CIRCLE(X2,Y2),4,8:PAINT(X2,Y2),8 350 PT=PT-1:GOSUB590 360 GOSUB380 370 RETURN 380 FORI=28TO172STEP18 390 KA=POINT(140,I):KB=POINT(140,I+18) 400 KC=POINT(157,I):KD=POINT(157,I+18) 410 KE=POINT(175,I):KF=POINT(175,I+18) 420 IF(KA+KC+KE)=24AND(KB+KD+KF)=3THEN450 430 IF(KA+KC)=16OR(KC+KE)=16THENRETURN 440 IF(KA+KB)=16OR(KC+KD)=16OR(KE+KF)=16THENRETURN 450 NEXT 460 FORI=86TO230STEP18 470 KA=POINT(I,84):KB=POINT(I+18,84) 480 KC=POINT(I,102):KD=POINT(I+18,102) 490 KE=POINT(I,120):KF=POINT(I+18,120) 500 IF(KA+KC+KE)=24AND(KB+KD+KF)=3THEN530 510 IF(KA+KC)=16OR(KC+KE)=16THENRETURN 520 IF(KA+KB)=16OR(KC+KD)=16OR(KE+KF)=16THENRETURN 530 NEXT 540 GOTO 660 550 PLAY"t200o2v15c2","t200o1v15c2" 560 IFPLAY(0)THEN560 570 P1=0:P2=0:P=0 580 RETURN 590 IFPT=RE-1THENPLAYM1$:COLOR11:NV=2:PX=13:PY=160:DI$="NOVO RECORDE":GOSUB1210 600 PSET(28,90),POINT(28,90):COLOR1:PRINT#1,Z1$ 610 COLOR 15:FORI=1TO2:PSET(29+I,90),POINTSTEP(0,0):PRINT#1,USING"##";PT:NEXT 620 IFPT>=RETHENRETURN 630 PSET(28,125),POINTSTEP(0,0):COLOR1:PRINT#1,Z1$ 640 COLOR 15:FORI=1TO2:PSET(29+I,125),POINTSTEP(0,0):PRINT#1,USING"##";PT:NEXT 650 RETURN 660 PSET(12,160),POINTSTEP(0,0):COLOR1:PRINT#1,Z2$ 670 X=150:Y=94:PUTSPRITE1,(X,Y),11 680 COLOR11:NV=3:PY=160 690 IFPT>1THENPX=37:DI$="F I M":GOSUB1210:GOTO 790 700 IFPOINT(157,102)<>8THENPX=34:DI$="QUASE !!":GOSUB1210:PX=4:PY=170:DI$="TENTE NOVAMENTE":GOSUB1210:GOTO 820 710 PX=20:DI$="PARABENS !!!":GOSUB1210 720 PX=5:PY=170:DI$="VOCE CONSEGUIU!":GOSUB1210 730 PLAY"s8m8000o4t125" 740 FORI=2TO10 750 PLAYM$(I) 760 NEXT 770 PLAY"r1r1" 780 GOTO 800 790 PLAYM4$:PLAYM4$+"r1r1" 800 IFPLAY(0)THEN800 810 GOTO 840 820 PLAYM2$:PLAYM2$+"r2" 830 IFPLAY(0)THEN830 840 PSET(4,160),POINTSTEP(0,0):COLOR 1:PRINT#1,Z2$+Z1$:PSET(4,170),POINTSTEP(0,0):PRINT#1,Z2$+Z1$ 850 COLOR 4:NV=2:PX=35:PY=160:DI$="PRESSIONE":GOSUB1210 860 PX=37:PY=170:DI$="<ESPACO>":GOSUB1210 870 A=USR2(0) 880 A$=INKEY$ 890 IFA$<>" "THEN880 900 PSET(30,160),POINTSTEP(0,0):COLOR 1:PRINT#1,Z2$:PSET(30,170),POINTSTEP(0,0):PRINT#1,Z2$ 910 PUTSPRITE1,(0,208),11 920 X1=0:Y1=0:X2=0 930 Y2=0:XX=0:YY=0 940 IFRE>PTTHENRE=PT 950 PT=44 960 GOSUB1410 970 PUTSPRITE1,(X,Y),11 980 PLAYM1$ 990 IFPLAY(0)THEN990 1000 GOTO 70 1010 IFY<94ANDX>184THEN1050 1020 IFY<94ANDX<132THEN1050 1030 IFY<40THEN1050 1040 Y=Y-18 1050 RETURN 1060 IFX>150ANDY>112THEN1100 1070 IFX>150ANDY<76THEN1100 1080 IFX>204THEN1100 1090 X=X+18 1100 RETURN 1110 IFY>94ANDX<132THEN1150 1120 IFY>94ANDX>168THEN1150 1130 IFY>148THEN1150 1140 Y=Y+18 1150 RETURN 1160 IFX<150ANDY>112THEN1200 1170 IFX<150ANDY<76THEN1200 1180 IFX<96THEN1200 1190 X=X-18 1200 RETURN 1210 FORJ=1TONV 1220 PSET(PX+J,PY),POINTSTEP(0,0):PRINT#1,DI$ 1230 NEXT 1240 RETURN 1260 COLOR 15,1,1 1270 SCREEN2,1,0 1280 PLAYM$(2) 1290 OPEN"grp:"AS1 1300 INTERVALON 1310 A=USR0(0) 1320 ONINTERVAL=115GOSUB1840:INTERVALON 1330 GOSUB1390 1340 GOSUB1560 1350 A=USR1(0) 1360 IFPLAY(0)THEN1360 1370 PLAYM1$ 1380 RETURN 1390 DRAW"bm130,20;c4r55d55r55d55l55d55l55u55l55u55r55u55" 1400 DRAW"bm128,18;c4r59d55r55d59l55d55l59u55l55u59r55u55" 1410 FORI=30TO174STEP18 1420 CIRCLE(140,I),4,8:CIRCLE(158,I),4,8:CIRCLE(176,I),4,8:PAINT(140,I),8:PAINT(158,I),8:PAINT(176,I),8 1430 NEXT 1440 FORI=86TO122STEP18 1450 CIRCLE(I,84),4,8:CIRCLE(I,102),4,8:CIRCLE(I,120),4,8:PAINT(I,84),8:PAINT(I,102),8:PAINT(I,120),8 1460 NEXT 1470 FORI=194TO230STEP18 1480 CIRCLE(I,84),4,8:CIRCLE(I,102),4,8:CIRCLE(I,120),4,8:PAINT(I,84),8:PAINT(I,102),8:PAINT(I,120),8 1490 NEXT 1500 CIRCLE(158,102),4,1:PAINT(158,102),1 1510 CIRCLE(158,102),4,4 1520 COLOR 12:NV=2:PX=15:PY=75:DI$="SOBRAM":GOSUB1210:PX=10:PY=110:DI$="RECORDE":GOSUB1210 1530 PSET(28,90),POINTSTEP(0,0):COLOR 1:PRINT#1,Z1$ 1540 COLOR 15:FORI=1TO2:PSET(29+I,90),POINTSTEP(0,0):PRINT#1,USING"##";PT:PSET(29+I,125),POINT(0,0):PRINT#1,USING"##";RE:NEXT 1550 RETURN 1560 SPRITE$(1)=CHR$(255)+STRING$(6,129)+CHR$(255) 1570 PUTSPRITE1,(X,Y),11 1580 RESTORE:KX=11:CY=3:ET=PEEK(4)+256*PEEK(5) 1590 FORV=1TO2:READCP$ 1600 CX=KX:FORRW=0TO7 1610 FORI=1TOLEN(CP$) 1620 AC=ASC(MID$(CP$,I,1)) 1630 IFAC<>1THEN1660 1640 I=I+1 1650 AC=ASC(MID$(CP$,I,1))-64 1660 BT$=BIN$(PEEK(AC*8+ET+RW)) 1670 BT$=RIGHT$("00000000"+BT$,8) 1680 FORJ=1TO8 1690 X$=MID$(BT$,J,1) 1700 'IFX$="1"THENLINE(CX,CY)-(CX+2,CY+4),10,B 1701 IFX$="1"THENCIRCLE(CX,CY),3,11,,,3 1710 CX=CX+2:NEXT:NEXT 1720 CY=CY+4:CX=KX 1730 NEXT:KX=97:CY=3:NEXT 1740 DATA"SOBRA","UM" 1750 COLOR 15:NV=3:PX=48:PY=40:DI$="M S X":GOSUB1210 1760 RETURN 1770 BEEP 1780 SCREEN0,,1 1790 WIDTH38 1800 COLOR 15,1,1 1810 A=USR3(0) 1820 KEYON 1830 END 1840 MU=MU+1 1850 IFMU=11THENINTERVALOFF:RETURN 1860 PLAY"s0m15000"+M$(MU) 1870 RETURN 1880 Z1$=STRING$(3,219) 1890 Z2$=STRING$(12,219) 1900 RE=30 1910 PT=44 1920 X=150:Y=94 1930 X1=0:Y1=0 1940 X2=0:Y2=0 1950 XX=0:YY=0 1960 MU=2 1970 DEFUSR=&H44 1980 DEFUSR1=&H44 1990 DEFUSR2=&H156 2000 DEFUSR3=&H3E 2010 DIMM$(10) 2020 M1$="v14l63o3cego4cv0" 2030 M2$="t110s8m2000l16o4babao5d8d8o4babao5d8d8o4babal8bbar8" 2040 M3$="v13o3b64" 2050 M4$="s8m2000l4t220o5d.e8d8c8o4bggaddbgg" 2060 M$(1)="t120v14o4" 2070 M$(2)="l8g.a16geg.a16ge" 2080 M$(3)="gcabg.r4f." 2090 M$(4)="g16fdeaged" 2100 M$(5)="a16ef#g4r8" 2110 M$(6)="ga4gr64gc4gr8a." 2120 M$(7)="g16cde4r8ed4gr8a." 2130 M$(8)="g16c4de4r8e4d4adc4gr8a." 2140 M$(9)="g16fag4r8ed4adc4gr8a." 2150 M$(10)="g16abc4r4" 2160 PLAYM1$ 2170 RETURN |